writeback: fix writeback completion notifications
authorChristoph Hellwig <hch@lst.de>
Tue, 8 Jun 2010 16:14:34 +0000 (18:14 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Fri, 11 Jun 2010 10:58:07 +0000 (12:58 +0200)
commit7f0e7bed936a0c422641a046551829a01341dd80
tree6b5fd4a8e11253819c883e409b612fc26c57235e
parent7908a9e5fc3f9a679b1777ed231a03636c068446
writeback: fix writeback completion notifications

The code dealing with bdi_work->state and completion of a bdi_work is a
major mess currently.  This patch makes sure we directly use one set of
flags to deal with it, and use it consistently, which means:

 - always notify about completion from the rcu callback.  We only ever
   wait for it from on-stack callers, so this simplification does not
   even cause a theoretical slowdown currently.  It also makes sure we
   don't miss out on the notification if we ever add other callers to
   wait for it.
 - make earlier completion notification depending on the on-stack
   allocation, not the sync mode.  If we introduce new callers that
   want to do WB_SYNC_NONE writeback from on-stack callers this will
   be nessecary.

Also rename bdi_wait_on_work_clear to bdi_wait_on_work_done and inline
a few small functions into their only caller to make the code
understandable.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
fs/fs-writeback.c