aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/extent-tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r--fs/btrfs/extent-tree.c17
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
3045u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags) 3045u64 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;