linux/fs/btrfs
Chris Mason 8b71284292 Btrfs: Add async worker threads for pre and post IO checksumming
Btrfs has been using workqueues to spread the checksumming load across
other CPUs in the system.  But, workqueues only schedule work on the
same CPU that queued the work, giving them a limited benefit for systems with
higher CPU counts.

This code adds a generic facility to schedule work with pools of kthreads,
and changes the bio submission code to queue bios up.  The queueing is
important to make sure large numbers of procs on the system don't
turn streaming workloads into random workloads by sending IO down
concurrently.

The end result of all of this is much higher performance (and CPU usage) when
doing checksumming on large machines.  Two worker pools are created,
one for writes and one for endio processing.  The two could deadlock if
we tried to service both from a single pool.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:03 -04:00
..
acl.c Btrfs: Include sched.h in the acl code for current (fixes compile on 2.6.23) 2008-09-25 11:03:59 -04:00
async-thread.c Btrfs: Add async worker threads for pre and post IO checksumming 2008-09-25 11:04:03 -04:00
async-thread.h Btrfs: Add async worker threads for pre and post IO checksumming 2008-09-25 11:04:03 -04:00
bit-radix.c Btrfs: trivial include fixups 2007-07-11 10:00:37 -04:00
bit-radix.h Btrfs: add GPLv2 2007-06-12 09:07:21 -04:00
btrfs_inode.h Btrfs: Throttle file_write when data=ordered is flushing the inode 2008-09-25 11:04:02 -04:00
compat.h Btrfs: Add workaround for AppArmor changing remove_suid() 2008-09-25 11:04:02 -04:00
COPYING Btrfs: add GPLv2 2007-06-12 09:07:21 -04:00
crc32c.h Btrfs: Endianess bug fix for v0.13 with kernels 2008-09-25 11:04:01 -04:00
ctree.c Btrfs: Allocator fix variety pack 2008-09-25 11:04:03 -04:00
ctree.h Btrfs: Add async worker threads for pre and post IO checksumming 2008-09-25 11:04:03 -04:00
dir-item.c Btrfs: unaligned access fixes 2008-09-25 11:04:00 -04:00
disk-io.c Btrfs: Add async worker threads for pre and post IO checksumming 2008-09-25 11:04:03 -04:00
disk-io.h Btrfs: Add mount -o degraded to allow mounts to continue with missing devices 2008-09-25 11:04:03 -04:00
extent_io.c Fix corners in writepage and btrfs_truncate_page 2008-09-25 11:04:03 -04:00
extent_io.h Btrfs: Handle write errors on raid1 and raid10 2008-09-25 11:04:03 -04:00
extent_map.c btrfs: fix strange indentation in lookup_extent_mapping 2008-09-25 11:04:03 -04:00
extent_map.h Btrfs: Split the extent_map code into two parts 2008-09-25 11:03:59 -04:00
extent-tree.c Btrfs: Allocator fix variety pack 2008-09-25 11:04:03 -04:00
file-item.c Btrfs: Clone file data ioctl 2008-09-25 11:04:02 -04:00
file.c Btrfs: transaction ioctls 2008-09-25 11:04:03 -04:00
hash.c btrfs-progs: Stop stomping on 'name' input parameter 2008-09-25 11:04:01 -04:00
hash.h Btrfs: unaligned access fixes 2008-09-25 11:04:00 -04:00
inode-item.c Btrfs: Add back pointers from the inode to the directory that references it 2008-09-25 11:03:58 -04:00
inode-map.c Fix for btrfs_find_free_objectid 2008-09-25 11:03:59 -04:00
inode.c Btrfs: Add async worker threads for pre and post IO checksumming 2008-09-25 11:04:03 -04:00
INSTALL Btrfs: Documentation update 2007-06-22 14:49:31 -04:00
ioctl.h Btrfs: transaction ioctls 2008-09-25 11:04:03 -04:00
Makefile Btrfs: Add async worker threads for pre and post IO checksumming 2008-09-25 11:04:03 -04:00
ordered-data.c btrfs delete ordered inode handling fix 2008-09-25 11:04:03 -04:00
ordered-data.h btrfs delete ordered inode handling fix 2008-09-25 11:04:03 -04:00
print-tree.c Btrfs: Pass down the expected generation number when reading tree blocks 2008-09-25 11:04:03 -04:00
print-tree.h Btrfs: Create extent_buffer interface for large blocksizes 2008-09-25 11:03:56 -04:00
root-tree.c Btrfs: Properly find the root for snapshotted blocks during chunk relocation 2008-09-25 11:04:02 -04:00
struct-funcs.c Btrfs: unaligned access fixes 2008-09-25 11:04:00 -04:00
super.c btrfs: allow scanning multiple devices during mount 2008-09-25 11:04:03 -04:00
sysfs.c Btrfs: Disable sysfs files on older kernels 2008-09-25 11:04:00 -04:00
TODO Btrfs: add GPLv2 2007-06-12 09:07:21 -04:00
transaction.c Btrfs: Invalidate dcache entry after creating snapshot and 2008-09-25 11:04:03 -04:00
transaction.h Btrfs: Split the extent_map code into two parts 2008-09-25 11:03:59 -04:00
tree-defrag.c Btrfs: Allocator fix variety pack 2008-09-25 11:04:03 -04:00
volumes.c Btrfs: Add async worker threads for pre and post IO checksumming 2008-09-25 11:04:03 -04:00
volumes.h Btrfs: Add async worker threads for pre and post IO checksumming 2008-09-25 11:04:03 -04:00
xattr.c Btrfs: Dislable acl xattr handlers 2008-09-25 11:04:03 -04:00
xattr.h xattr support for btrfs 2008-09-25 11:03:57 -04:00