• Marcos Paulo de Souza's avatar
    btrfs: add new BTRFS_IOC_SNAP_DESTROY_V2 ioctl · 949964c9
    Marcos Paulo de Souza authored
    This ioctl will be responsible for deleting a subvolume using its id.
    This can be used when a system has a file system mounted from a
    subvolume, rather than the root file system, like below:
    
    /
    @subvol1/
    @subvol2/
    @subvol_default/
    
    If only @subvol_default is mounted, we have no path to reach @subvol1
    and @subvol2, thus no way to delete them. Current subvolume delete ioctl
    takes a file handle point as argument, and if @subvol_default is
    mounted, we can't reach @subvol1 and @subvol2 from the same mount point.
    
    This patch introduces a new ioctl BTRFS_IOC_SNAP_DESTROY_V2 that takes
    the extended structure with flags to allow to delete subvolume using
    subvolid.
    
    Now, we can use this new ioctl specifying the subvolume id and refer to
    the same mount point. It doesn't matter which subvolume was mounted,
    since we can reach to the desired one using the subvolume id, and then
    delete it.
    
    The full path to the subvolume id is resolved internally and access is
    verified as if the subvolume was accessed by path.
    
    The volume args v2 structure is extended to use the existing union for
    subvolume id specification, that's valid in case the
    BTRFS_SUBVOL_SPEC_BY_ID is set.
    Signed-off-by: default avatarMarcos Paulo de Souza <mpdesouza@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    [ update changelog ]
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    949964c9
ioctl.c 141 KB