linux/fs/btrfs
Chris Mason 323ac95bce Btrfs: don't read leaf blocks containing only checksums during truncate
Checksum items take up a significant portion of the metadata for large files.
It is possible to avoid reading them during truncates by checking the keys in
the higher level nodes.

If a given leaf is followed by another leaf where the lowest key is a checksum
item from the same file, we know we can safely delete the leaf without
reading it.

For a 32GB file on a 6 drive raid0 array, Btrfs needs 8s to delete
the file with a cold cache.  It is read bound during the run.

With this change, Btrfs is able to delete the file in 0.5s

Signed-off-by: Chris Mason <chris.mason@oracle.com>
2008-10-01 19:05:46 -04:00
..
acl.c Btrfs: optimize btrget/set/removexattr 2008-09-25 11:04:07 -04:00
async-thread.c Btrfs: fix multi-device code to use raid policies set by mkfs 2008-09-30 19:36:34 -04:00
async-thread.h Btrfs: add and improve comments 2008-09-29 15:18:18 -04: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
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: don't read leaf blocks containing only checksums during truncate 2008-10-01 19:05:46 -04:00
ctree.h Btrfs: don't read leaf blocks containing only checksums during truncate 2008-10-01 19:05:46 -04:00
dir-item.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
disk-io.c Btrfs: disk-io.c (open_ctree): avoid leaks upon allocation failure 2008-10-01 19:09:51 -04:00
disk-io.h Btrfs: Tree logging fixes 2008-09-25 11:04:07 -04: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: add and improve comments 2008-09-29 15:18:18 -04:00
extent_io.h Btrfs: extent_map and data=ordered fixes for space balancing 2008-09-26 10:05:38 -04:00
extent_map.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
extent_map.h Btrfs: Fix some data=ordered related data corruptions 2008-09-25 11:04:05 -04:00
extent-tree.c Btrfs: fix deadlock between alloc_mutex/chunk_mutex 2008-10-01 19:11:18 -04:00
file-item.c Btrfs: Fix variable init during csum creation 2008-09-25 11:04:07 -04:00
file.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
free-space-cache.c Btrfs: Fix allocation completions in tree log replay 2008-09-25 15:41:59 -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: don't read leaf blocks containing only checksums during truncate 2008-10-01 19:05:46 -04:00
INSTALL Btrfs: Documentation update 2007-06-22 14:49:31 -04:00
ioctl.c Btrfs: extent_map and data=ordered fixes for space balancing 2008-09-26 10:05:38 -04:00
ioctl.h Btrfs: transaction ioctls 2008-09-25 11:04:03 -04: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 and improve comments 2008-09-29 15:18:18 -04:00
ordered-data.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
ordered-data.h Btrfs: Fix nodatacow for the new data=ordered mode 2008-09-25 11:04:06 -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: Full back reference support 2008-09-25 11:04:07 -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: add and improve comments 2008-09-29 15:18:18 -04:00
struct-funcs.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
super.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
sysfs.c Remove Btrfs compat code for older kernels 2008-09-25 15:41:59 -04:00
transaction.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
transaction.h Btrfs: Record dirty pages tree-log pages in an extent_io tree 2008-09-25 11:04:07 -04:00
tree-defrag.c Btrfs: add and improve comments 2008-09-29 15:18:18 -04:00
tree-log.c Btrfs: Full back reference support 2008-09-25 11:04:07 -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: Wait for IO on the block device inodes of newly added devices 2008-09-29 11:19:10 -04:00
volumes.h Btrfs: Fix the multi-bio code to save the original bio for completion 2008-09-25 11:04:06 -04: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