{ 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,