diff options
author | Tejun Heo <tj@kernel.org> | 2012-08-21 13:18:24 -0700 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2012-08-21 13:18:24 -0700 |
commit | e7c2f967445dd2041f0f8e3179cca22bb8bb7f79 (patch) | |
tree | cb6c1d3593d2497e740d313f55592f41e8ae2039 /block/blk-throttle.c | |
parent | e0aecdd874d78b7129a64b056c20e529e2c916df (diff) | |
download | op-kernel-dev-e7c2f967445dd2041f0f8e3179cca22bb8bb7f79.zip op-kernel-dev-e7c2f967445dd2041f0f8e3179cca22bb8bb7f79.tar.gz |
workqueue: use mod_delayed_work() instead of __cancel + queue
Now that mod_delayed_work() is safe to call from IRQ handlers,
__cancel_delayed_work() followed by queue_delayed_work() can be
replaced with mod_delayed_work().
Most conversions are straight-forward except for the following.
* net/core/link_watch.c: linkwatch_schedule_work() was doing a quite
elaborate dancing around its delayed_work. Collapse it such that
linkwatch_work is queued for immediate execution if LW_URGENT and
existing timer is kept otherwise.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'block/blk-throttle.c')
-rw-r--r-- | block/blk-throttle.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/block/blk-throttle.c b/block/blk-throttle.c index 5a58e77..a9664fa 100644 --- a/block/blk-throttle.c +++ b/block/blk-throttle.c @@ -929,12 +929,7 @@ throtl_schedule_delayed_work(struct throtl_data *td, unsigned long delay) /* schedule work if limits changed even if no bio is queued */ if (total_nr_queued(td) || td->limits_changed) { - /* - * We might have a work scheduled to be executed in future. - * Cancel that and schedule a new one. - */ - __cancel_delayed_work(dwork); - queue_delayed_work(kthrotld_workqueue, dwork, delay); + mod_delayed_work(kthrotld_workqueue, dwork, delay); throtl_log(td, "schedule work. delay=%lu jiffies=%lu", delay, jiffies); } |