• Tejun Heo's avatar
    bdi: make backing_dev_info->wb.dwork canceling stricter · c0ea1c22
    Tejun Heo authored
    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: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    c0ea1c22
backing-dev.c 16.3 KB