diff options
author | David Woodhouse <David.Woodhouse@intel.com> | 2009-07-11 18:12:37 +0100 |
---|---|---|
committer | Chris Mason <chris.mason@fusionio.com> | 2013-02-01 14:22:07 -0500 |
commit | 4d48b96b280a76f29eb5d5f1578559932f551b2d (patch) | |
tree | c67db59d335759896fcb3c05d54f1a3232dd6471 /extent-tree.c | |
parent | 6f082141d0a608c286c3f1b42ddd558e72ea1d9f (diff) |
Add basic RAID[56] support
David Woodhouse originally contributed this code, and Chris Mason
changed it around to reflect the current design goals for raid56.
The original code expected all metadata and data writes to be full
stripes. This meant metadata block size == stripe size, and had a few
other restrictions.
This version allows metadata blocks smaller than the stripe size. It
implements both raid5 and raid6, although it does not have code to
rebuild from parity if one of the drives is missing or incorrect.
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'extent-tree.c')
-rw-r--r-- | extent-tree.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/extent-tree.c b/extent-tree.c index c7121171..7fb77019 100644 --- a/extent-tree.c +++ b/extent-tree.c @@ -1762,6 +1762,8 @@ static void set_avail_alloc_bits(struct btrfs_fs_info *fs_info, u64 flags) u64 extra_flags = flags & (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID10 | + BTRFS_BLOCK_GROUP_RAID5 | + BTRFS_BLOCK_GROUP_RAID6 | BTRFS_BLOCK_GROUP_DUP); if (extra_flags) { if (flags & BTRFS_BLOCK_GROUP_DATA) |