Merge branch 'for-linus' into raid56-experimental
authorChris Mason <chris.mason@fusionio.com>
Tue, 5 Feb 2013 15:04:03 +0000 (10:04 -0500)
committerChris Mason <chris.mason@fusionio.com>
Tue, 5 Feb 2013 15:04:03 +0000 (10:04 -0500)
Conflicts:
fs/btrfs/volumes.c

Signed-off-by: Chris Mason <chris.mason@fusionio.com>
1  2 
fs/btrfs/extent-tree.c
fs/btrfs/free-space-cache.c
fs/btrfs/inode.c
fs/btrfs/transaction.c
fs/btrfs/volumes.c

Simple merge
Simple merge
Simple merge
Simple merge
index 77620f2d8af9a9a23978db12e1121924efffccd4,15f6efdf6463589531f8d1507b74c9d8afd35a3d..8818dc34c199f14f562f11e26c46fab1085e9647
@@@ -3535,33 -3507,9 +3546,33 @@@ struct btrfs_raid_attr btrfs_raid_array
        { 1, 1, 2, 2, 2, 2 /* raid1 */ },
        { 1, 2, 1, 1, 1, 2 /* dup */ },
        { 1, 1, 0, 2, 1, 1 /* raid0 */ },
-       { 1, 1, 0, 1, 1, 1 /* single */ },
+       { 1, 1, 1, 1, 1, 1 /* single */ },
 +      { 1, 1, 0, 2, 1, 2 /* raid5 */ },
 +      { 1, 1, 0, 3, 1, 3 /* raid6 */ },
  };
  
 +static u32 find_raid56_stripe_len(u32 data_devices, u32 dev_stripe_target)
 +{
 +      /* TODO allow them to set a preferred stripe size */
 +      return 64 * 1024;
 +}
 +
 +static void check_raid56_incompat_flag(struct btrfs_fs_info *info, u64 type)
 +{
 +      u64 features;
 +
 +      if (!(type & (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)))
 +              return;
 +
 +      features = btrfs_super_incompat_flags(info->super_copy);
 +      if (features & BTRFS_FEATURE_INCOMPAT_RAID56)
 +              return;
 +
 +      features |= BTRFS_FEATURE_INCOMPAT_RAID56;
 +      btrfs_set_super_incompat_flags(info->super_copy, features);
 +      printk(KERN_INFO "btrfs: setting RAID5/6 feature flag\n");
 +}
 +
  static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
                               struct btrfs_root *extent_root,
                               struct map_lookup **map_ret,