writeback: simplify the write back thread queue
authorChristoph Hellwig <hch@lst.de>
Tue, 6 Jul 2010 06:59:53 +0000 (08:59 +0200)
committerJens Axboe <jaxboe@fusionio.com>
Tue, 6 Jul 2010 06:59:53 +0000 (08:59 +0200)
commit83ba7b071f30f7c01f72518ad72d5cd203c27502
tree4737320dcce72cfff4d87d835e4f78428eca7ef5
parentedadfb10ba35da7253541e4155aa92eff758ebe6
writeback: simplify the write back thread queue

First remove items from work_list as soon as we start working on them.  This
means we don't have to track any pending or visited state and can get
rid of all the RCU magic freeing the work items - we can simply free
them once the operation has finished.  Second use a real completion for
tracking synchronous requests - if the caller sets the completion pointer
we complete it, otherwise use it as a boolean indicator that we can free
the work item directly.  Third unify struct wb_writeback_args and struct
bdi_work into a single data structure, wb_writeback_work.  Previous we
set all parameters into a struct wb_writeback_args, copied it into
struct bdi_work, copied it again on the stack to use it there.  Instead
of just allocate one structure dynamically or on the stack and use it
all the way through the stack.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
fs/fs-writeback.c
include/linux/backing-dev.h
mm/backing-dev.c