<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/fs-writeback.c, branch v2.6.35.9</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs/fs-writeback.c?h=v2.6.35.9</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs/fs-writeback.c?h=v2.6.35.9'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2010-07-06T06:59:53Z</updated>
<entry>
<title>writeback: simplify the write back thread queue</title>
<updated>2010-07-06T06:59:53Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2010-07-06T06:59:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=83ba7b071f30f7c01f72518ad72d5cd203c27502'/>
<id>urn:sha1:83ba7b071f30f7c01f72518ad72d5cd203c27502</id>
<content type='text'>
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 &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
<entry>
<title>writeback: split writeback_inodes_wb</title>
<updated>2010-07-06T06:54:08Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2010-06-10T10:07:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=edadfb10ba35da7253541e4155aa92eff758ebe6'/>
<id>urn:sha1:edadfb10ba35da7253541e4155aa92eff758ebe6</id>
<content type='text'>
The case where we have a superblock doesn't require a loop here as we scan
over all inodes in writeback_sb_inodes. Split it out into a separate helper
to make the code simpler.  This also allows to get rid of the sb member in
struct writeback_control, which was rather out of place there.

Also update the comments in writeback_sb_inodes that explain the handling
of inodes from wrong superblocks.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
<entry>
<title>writeback: remove writeback_inodes_wbc</title>
<updated>2010-07-06T06:54:03Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2010-06-10T10:07:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9c3a8ee8a1d72c5c0d7fbdf426d80e270ddfa54c'/>
<id>urn:sha1:9c3a8ee8a1d72c5c0d7fbdf426d80e270ddfa54c</id>
<content type='text'>
This was just an odd wrapper around writeback_inodes_wb.  Removing this
also allows to get rid of the bdi member of struct writeback_control
which was rather out of place there.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
<entry>
<title>fs-writeback: fix kernel-doc warnings</title>
<updated>2010-07-01T06:26:34Z</updated>
<author>
<name>Randy Dunlap</name>
<email>randy.dunlap@oracle.com</email>
</author>
<published>2010-07-01T06:26:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=06d738fa9155ff16dba3d7e501ba4581d01a98cb'/>
<id>urn:sha1:06d738fa9155ff16dba3d7e501ba4581d01a98cb</id>
<content type='text'>
Fix kernel-doc to match the function's changed args.

Warning(fs/fs-writeback.c:190): No description found for parameter 'args'
Warning(fs/fs-writeback.c:190): Excess function parameter 'sb' description in 'bdi_queue_work_onstack'

Signed-off-by: Randy Dunlap &lt;randy.dunlap@oracle.com&gt;
Cc: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
<entry>
<title>writeback: fix pin_sb_for_writeback</title>
<updated>2010-06-11T10:58:08Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2010-06-09T13:31:01Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=29cb48594b873f6193d6327097e504bd3e2314de'/>
<id>urn:sha1:29cb48594b873f6193d6327097e504bd3e2314de</id>
<content type='text'>
We need to check for s_instances to make sure we don't bother working
against a filesystem that is beeing unmounted, and we need to call
put_super to make sure a superblock is freed when we race against
umount.  Also no need to keep sb_lock after we got a reference on it.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
<entry>
<title>writeback: add missing requeue_io in writeback_inodes_wb</title>
<updated>2010-06-11T10:58:08Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2010-06-09T12:28:43Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=334132ae921a14ac2b2ba48e174136f7f2c9aae1'/>
<id>urn:sha1:334132ae921a14ac2b2ba48e174136f7f2c9aae1</id>
<content type='text'>
In "writeback: fix writeback_inodes_wb from writeback_inodes_sb" I
accidentally removed the requeue_io if we need to skip a superblock
because we can't pin it.  Add it back, otherwise we're getting spurious
lockups after multiple xfstests runs.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
<entry>
<title>writeback: simplify and split bdi_start_writeback</title>
<updated>2010-06-11T10:58:08Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2010-06-08T16:15:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c5444198ca210498e8ac0ba121b4cd3537aa12f7'/>
<id>urn:sha1:c5444198ca210498e8ac0ba121b4cd3537aa12f7</id>
<content type='text'>
bdi_start_writeback now never gets a superblock passed, so we can just remove
that case.  And to further untangle the code and flatten the call stack
split it into two trivial helpers for it's two callers.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
<entry>
<title>writeback: simplify wakeup_flusher_threads</title>
<updated>2010-06-11T10:58:07Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2010-06-08T16:15:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b8c2f3474f1077599ec6e90c2f263f17055cc3d8'/>
<id>urn:sha1:b8c2f3474f1077599ec6e90c2f263f17055cc3d8</id>
<content type='text'>
bdi_writeback_all only has one caller, so fold it to simplify the code and
flatten the call stack.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
<entry>
<title>writeback: fix writeback_inodes_wb from writeback_inodes_sb</title>
<updated>2010-06-11T10:58:07Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2010-06-08T16:14:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d19de7edf59cdd586777b009e0e8fbe5412dd35f'/>
<id>urn:sha1:d19de7edf59cdd586777b009e0e8fbe5412dd35f</id>
<content type='text'>
When we call writeback_inodes_wb from writeback_inodes_sb we always have
s_umount held, which currently makes the whole operation a no-op.

But if we are called to write out inodes for a specific superblock we always
have s_umount held, so replace the incorrect logic checking for WB_SYNC_ALL
which only worked by coincidence with the proper check for an explicit
superblock argument.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
<entry>
<title>writeback: enforce s_umount locking in writeback_inodes_sb</title>
<updated>2010-06-11T10:58:07Z</updated>
<author>
<name>Christoph Hellwig</name>
<email>hch@lst.de</email>
</author>
<published>2010-06-08T16:14:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=cf37e972478ec58a8a54a6b4f951815f0ae28f78'/>
<id>urn:sha1:cf37e972478ec58a8a54a6b4f951815f0ae28f78</id>
<content type='text'>
Make sure that not only sync_filesystem but all callers of writeback_inodes_sb
have the superblock protected against remount.  As-is this disables all
functionality for these callers, but the next patch relies on this locking to
fix writeback_inodes_sb for sync_filesystem.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Jens Axboe &lt;jaxboe@fusionio.com&gt;
</content>
</entry>
</feed>
