• Miao Xie's avatar
    Btrfs: don't consider the missing device when allocating new chunks · 95669976
    Miao Xie authored
    The original code allocated new chunks by the number of the writable devices
    and missing devices to make sure that any RAID levels on a degraded FS continue
    to be honored, but it introduced a problem that it stopped us to allocating
    new chunks, the steps to reproduce is following:
    
     # mkfs.btrfs -m raid1 -d raid1 -f <dev0> <dev1>
     # mkfs.btrfs -f <dev1>			//Removing <dev1> from the original fs
     # mount -o degraded <dev0> <mnt>
     # dd if=/dev/null of=<mnt>/tmpfile bs=1M
    
    It is because we allocate new chunks only on the writable devices, if we take
    the number of missing devices into account, and want to allocate new chunks
    with higher RAID level, we will fail becaue we don't have enough writable
    device. Fix it by ignoring the number of missing devices when allocating
    new chunks.
    Signed-off-by: default avatarMiao Xie <miaox@cn.fujitsu.com>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    95669976
extent-tree.c 254 KB