diff options
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r-- | fs/btrfs/extent-tree.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 41133b064d72..4be231e0d2bd 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -3044,7 +3044,13 @@ static void set_avail_alloc_bits(struct btrfs_fs_info *fs_info, u64 flags) | |||
3044 | 3044 | ||
3045 | u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags) | 3045 | u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags) |
3046 | { | 3046 | { |
3047 | u64 num_devices = root->fs_info->fs_devices->rw_devices; | 3047 | /* |
3048 | * we add in the count of missing devices because we want | ||
3049 | * to make sure that any RAID levels on a degraded FS | ||
3050 | * continue to be honored. | ||
3051 | */ | ||
3052 | u64 num_devices = root->fs_info->fs_devices->rw_devices + | ||
3053 | root->fs_info->fs_devices->missing_devices; | ||
3048 | 3054 | ||
3049 | if (num_devices == 1) | 3055 | if (num_devices == 1) |
3050 | flags &= ~(BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID0); | 3056 | flags &= ~(BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID0); |
@@ -7891,7 +7897,14 @@ static u64 update_block_group_flags(struct btrfs_root *root, u64 flags) | |||
7891 | u64 stripped = BTRFS_BLOCK_GROUP_RAID0 | | 7897 | u64 stripped = BTRFS_BLOCK_GROUP_RAID0 | |
7892 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID10; | 7898 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID10; |
7893 | 7899 | ||
7894 | num_devices = root->fs_info->fs_devices->rw_devices; | 7900 | /* |
7901 | * we add in the count of missing devices because we want | ||
7902 | * to make sure that any RAID levels on a degraded FS | ||
7903 | * continue to be honored. | ||
7904 | */ | ||
7905 | num_devices = root->fs_info->fs_devices->rw_devices + | ||
7906 | root->fs_info->fs_devices->missing_devices; | ||
7907 | |||
7895 | if (num_devices == 1) { | 7908 | if (num_devices == 1) { |
7896 | stripped |= BTRFS_BLOCK_GROUP_DUP; | 7909 | stripped |= BTRFS_BLOCK_GROUP_DUP; |
7897 | stripped = flags & ~stripped; | 7910 | stripped = flags & ~stripped; |