• C
    Btrfs: account for missing devices in RAID allocation profiles · cd02dca5
    Chris Mason 提交于
    When we mount in RAID degraded mode without adding a new device to
    replace the failed one, we can end up using the wrong RAID flags for
    allocations.
    
    This results in strange combinations of block groups (raid1 in a raid10
    filesystem) and corruptions when we try to allocate blocks from single
    spindle chunks on drives that are actually missing.
    
    The first device has two small 4MB chunks in it that mkfs creates and
    these are usually unused in a raid1 or raid10 setup.  But, in -o degraded,
    the allocator will fall back to these because the mask of desired raid groups
    isn't correct.
    
    The fix here is to count the missing devices as we build up the list
    of devices in the system.  This count is used when picking the
    raid level to make sure we continue using the same levels that were
    in place before we lost a drive.
    Signed-off-by: NChris Mason <chris.mason@oracle.com>
    cd02dca5
extent-tree.c 224.3 KB