• Adam Borowski's avatar
    btrfs: allow defrag on a file opened read-only that has rw permissions · 616d374e
    Adam Borowski authored
    Requiring a read-write descriptor conflicts both ways with exec,
    returning ETXTBSY whenever you try to defrag a program that's currently
    being run, or causing intermittent exec failures on a live system being
    defragged.
    
    As defrag doesn't change the file's contents in any way, there's no
    reason to consider it a rw operation.  Thus, let's check only whether
    the file could have been opened rw.  Such access control is still needed
    as currently defrag can use extra disk space, and might trigger bugs.
    
    We return EINVAL when the request is invalid; here it's ok but merely
    the user has insufficient privileges.  Thus, the EPERM return value
    reflects the error better -- as discussed in the identical case for
    dedupe.
    
    According to codesearch.debian.net, no userspace program distinguishes
    these values beyond strerror().
    Signed-off-by: default avatarAdam Borowski <kilobyte@angband.pl>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    [ fold the EPERM patch from Adam ]
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    616d374e
ioctl.c 145 KB