aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKees Cook <keescook@chromium.org>2017-10-17 23:33:01 -0400
committerKees Cook <keescook@chromium.org>2017-11-06 15:49:57 -0500
commit2bccef39c0d94b9ee428ae777c59cef1fced786c (patch)
tree83a1cf9ca1d307290c9e7c45cab12b27a22e4ed2
parentc6f15047dd8681f1a6387b044188ef028306c4bf (diff)
drbd: 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: 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>
-rw-r--r--drivers/block/drbd/drbd_int.h4
-rw-r--r--drivers/block/drbd/drbd_main.c18
-rw-r--r--drivers/block/drbd/drbd_receiver.c2
-rw-r--r--drivers/block/drbd/drbd_req.c4
-rw-r--r--drivers/block/drbd/drbd_req.h2
-rw-r--r--drivers/block/drbd/drbd_worker.c8
6 files changed, 17 insertions, 21 deletions
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
index 7e8589ce631c..06ecee1b528e 100644
--- a/drivers/block/drbd/drbd_int.h
+++ b/drivers/block/drbd/drbd_int.h
@@ -1551,8 +1551,8 @@ extern int w_restart_disk_io(struct drbd_work *, int);
1551extern int w_send_out_of_sync(struct drbd_work *, int); 1551extern int w_send_out_of_sync(struct drbd_work *, int);
1552extern int w_start_resync(struct drbd_work *, int); 1552extern int w_start_resync(struct drbd_work *, int);
1553 1553
1554extern void resync_timer_fn(unsigned long data); 1554extern void resync_timer_fn(struct timer_list *t);
1555extern void start_resync_timer_fn(unsigned long data); 1555extern void start_resync_timer_fn(struct timer_list *t);
1556 1556
1557extern void drbd_endio_write_sec_final(struct drbd_peer_request *peer_req); 1557extern void drbd_endio_write_sec_final(struct drbd_peer_request *peer_req);
1558 1558
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
index 8cb3791898ae..4b4697a1f963 100644
--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -64,7 +64,7 @@
64static DEFINE_MUTEX(drbd_main_mutex); 64static DEFINE_MUTEX(drbd_main_mutex);
65static int drbd_open(struct block_device *bdev, fmode_t mode); 65static int drbd_open(struct block_device *bdev, fmode_t mode);
66static void drbd_release(struct gendisk *gd, fmode_t mode); 66static void drbd_release(struct gendisk *gd, fmode_t mode);
67static void md_sync_timer_fn(unsigned long data); 67static void md_sync_timer_fn(struct timer_list *t);
68static int w_bitmap_io(struct drbd_work *w, int unused); 68static int w_bitmap_io(struct drbd_work *w, int unused);
69 69
70MODULE_AUTHOR("Philipp Reisner <phil@linbit.com>, " 70MODULE_AUTHOR("Philipp Reisner <phil@linbit.com>, "
@@ -2023,14 +2023,10 @@ void drbd_init_set_defaults(struct drbd_device *device)
2023 device->unplug_work.cb = w_send_write_hint; 2023 device->unplug_work.cb = w_send_write_hint;
2024 device->bm_io_work.w.cb = w_bitmap_io; 2024 device->bm_io_work.w.cb = w_bitmap_io;
2025 2025
2026 setup_timer(&device->resync_timer, resync_timer_fn, 2026 timer_setup(&device->resync_timer, resync_timer_fn, 0);
2027 (unsigned long)device); 2027 timer_setup(&device->md_sync_timer, md_sync_timer_fn, 0);
2028 setup_timer(&device->md_sync_timer, md_sync_timer_fn, 2028 timer_setup(&device->start_resync_timer, start_resync_timer_fn, 0);
2029 (unsigned long)device); 2029 timer_setup(&device->request_timer, request_timer_fn, 0);
2030 setup_timer(&device->start_resync_timer, start_resync_timer_fn,
2031 (unsigned long)device);
2032 setup_timer(&device->request_timer, request_timer_fn,
2033 (unsigned long)device);
2034 2030
2035 init_waitqueue_head(&device->misc_wait); 2031 init_waitqueue_head(&device->misc_wait);
2036 init_waitqueue_head(&device->state_wait); 2032 init_waitqueue_head(&device->state_wait);
@@ -3721,9 +3717,9 @@ int drbd_md_test_flag(struct drbd_backing_dev *bdev, int flag)
3721 return (bdev->md.flags & flag) != 0; 3717 return (bdev->md.flags & flag) != 0;
3722} 3718}
3723 3719
3724static void md_sync_timer_fn(unsigned long data) 3720static void md_sync_timer_fn(struct timer_list *t)
3725{ 3721{
3726 struct drbd_device *device = (struct drbd_device *) data; 3722 struct drbd_device *device = from_timer(device, t, md_sync_timer);
3727 drbd_device_post_work(device, MD_SYNC); 3723 drbd_device_post_work(device, MD_SYNC);
3728} 3724}
3729 3725
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index 796eaf347dc0..cb2fa63f6bc0 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -5056,7 +5056,7 @@ static int drbd_disconnected(struct drbd_peer_device *peer_device)
5056 wake_up(&device->misc_wait); 5056 wake_up(&device->misc_wait);
5057 5057
5058 del_timer_sync(&device->resync_timer); 5058 del_timer_sync(&device->resync_timer);
5059 resync_timer_fn((unsigned long)device); 5059 resync_timer_fn(&device->resync_timer);
5060 5060
5061 /* wait for all w_e_end_data_req, w_e_end_rsdata_req, w_send_barrier, 5061 /* wait for all w_e_end_data_req, w_e_end_rsdata_req, w_send_barrier,
5062 * w_make_resync_request etc. which may still be on the worker queue 5062 * w_make_resync_request etc. which may still be on the worker queue
diff --git a/drivers/block/drbd/drbd_req.c b/drivers/block/drbd/drbd_req.c
index de8566e55334..a500e738d929 100644
--- a/drivers/block/drbd/drbd_req.c
+++ b/drivers/block/drbd/drbd_req.c
@@ -1714,9 +1714,9 @@ static bool net_timeout_reached(struct drbd_request *net_req,
1714 * to expire twice (worst case) to become effective. Good enough. 1714 * to expire twice (worst case) to become effective. Good enough.
1715 */ 1715 */
1716 1716
1717void request_timer_fn(unsigned long data) 1717void request_timer_fn(struct timer_list *t)
1718{ 1718{
1719 struct drbd_device *device = (struct drbd_device *) data; 1719 struct drbd_device *device = from_timer(device, t, request_timer);
1720 struct drbd_connection *connection = first_peer_device(device)->connection; 1720 struct drbd_connection *connection = first_peer_device(device)->connection;
1721 struct drbd_request *req_read, *req_write, *req_peer; /* oldest request */ 1721 struct drbd_request *req_read, *req_write, *req_peer; /* oldest request */
1722 struct net_conf *nc; 1722 struct net_conf *nc;
diff --git a/drivers/block/drbd/drbd_req.h b/drivers/block/drbd/drbd_req.h
index a2254f825601..cb97b3b30962 100644
--- a/drivers/block/drbd/drbd_req.h
+++ b/drivers/block/drbd/drbd_req.h
@@ -294,7 +294,7 @@ extern int __req_mod(struct drbd_request *req, enum drbd_req_event what,
294 struct bio_and_error *m); 294 struct bio_and_error *m);
295extern void complete_master_bio(struct drbd_device *device, 295extern void complete_master_bio(struct drbd_device *device,
296 struct bio_and_error *m); 296 struct bio_and_error *m);
297extern void request_timer_fn(unsigned long data); 297extern void request_timer_fn(struct timer_list *t);
298extern void tl_restart(struct drbd_connection *connection, enum drbd_req_event what); 298extern void tl_restart(struct drbd_connection *connection, enum drbd_req_event what);
299extern void _tl_restart(struct drbd_connection *connection, enum drbd_req_event what); 299extern void _tl_restart(struct drbd_connection *connection, enum drbd_req_event what);
300extern void tl_abort_disk_io(struct drbd_device *device); 300extern void tl_abort_disk_io(struct drbd_device *device);
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
index 03471b3fce86..1476cb3439f4 100644
--- a/drivers/block/drbd/drbd_worker.c
+++ b/drivers/block/drbd/drbd_worker.c
@@ -457,9 +457,9 @@ int w_resync_timer(struct drbd_work *w, int cancel)
457 return 0; 457 return 0;
458} 458}
459 459
460void resync_timer_fn(unsigned long data) 460void resync_timer_fn(struct timer_list *t)
461{ 461{
462 struct drbd_device *device = (struct drbd_device *) data; 462 struct drbd_device *device = from_timer(device, t, resync_timer);
463 463
464 drbd_queue_work_if_unqueued( 464 drbd_queue_work_if_unqueued(
465 &first_peer_device(device)->connection->sender_work, 465 &first_peer_device(device)->connection->sender_work,
@@ -1705,9 +1705,9 @@ void drbd_rs_controller_reset(struct drbd_device *device)
1705 rcu_read_unlock(); 1705 rcu_read_unlock();
1706} 1706}
1707 1707
1708void start_resync_timer_fn(unsigned long data) 1708void start_resync_timer_fn(struct timer_list *t)
1709{ 1709{
1710 struct drbd_device *device = (struct drbd_device *) data; 1710 struct drbd_device *device = from_timer(device, t, start_resync_timer);
1711 drbd_device_post_work(device, RS_START); 1711 drbd_device_post_work(device, RS_START);
1712} 1712}
1713 1713