• Nikolay Borisov's avatar
    btrfs: Handle another split brain scenario with metadata uuid feature · 05840710
    Nikolay Borisov authored
    There is one more cases which isn't handled by the original metadata
    uuid work. Namely, when a filesystem has METADATA_UUID incompat bit and
    the user decides to change the FSID to the original one e.g. have
    metadata_uuid and fsid match. In case of power failure while this
    operation is in progress we could end up in a situation where some of
    the disks have the incompat bit removed and the other half have both
    METADATA_UUID_INCOMPAT and FSID_CHANGING_IN_PROGRESS flags.
    
    This patch handles the case where a disk that has successfully changed
    its FSID such that it equals METADATA_UUID is scanned first.
    Subsequently when a disk with both
    METADATA_UUID_INCOMPAT/FSID_CHANGING_IN_PROGRESS flags is scanned
    find_fsid_changed won't be able to find an appropriate btrfs_fs_devices.
    This is done by extending find_fsid_changed to correctly find
    btrfs_fs_devices whose metadata_uuid/fsid are the same and they match
    the metadata_uuid of the currently scanned device.
    
    Fixes: cc5de4e7 ("btrfs: Handle final split-brain possibility during fsid change")
    Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
    Reported-by: default avatarSu Yue <Damenly_Su@gmx.com>
    Signed-off-by: default avatarNikolay Borisov <nborisov@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    05840710
volumes.c 200 KB