linux/fs/btrfs
Josef Bacik 3173a18f70 Btrfs: add a incompatible format change for smaller metadata extent refs
We currently store the first key of the tree block inside the reference for the
tree block in the extent tree.  This takes up quite a bit of space.  Make a new
key type for metadata which holds the level as the offset and completely removes
storing the btrfs_tree_block_info inside the extent ref.  This reduces the size
from 51 bytes to 33 bytes per extent reference for each tree block.  In practice
this results in a 30-35% decrease in the size of our extent tree, which means we
COW less and can keep more of the extent tree in memory which makes our heavy
metadata operations go much faster.  This is not an automatic format change, you
must enable it at mkfs time or with btrfstune.  This patch deals with having
metadata stored as either the old format or the new format so it is easy to
convert.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
2013-05-06 15:54:18 -04:00
..
acl.c
async-thread.c
async-thread.h
backref.c Btrfs: fix backref walking race with tree deletions 2013-02-26 11:00:50 -05:00
backref.h Btrfs: move fs/btrfs/ioctl.h to include/uapi/linux/btrfs.h 2013-02-20 09:37:28 -05:00
btrfs_inode.h Btrfs: serialize unlocked dio reads with truncate 2013-02-20 12:59:47 -05:00
check-integrity.c btrfs: define BTRFS_MAGIC as a u64 value 2013-02-20 13:00:01 -05:00
check-integrity.h
compat.h
compression.c Btrfs: cleanup unused arguments of btrfs_csum_data 2013-05-06 15:54:14 -04:00
compression.h
ctree.c Btrfs: add a incompatible format change for smaller metadata extent refs 2013-05-06 15:54:18 -04:00
ctree.h Btrfs: add a incompatible format change for smaller metadata extent refs 2013-05-06 15:54:18 -04:00
delayed-inode.c Btrfs: improve the delayed inode throttling 2013-03-07 07:52:40 -05:00
delayed-inode.h Btrfs: improve the delayed inode throttling 2013-03-07 07:52:40 -05:00
delayed-ref.c Btrfs: make delayed ref lock logic more readable 2013-02-20 09:36:41 -05:00
delayed-ref.h Merge branch 'raid56-experimental' into for-linus-3.9 2013-02-20 14:06:05 -05:00
dev-replace.c Btrfs: check the return value of btrfs_start_delalloc_inodes() 2013-02-20 09:37:21 -05:00
dev-replace.h
dir-item.c Btrfs: fix hash overflow handling 2012-12-17 14:48:21 -05:00
disk-io.c Btrfs: add a incompatible format change for smaller metadata extent refs 2013-05-06 15:54:18 -04:00
disk-io.h Btrfs: cleanup unused arguments of btrfs_csum_data 2013-05-06 15:54:14 -04:00
export.c fs: encode_fh: return FILEID_INVALID if invalid fid_type 2013-02-26 02:46:10 -05:00
export.h
extent-tree.c Btrfs: add a incompatible format change for smaller metadata extent refs 2013-05-06 15:54:18 -04:00
extent_io.c Btrfs: fix race between mmap writes and compression 2013-03-26 13:19:14 -04:00
extent_io.h Btrfs: fix race between mmap writes and compression 2013-03-26 13:19:14 -04:00
extent_map.c btrfs: fixup/remove module.h usage as required 2013-03-01 15:01:01 -05:00
extent_map.h Btrfs: do not allow logged extents to be merged or removed 2013-01-24 12:49:48 -05:00
file-item.c Btrfs: cleanup unused arguments of btrfs_csum_data 2013-05-06 15:54:14 -04:00
file.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2013-03-29 11:13:25 -07:00
free-space-cache.c Btrfs: cleanup unused arguments of btrfs_csum_data 2013-05-06 15:54:14 -04:00
free-space-cache.h Btrfs: add some free space cache tests 2013-05-06 15:52:54 -04:00
hash.h
inode-item.c
inode-map.c
inode-map.h
inode.c Btrfs: add a incompatible format change for smaller metadata extent refs 2013-05-06 15:54:18 -04:00
ioctl.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2013-03-08 17:33:20 -08:00
Kconfig Btrfs: add some free space cache tests 2013-05-06 15:52:54 -04:00
locking.c Btrfs: save us a read_lock 2013-02-20 09:37:17 -05:00
locking.h Btrfs: remove btrfs_try_spin_lock 2013-03-14 14:57:10 -04:00
lzo.c
Makefile Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
math.h
ordered-data.c Btrfs: hold the ordered operations mutex when waiting on ordered extents 2013-03-28 09:51:28 -04:00
ordered-data.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/josef/btrfs-next into for-linus-3.9 2013-02-20 14:05:45 -05:00
orphan.c
print-tree.c btrfs: add missing break in btrfs_print_leaf() 2013-02-20 12:59:20 -05:00
print-tree.h
qgroup.c Btrfs: fix double free in the btrfs_qgroup_account_ref() 2013-03-28 09:51:29 -04:00
raid56.c btrfs/raid56: Add missing #include <linux/vmalloc.h> 2013-03-03 06:53:41 -05:00
raid56.h Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
rcu-string.h
reada.c
relocation.c Btrfs: add a incompatible format change for smaller metadata extent refs 2013-05-06 15:54:18 -04:00
root-tree.c Btrfs: rename root_times_lock to root_item_lock 2012-12-16 20:46:21 -05:00
scrub.c Btrfs: add a incompatible format change for smaller metadata extent refs 2013-05-06 15:54:18 -04:00
send.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2013-03-29 11:13:25 -07:00
send.h btrfs: add "no file data" flag to btrfs send ioctl 2013-02-20 12:59:39 -05:00
struct-funcs.c
super.c btrfs: clean up transaction abort messages 2013-05-06 15:52:56 -04:00
sysfs.c btrfs: fixup/remove module.h usage as required 2013-03-01 15:01:01 -05:00
transaction.c btrfs: clean up transaction abort messages 2013-05-06 15:52:56 -04:00
transaction.h Btrfs: fix wrong reserved space in qgroup during snap/subv creation 2013-02-28 13:33:54 -05:00
tree-defrag.c btrfs: remove cache only arguments from defrag path 2013-02-20 12:59:36 -05:00
tree-log.c Btrfs: make sure nbytes are right after log replay 2013-04-13 07:35:06 -04:00
tree-log.h
ulist.c btrfs: fixup/remove module.h usage as required 2013-03-01 15:01:01 -05:00
ulist.h
version.h
volumes.c Btrfs: handle a bogus chunk tree nicely 2013-03-21 19:24:31 -04:00
volumes.h Merge branch 'raid56-experimental' into for-linus-3.9 2013-02-20 14:06:05 -05:00
xattr.c Btrfs: only log the inode item if we can get away with it 2012-12-16 20:46:21 -05:00
xattr.h
zlib.c