linux/fs/btrfs
Chris Mason e6dcd2dc9c Btrfs: New data=ordered implementation
The old data=ordered code would force commit to wait until
all the data extents from the transaction were fully on disk.  This
introduced large latencies into the commit and stalled new writers
in the transaction for a long time.

The new code changes the way data allocations and extents work:

* When delayed allocation is filled, data extents are reserved, and
  the extent bit EXTENT_ORDERED is set on the entire range of the extent.
  A struct btrfs_ordered_extent is allocated an inserted into a per-inode
  rbtree to track the pending extents.

* As each page is written EXTENT_ORDERED is cleared on the bytes corresponding
  to that page.

* When all of the bytes corresponding to a single struct btrfs_ordered_extent
  are written, The previously reserved extent is inserted into the FS
  btree and into the extent allocation trees.  The checksums for the file
  data are also updated.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-09-25 11:04:04 -04:00
..
COPYING Btrfs: add GPLv2 2007-06-12 09:07:21 -04:00
INSTALL Btrfs: Documentation update 2007-06-22 14:49:31 -04:00
Makefile Btrfs: Start btree concurrency work. 2008-09-25 11:04:03 -04:00
TODO Btrfs: add GPLv2 2007-06-12 09:07:21 -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: Worker thread optimizations 2008-09-25 11:04:03 -04:00
async-thread.h Btrfs: Worker thread optimizations 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: New data=ordered implementation 2008-09-25 11:04:04 -04:00
compat.h Btrfs: Add workaround for AppArmor changing remove_suid() 2008-09-25 11:04:02 -04:00
crc32c.h Btrfs: Endianess bug fix for v0.13 with kernels 2008-09-25 11:04:01 -04:00
ctree.c Btrfs: Add locking around volume management (device add/remove/balance) 2008-09-25 11:04:04 -04:00
ctree.h Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
dir-item.c Btrfs: unaligned access fixes 2008-09-25 11:04:00 -04:00
disk-io.c Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
disk-io.h Btrfs: Online btree defragmentation fixes 2008-09-25 11:04:04 -04:00
extent-tree.c Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
extent_io.c Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
extent_io.h Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
extent_map.c Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
extent_map.h Btrfs: Split the extent_map code into two parts 2008-09-25 11:03:59 -04:00
file-item.c Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
file.c Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -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 Btrfs: Replace the big fs_mutex with a collection of other locks 2008-09-25 11:04:03 -04:00
inode.c Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
ioctl.c Btrfs: Add locking around volume management (device add/remove/balance) 2008-09-25 11:04:04 -04:00
ioctl.h Btrfs: transaction ioctls 2008-09-25 11:04:03 -04:00
locking.c Btrfs: Reduce contention on the root node 2008-09-25 11:04:04 -04:00
locking.h Btrfs: Start btree concurrency work. 2008-09-25 11:04:03 -04:00
ordered-data.c Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
ordered-data.h Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -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: Fix deadlock while searching for dead roots on mount 2008-09-25 11:04:04 -04:00
struct-funcs.c Btrfs: unaligned access fixes 2008-09-25 11:04:00 -04:00
super.c Btrfs: Online btree defragmentation fixes 2008-09-25 11:04:04 -04:00
sysfs.c Btrfs: Disable sysfs files on older kernels 2008-09-25 11:04:00 -04:00
transaction.c Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
transaction.h Btrfs: New data=ordered implementation 2008-09-25 11:04:04 -04:00
tree-defrag.c Btrfs: Online btree defragmentation fixes 2008-09-25 11:04:04 -04:00
volumes.c Btrfs: Add locking around volume management (device add/remove/balance) 2008-09-25 11:04:04 -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: Replace the big fs_mutex with a collection of other locks 2008-09-25 11:04:03 -04:00
xattr.h xattr support for btrfs 2008-09-25 11:03:57 -04:00