bdi: make backing_dev_info->wb.dwork canceling stricter
authorTejun Heo <tj@kernel.org>
Sun, 7 Sep 2014 23:03:59 +0000 (08:03 +0900)
committerJens Axboe <axboe@fb.com>
Mon, 8 Sep 2014 16:00:39 +0000 (10:00 -0600)
commitc0ea1c22bce63a27b47da90ad1ac49ce48e1a8aa
tree5a5fe4a6b86c4208afb3b812426dfb34f54ae75a
parentb68757341d8015d28e261990deea58dd836e04da
bdi: make backing_dev_info->wb.dwork canceling stricter

Canceling of bdi->wb.dwork is currently a bit mushy.
bdi_wb_shutdown() performs cancel_delayed_work_sync() at the end after
shutting down and flushing the delayed_work and bdi_destroy() tries
yet again after bdi_unregister().

bdi->wb.dwork is queued only after checking BDI_registered while
holding bdi->wb_lock and bdi_wb_shutdown() clears the flag while
holding the same lock and then flushes the delayed_work.  There's no
way the delayed_work can be queued again after that.

Replace the two unnecessary cancel_delayed_work_sync() invocations
with WARNs on pending.  This simplifies and clarifies the code a bit
and will help future changes in further isolating bdi_writeback
handling.

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <axboe@fb.com>
mm/backing-dev.c