Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

block/laptop_mode: Convert timers to use timer_setup()

In preparation for unconditionally passing the struct timer_list pointer to
all timer callbacks, switch to using the new timer_setup() and from_timer()
to pass the timer pointer explicitly.

Cc: Jens Axboe <axboe@kernel.dk>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Jan Kara <jack@suse.cz>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Vladimir Davydov <vdavydov.dev@gmail.com>
Cc: Matthew Wilcox <mawilcox@microsoft.com>
Cc: Jeff Layton <jlayton@redhat.com>
Cc: linux-block@vger.kernel.org
Cc: linux-mm@kvack.org
Signed-off-by: Kees Cook <keescook@chromium.org>

+10 -9
+5 -5
block/blk-core.c
··· 863 863 wake_up_all(&q->mq_freeze_wq); 864 864 } 865 865 866 - static void blk_rq_timed_out_timer(unsigned long data) 866 + static void blk_rq_timed_out_timer(struct timer_list *t) 867 867 { 868 - struct request_queue *q = (struct request_queue *)data; 868 + struct request_queue *q = from_timer(q, t, timeout); 869 869 870 870 kblockd_schedule_work(&q->timeout_work); 871 871 } ··· 901 901 q->backing_dev_info->name = "block"; 902 902 q->node = node_id; 903 903 904 - setup_timer(&q->backing_dev_info->laptop_mode_wb_timer, 905 - laptop_mode_timer_fn, (unsigned long) q); 906 - setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q); 904 + timer_setup(&q->backing_dev_info->laptop_mode_wb_timer, 905 + laptop_mode_timer_fn, 0); 906 + timer_setup(&q->timeout, blk_rq_timed_out_timer, 0); 907 907 INIT_WORK(&q->timeout_work, NULL); 908 908 INIT_LIST_HEAD(&q->queue_head); 909 909 INIT_LIST_HEAD(&q->timeout_list);
+1 -1
include/linux/writeback.h
··· 308 308 void laptop_io_completion(struct backing_dev_info *info); 309 309 void laptop_sync_completion(void); 310 310 void laptop_mode_sync(struct work_struct *work); 311 - void laptop_mode_timer_fn(unsigned long data); 311 + void laptop_mode_timer_fn(struct timer_list *t); 312 312 #else 313 313 static inline void laptop_sync_completion(void) { } 314 314 #endif
+4 -3
mm/page-writeback.c
··· 1993 1993 } 1994 1994 1995 1995 #ifdef CONFIG_BLOCK 1996 - void laptop_mode_timer_fn(unsigned long data) 1996 + void laptop_mode_timer_fn(struct timer_list *t) 1997 1997 { 1998 - struct request_queue *q = (struct request_queue *)data; 1998 + struct backing_dev_info *backing_dev_info = 1999 + from_timer(backing_dev_info, t, laptop_mode_wb_timer); 1999 2000 2000 - wakeup_flusher_threads_bdi(q->backing_dev_info, WB_REASON_LAPTOP_TIMER); 2001 + wakeup_flusher_threads_bdi(backing_dev_info, WB_REASON_LAPTOP_TIMER); 2001 2002 } 2002 2003 2003 2004 /*