• Anand Jain's avatar
    btrfs: free alien device after device add · 7f551d96
    Anand Jain authored
    When an old device has new fsid through 'btrfs device add -f <dev>' our
    fs_devices list has an alien device in one of the fs_devices lists.
    
    By having an alien device in fs_devices, we have two issues so far
    
    1. missing device does not not show as missing in the userland
    
    2. degraded mount will fail
    
    Both issues are caused by the fact that there's an alien device in the
    fs_devices list. (Alien means that it does not belong to the filesystem,
    identified by fsid, or does not contain btrfs filesystem at all, eg. due
    to overwrite).
    
    A device can be scanned/added through the control device ioctls
    SCAN_DEV, DEVICES_READY or by ADD_DEV.
    
    And device coming through the control device is checked against the all
    other devices in the lists, but this was not the case for ADD_DEV.
    
    This patch fixes both issues above by removing the alien device.
    
    CC: stable@vger.kernel.org # 5.4+
    Signed-off-by: default avatarAnand Jain <anand.jain@oracle.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    7f551d96
volumes.c 203 KB