kernel_optimize_test/fs/btrfs
Chris Mason d2c3f4f695 Btrfs: Avoid writeback stalls
While building large bios in writepages, btrfs may end up waiting
for other page writeback to finish if WB_SYNC_ALL is used.

While it is waiting, the bio it is building has a number of pages with the
writeback bit set and they aren't getting to the disk any time soon.  This
lowers the latencies of writeback in general by sending down the bio being
built before waiting for other pages.

The bio submission code tries to limit the total number of async bios in
flight by waiting when we're over a certain number of async bios.  But,
the waits are happening while writepages is building bios, and this can easily
lead to stalls and other problems for people calling wait_on_page_writeback.

The current fix is to let the congestion tests take care of waiting.

sync() and others make sure to drain the current async requests to make
sure that everything that was pending when the sync was started really get
to disk.  The code would drain pending requests both before and after
submitting a new request.

But, if one of the requests is waiting for page writeback to finish,
the draining waits might block that page writeback.  This changes the
draining code to only wait after submitting the bio being processed.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-11-19 12:44:22 -05:00
..
acl.c Btrfs: optimize btrget/set/removexattr 2008-09-25 11:04:07 -04:00
async-thread.c Btrfs: Check kthread_should_stop() before schedule() in worker_loop 2008-11-12 14:36:58 -05:00
async-thread.h Btrfs: Add ordered async work queues 2008-11-06 22:03:00 -05:00
btrfs_inode.h Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
compat.h Remove Btrfs compat code for older kernels 2008-09-25 15:41:59 -04:00
compression.c Btrfs: Fix compile warnings on 32 bit machines 2008-11-11 09:34:41 -05:00
compression.h Btrfs: Add zlib compression support 2008-10-29 14:49:59 -04:00
COPYING Btrfs: add GPLv2 2007-06-12 09:07:21 -04:00
crc32c.h Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
ctree.c Btrfs: Some fixes for batching extent insert. 2008-11-18 11:30:10 -05:00
ctree.h Btrfs: Update the disk format for the seed device and new root code 2008-11-18 11:50:33 -05:00
dir-item.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
disk-io.c Btrfs: Avoid writeback stalls 2008-11-19 12:44:22 -05:00
disk-io.h Btrfs: mount ro and remount support 2008-11-12 14:34:12 -05:00
export.c Remove Btrfs compat code for older kernels 2008-09-25 15:41:59 -04:00
export.h NFS support for btrfs - v3 2008-09-25 11:04:06 -04:00
extent_io.c Btrfs: Avoid writeback stalls 2008-11-19 12:44:22 -05:00
extent_io.h Btrfs: Optimize compressed writeback and reads 2008-11-06 22:02:51 -05:00
extent_map.c Btrfs: Add zlib compression support 2008-10-29 14:49:59 -04:00
extent_map.h Btrfs: Fix csum error for compressed data 2008-11-10 07:34:43 -05:00
extent-tree.c Btrfs: Some fixes for batching extent insert. 2008-11-18 11:30:10 -05:00
file-item.c Btrfs: Use invalidatepage when writepage finds a page outside of i_size 2008-11-10 11:50:50 -05:00
file.c Btrfs: Fix race in btrfs_mark_extent_written 2008-11-12 14:19:50 -05:00
free-space-cache.c Btrfs: nuke fs wide allocation mutex V2 2008-10-29 14:49:05 -04:00
hash.h Switch btrfs_name_hash() to crc32c 2008-09-25 11:04:06 -04:00
inode-item.c Btrfs: Implement new dir index format 2008-09-25 11:04:05 -04:00
inode-map.c Btrfs: extent_map and data=ordered fixes for space balancing 2008-09-26 10:05:38 -04:00
inode.c Btrfs: Avoid writeback stalls 2008-11-19 12:44:22 -05:00
INSTALL Btrfs: Documentation update 2007-06-22 14:49:31 -04:00
ioctl.c Btrfs: prevent loops in the directory tree when creating snapshots 2008-11-17 21:14:24 -05:00
ioctl.h Btrfs: Allow subvolumes and snapshots anywhere in the directory tree 2008-11-17 21:02:50 -05:00
locking.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
locking.h btrfs_search_slot: reduce lock contention by cowing in two stages 2008-09-25 11:04:06 -04:00
Makefile Btrfs: Add zlib compression support 2008-10-29 14:49:59 -04:00
ordered-data.c Btrfs: Optimize compressed writeback and reads 2008-11-06 22:02:51 -05:00
ordered-data.h Btrfs: Add fallocate support v2 2008-10-30 14:25:28 -04:00
orphan.c Btrfs: Create orphan inode records to prevent lost files after a crash 2008-09-25 11:04:05 -04:00
print-tree.c Btrfs: Add zlib compression support 2008-10-29 14:49:59 -04:00
print-tree.h Btrfs: Create extent_buffer interface for large blocksizes 2008-09-25 11:03:56 -04:00
ref-cache.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
ref-cache.h Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
root-tree.c Btrfs: prevent loops in the directory tree when creating snapshots 2008-11-17 21:14:24 -05:00
struct-funcs.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
super.c Btrfs: Allow subvolumes and snapshots anywhere in the directory tree 2008-11-17 21:02:50 -05:00
sysfs.c Remove Btrfs compat code for older kernels 2008-09-25 15:41:59 -04:00
transaction.c Btrfs: switch back to wait_on_page_writeback to wait on metadata writes 2008-11-18 12:13:12 -05:00
transaction.h Btrfs: Allow subvolumes and snapshots anywhere in the directory tree 2008-11-17 21:02:50 -05:00
tree-defrag.c Btrfs: nuke fs wide allocation mutex V2 2008-10-29 14:49:05 -04:00
tree-log.c Btrfs: Add fallocate support v2 2008-10-30 14:25:28 -04:00
tree-log.h Btrfs: Add a write ahead tree log to optimize synchronous operations 2008-09-25 11:04:07 -04:00
version.h Update Btrfs files for in-kernel usage 2008-09-25 15:41:59 -04:00
version.sh Btrfs: Update version.sh to v0.16 2008-09-25 11:04:06 -04:00
volumes.c Btrfs: Add a missing return pointer check 2008-11-12 14:38:54 -05:00
volumes.h Btrfs: Seed device support 2008-11-17 21:11:30 -05:00
xattr.c Btrfs: optimize btrget/set/removexattr 2008-09-25 11:04:07 -04:00
xattr.h Btrfs: optimize btrget/set/removexattr 2008-09-25 11:04:07 -04:00
zlib.c Btrfs: Fix compile warnings on 32 bit machines 2008-11-11 09:34:41 -05:00