diff options
author | Iustin Pop <iustin@k1024.org> | 2015-02-02 10:26:26 +1100 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2015-02-02 10:26:26 +1100 |
commit | 9b94fcc39822b450af823b3d8cbef6b53ce87ed9 (patch) | |
tree | 1b663a4ca38574d135b903c2242728234db23a49 /fs/btrfs/props.h | |
parent | 23bd0735cfdf5322170a9ef48c7d47c2e6567ba8 (diff) | |
download | blackbird-op-linux-9b94fcc39822b450af823b3d8cbef6b53ce87ed9.tar.gz blackbird-op-linux-9b94fcc39822b450af823b3d8cbef6b53ce87ed9.zip |
xfs: fix behaviour of XFS_IOC_FSSETXATTR on directories
Currently, the ioctl handling code for XFS_IOC_FSSETXATTR treats all
targets as regular files: it refuses to change the extent size if
extents are allocated. This is wrong for directories, as there the
extent size is only used as a default for children.
The patch fixes this issue and improves validation of flag
combinations:
- only disallow extent size changes after extents have been allocated
for regular files
- only allow XFS_XFLAG_EXTSIZE for regular files
- only allow XFS_XFLAG_EXTSZINHERIT for directories
- automatically clear the flags if the extent size is zero
Thanks to Dave Chinner for guidance on the proper fix for this issue.
[dchinner: ported changes onto cleanup series. Makes changes clear
and obvious.]
[dchinner: added comments documenting validity checking rules.]
Signed-off-by: Iustin Pop <iustin@k1024.org>
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/btrfs/props.h')
0 files changed, 0 insertions, 0 deletions