• Anand Jain's avatar
    Btrfs: device_list_add() should not update list when mounted · b96de000
    Anand Jain authored
    device_list_add() is called when user runs btrfs dev scan, which would add
    any btrfs device into the btrfs_fs_devices list.
    
    Now think of a mounted btrfs. And a new device which contains the a SB
    from the mounted btrfs devices.
    
    In this situation when user runs btrfs dev scan, the current code would
    just replace existing device with the new device.
    
    Which is to note that old device is neither closed nor gracefully
    removed from the btrfs.
    
    The FS is still operational with the old bdev however the device name
    is the btrfs_device is new which is provided by the btrfs dev scan.
    
    reproducer:
    
    devmgt[1] detach /dev/sdc
    
    replace the missing disk /dev/sdc
    
    btrfs rep start -f 1 /dev/sde /btrfs
    Label: none  uuid: 5dc0aaf4-4683-4050-b2d6-5ebe5f5cd120
            Total devices 2 FS bytes used 32.00KiB
            devid    1 size 958.94MiB used 115.88MiB path /dev/sde
            devid    2 size 958.94MiB used 103.88MiB path /dev/sdd
    
    make /dev/sdc to reappear
    
    devmgt attach host2
    
    btrfs dev scan
    
    btrfs fi show -m
    Label: none  uuid: 5dc0aaf4-4683-4050-b2d6-5ebe5f5cd120^M
            Total devices 2 FS bytes used 32.00KiB^M
            devid    1 size 958.94MiB used 115.88MiB path /dev/sdc <- Wrong.
            devid    2 size 958.94MiB used 103.88MiB path /dev/sdd
    
    since /dev/sdc has been replaced with /dev/sde, the /dev/sdc shouldn't be
    part of the btrfs-fsid when it reappears. If user want it to be part of it
    then sys admin should be using btrfs device add instead.
    
    [1] github.com/anajain/devmgt.git
    Signed-off-by: default avatarAnand Jain <anand.jain@oracle.com>
    Signed-off-by: default avatarWang Shilong <wangsl.fnst@cn.fujitsu.com>
    Signed-off-by: default avatarMiao Xie <miaox@cn.fujitsu.com>
    Reviewed-by: default avatarSatoru Takeuchi <takeuchi_satoru@jp.fujitsu.com>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    b96de000
volumes.c 165 KB