linux/fs/btrfs
David Woodhouse 53b381b3ab Btrfs: RAID5 and RAID6
This builds on David Woodhouse's original Btrfs raid5/6 implementation.
The code has changed quite a bit, blame Chris Mason for any bugs.

Read/modify/write is done after the higher levels of the filesystem have
prepared a given bio.  This means the higher layers are not responsible
for building full stripes, and they don't need to query for the topology
of the extents that may get allocated during delayed allocation runs.
It also means different files can easily share the same stripe.

But, it does expose us to incorrect parity if we crash or lose power
while doing a read/modify/write cycle.  This will be addressed in a
later commit.

Scrub is unable to repair crc errors on raid5/6 chunks.

Discard does not work on raid5/6 (yet)

The stripe size is fixed at 64KiB per disk.  This will be tunable
in a later commit.

Signed-off-by: Chris Mason <chris.mason@fusionio.com>
2013-02-01 14:24:23 -05:00
..
acl.c Btrfs: skip adding an acl attribute if we don't have to 2012-12-16 20:46:15 -05:00
async-thread.c Btrfs: call the ordered free operation without any locks held 2012-07-25 16:15:07 -04:00
async-thread.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
backref.c Btrfs: merge inode_list in __merge_refs 2012-12-12 17:15:27 -05:00
backref.h Btrfs: extended inode refs support for send mechanism 2012-10-25 15:45:16 -04:00
btrfs_inode.h Btrfs: inline csums if we're fsyncing 2012-12-16 20:46:22 -05:00
check-integrity.c Btrfs: fix race in check-integrity caused by usage of bitfield 2012-12-16 20:46:13 -05:00
check-integrity.h Btrfs: add optional integrity check code 2011-12-21 19:14:09 +01:00
compat.h
compression.c Btrfs: add rw argument to merge_bio_hook() 2013-02-01 11:49:47 -05:00
compression.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
ctree.c Revert "Btrfs: reorder tree mod log operations in deleting a pointer" 2012-12-18 19:35:32 -05:00
ctree.h Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
delayed-inode.c Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
delayed-inode.h Btrfs: flush delayed inodes if we're short on space 2012-07-23 15:41:40 -04:00
delayed-ref.c Btrfs: allow delayed refs to be merged 2012-08-28 16:53:38 -04:00
delayed-ref.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-10-01 09:06:36 -07:00
dev-replace.c Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
dev-replace.h Btrfs: add new sources for device replace code 2012-12-12 17:15:41 -05:00
dir-item.c Btrfs: fix hash overflow handling 2012-12-17 14:48:21 -05:00
disk-io.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
disk-io.h Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
export.c ->encode_fh() API change 2012-05-29 23:28:33 -04:00
export.h
extent-tree.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
extent_io.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
extent_io.h Btrfs: add rw argument to merge_bio_hook() 2013-02-01 11:49:47 -05:00
extent_map.c Btrfs: log changed inodes based on the extent map tree 2012-12-16 20:46:24 -05:00
extent_map.h Btrfs: do not mark ems as prealloc if we are writing to them 2012-12-16 20:46:23 -05:00
file-item.c Btrfs: fix wrong file extent length 2012-12-12 17:15:21 -05:00
file.c Btrfs: do not call file_update_time in aio_write 2012-12-16 20:46:27 -05:00
free-space-cache.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
free-space-cache.h
hash.h btrfs: extended inode refs 2012-10-09 09:14:45 -04:00
inode-item.c btrfs: extended inode refs 2012-10-09 09:14:45 -04:00
inode-map.c Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
inode-map.h
inode.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
ioctl.c Btrfs: fix a bug of per-file nocow 2012-12-17 14:48:21 -05:00
ioctl.h Btrfs: add support for device replace ioctls 2012-12-16 20:46:06 -05:00
Kconfig Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
locking.c Btrfs: fix a misplaced address operator in a condition 2012-08-28 16:53:23 -04:00
locking.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
lzo.c btrfs: remove the second argument of k[un]map_atomic() 2012-03-20 21:48:21 +08:00
Makefile Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
math.h Btrfs: cleanup duplicated division functions 2012-12-11 13:31:30 -05:00
ordered-data.c Btrfs: cleanup for btrfs_wait_order_range 2012-12-12 17:15:19 -05:00
ordered-data.h Btrfs: make ordered extent be flushed by multi-task 2012-12-11 13:31:38 -05:00
orphan.c btrfs: replace many BUG_ONs with proper error handling 2012-03-22 11:52:54 +01:00
print-tree.c Btrfs: introduce a btrfs_dev_replace_item type 2012-12-12 17:15:38 -05:00
print-tree.h
qgroup.c Btrfs: fix memory leak in btrfs_quota_enable() 2012-10-25 15:45:43 -04:00
raid56.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
raid56.h Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
rcu-string.h Btrfs: use rcu to protect device->name 2012-06-14 21:29:16 -04:00
reada.c Btrfs: introduce GET_READ_MIRRORS functionality for btrfs_map_block() 2012-12-12 17:15:43 -05:00
relocation.c Btrfs: cleanup for btrfs_btree_balance_dirty 2012-12-12 17:15:28 -05:00
root-tree.c Btrfs: rename root_times_lock to root_item_lock 2012-12-16 20:46:21 -05:00
scrub.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
send.c Btrfs: rename root_times_lock to root_item_lock 2012-12-16 20:46:21 -05:00
send.h Btrfs: write_buf is now callable outside send.c 2012-10-04 09:39:55 -04:00
struct-funcs.c Btrfs: rewrite BTRFS_SETGET_FUNCS 2012-07-23 16:28:06 -04:00
super.c Btrfs: use slabs for auto defrag allocation 2012-12-16 20:46:11 -05:00
sysfs.c btrfs: Remove unused sysfs code 2011-06-17 14:54:18 -04:00
transaction.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
transaction.h Btrfs: improve the noflush reservation 2012-12-11 13:31:31 -05:00
tree-defrag.c
tree-log.c Btrfs: use tokens where we can in the tree log 2012-12-16 20:46:26 -05:00
tree-log.h btrfs: return void in functions without error conditions 2012-03-22 01:45:34 +01:00
ulist.c Btrfs: make aux field of ulist 64 bit 2012-10-01 15:18:53 -04:00
ulist.h Btrfs: make aux field of ulist 64 bit 2012-10-01 15:18:53 -04:00
version.h
volumes.c Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -05:00
volumes.h Btrfs: RAID5 and RAID6 2013-02-01 14:24:23 -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 btrfs: fix message printing 2012-10-09 09:19:57 -04:00