]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commitdiff
drbd: Convert timers to use timer_setup()
authorKees Cook <keescook@chromium.org>
Wed, 18 Oct 2017 03:33:01 +0000 (20:33 -0700)
committerKees Cook <keescook@chromium.org>
Mon, 6 Nov 2017 20:49:57 +0000 (12:49 -0800)
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: Philipp Reisner <philipp.reisner@linbit.com>
Cc: Lars Ellenberg <lars.ellenberg@linbit.com>
Cc: drbd-dev@lists.linbit.com
Signed-off-by: Kees Cook <keescook@chromium.org>
drivers/block/drbd/drbd_int.h
drivers/block/drbd/drbd_main.c
drivers/block/drbd/drbd_receiver.c
drivers/block/drbd/drbd_req.c
drivers/block/drbd/drbd_req.h
drivers/block/drbd/drbd_worker.c

index 7e8589ce631c72d9e023abb63cbe5680938c8f49..06ecee1b528ec1b457cc04124d34626eb3477878 100644 (file)
@@ -1551,8 +1551,8 @@ extern int w_restart_disk_io(struct drbd_work *, int);
 extern int w_send_out_of_sync(struct drbd_work *, int);
 extern int w_start_resync(struct drbd_work *, int);
 
-extern void resync_timer_fn(unsigned long data);
-extern void start_resync_timer_fn(unsigned long data);
+extern void resync_timer_fn(struct timer_list *t);
+extern void start_resync_timer_fn(struct timer_list *t);
 
 extern void drbd_endio_write_sec_final(struct drbd_peer_request *peer_req);
 
index 8cb3791898ae935065f5581aec1dec3a46290988..4b4697a1f96386831fc764276545c03ebf18d6eb 100644 (file)
@@ -64,7 +64,7 @@
 static DEFINE_MUTEX(drbd_main_mutex);
 static int drbd_open(struct block_device *bdev, fmode_t mode);
 static void drbd_release(struct gendisk *gd, fmode_t mode);
-static void md_sync_timer_fn(unsigned long data);
+static void md_sync_timer_fn(struct timer_list *t);
 static int w_bitmap_io(struct drbd_work *w, int unused);
 
 MODULE_AUTHOR("Philipp Reisner <phil@linbit.com>, "
@@ -2023,14 +2023,10 @@ void drbd_init_set_defaults(struct drbd_device *device)
        device->unplug_work.cb  = w_send_write_hint;
        device->bm_io_work.w.cb = w_bitmap_io;
 
-       setup_timer(&device->resync_timer, resync_timer_fn,
-                       (unsigned long)device);
-       setup_timer(&device->md_sync_timer, md_sync_timer_fn,
-                       (unsigned long)device);
-       setup_timer(&device->start_resync_timer, start_resync_timer_fn,
-                       (unsigned long)device);
-       setup_timer(&device->request_timer, request_timer_fn,
-                       (unsigned long)device);
+       timer_setup(&device->resync_timer, resync_timer_fn, 0);
+       timer_setup(&device->md_sync_timer, md_sync_timer_fn, 0);
+       timer_setup(&device->start_resync_timer, start_resync_timer_fn, 0);
+       timer_setup(&device->request_timer, request_timer_fn, 0);
 
        init_waitqueue_head(&device->misc_wait);
        init_waitqueue_head(&device->state_wait);
@@ -3721,9 +3717,9 @@ int drbd_md_test_flag(struct drbd_backing_dev *bdev, int flag)
        return (bdev->md.flags & flag) != 0;
 }
 
-static void md_sync_timer_fn(unsigned long data)
+static void md_sync_timer_fn(struct timer_list *t)
 {
-       struct drbd_device *device = (struct drbd_device *) data;
+       struct drbd_device *device = from_timer(device, t, md_sync_timer);
        drbd_device_post_work(device, MD_SYNC);
 }
 
index 796eaf347dc096fb8e56b860c1b530c9cf9da8a2..cb2fa63f6bc057e7038ef3ef7ae9b7c4a2a63711 100644 (file)
@@ -5056,7 +5056,7 @@ static int drbd_disconnected(struct drbd_peer_device *peer_device)
        wake_up(&device->misc_wait);
 
        del_timer_sync(&device->resync_timer);
-       resync_timer_fn((unsigned long)device);
+       resync_timer_fn(&device->resync_timer);
 
        /* wait for all w_e_end_data_req, w_e_end_rsdata_req, w_send_barrier,
         * w_make_resync_request etc. which may still be on the worker queue
index de8566e5533499b6170c669a08c2aa8688e67057..a500e738d9299bb85bb911e4eb7086258f97ca21 100644 (file)
@@ -1714,9 +1714,9 @@ static bool net_timeout_reached(struct drbd_request *net_req,
  * to expire twice (worst case) to become effective. Good enough.
  */
 
-void request_timer_fn(unsigned long data)
+void request_timer_fn(struct timer_list *t)
 {
-       struct drbd_device *device = (struct drbd_device *) data;
+       struct drbd_device *device = from_timer(device, t, request_timer);
        struct drbd_connection *connection = first_peer_device(device)->connection;
        struct drbd_request *req_read, *req_write, *req_peer; /* oldest request */
        struct net_conf *nc;
index a2254f825601890fad999d9f7876b704b4a43c4d..cb97b3b30962b3bfe9cb7b5615e7977a26380d9e 100644 (file)
@@ -294,7 +294,7 @@ extern int __req_mod(struct drbd_request *req, enum drbd_req_event what,
                struct bio_and_error *m);
 extern void complete_master_bio(struct drbd_device *device,
                struct bio_and_error *m);
-extern void request_timer_fn(unsigned long data);
+extern void request_timer_fn(struct timer_list *t);
 extern void tl_restart(struct drbd_connection *connection, enum drbd_req_event what);
 extern void _tl_restart(struct drbd_connection *connection, enum drbd_req_event what);
 extern void tl_abort_disk_io(struct drbd_device *device);
index 03471b3fce86c7660617f7871bf63c78a3f6c585..1476cb3439f46e53a8f42a9397fb6b19afd8ff95 100644 (file)
@@ -457,9 +457,9 @@ int w_resync_timer(struct drbd_work *w, int cancel)
        return 0;
 }
 
-void resync_timer_fn(unsigned long data)
+void resync_timer_fn(struct timer_list *t)
 {
-       struct drbd_device *device = (struct drbd_device *) data;
+       struct drbd_device *device = from_timer(device, t, resync_timer);
 
        drbd_queue_work_if_unqueued(
                &first_peer_device(device)->connection->sender_work,
@@ -1705,9 +1705,9 @@ void drbd_rs_controller_reset(struct drbd_device *device)
        rcu_read_unlock();
 }
 
-void start_resync_timer_fn(unsigned long data)
+void start_resync_timer_fn(struct timer_list *t)
 {
-       struct drbd_device *device = (struct drbd_device *) data;
+       struct drbd_device *device = from_timer(device, t, start_resync_timer);
        drbd_device_post_work(device, RS_START);
 }