• Anand Jain's avatar
    btrfs: introduce new ioctl to unregister a btrfs device · 228a73ab
    Anand Jain authored
    Support for a new command that can be used eg. as a command
    
      $ btrfs device scan --forget [dev]'
    (the final name may change though)
    
    to undo the effects of 'btrfs device scan [dev]'. For this purpose
    this patch proposes to use ioctl #5 as it was empty and is next to the
    SCAN ioctl.
    
    The new ioctl BTRFS_IOC_FORGET_DEV works only on the control device
    (/dev/btrfs-control) to unregister one or all devices, devices that are
    not mounted.
    
    The argument is struct btrfs_ioctl_vol_args, ::name specifies the device
    path. To unregister all device, the path is an empty string.
    
    Again, the devices are removed only if they aren't part of a mounte
    filesystem.
    
    This new ioctl provides:
    
    - release of unwanted btrfs_fs_devices and btrfs_devices structures
      from memory if the device is not going to be mounted
    
    - ability to mount filesystem in degraded mode, when one devices is
      corrupted like in split brain raid1
    
    - running test cases which would require reloading the kernel module
      but this is not possible eg. due to mounted filesystem or built-in
    Signed-off-by: default avatarAnand Jain <anand.jain@oracle.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    [ update changelog ]
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    228a73ab
volumes.c 210 KB