summaryrefslogtreecommitdiff
path: root/fs/xfs/xfs_ioctl.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2019-10-25 08:26:27 +0300
committerDarrick J. Wong <darrick.wong@oracle.com>2019-10-29 02:08:17 +0300
commit7a42c70ea0dd56b3ed747c1fcf9b96cc26c77774 (patch)
tree86675e5d71686515feea9ff1912222f733620875 /fs/xfs/xfs_ioctl.c
parent837a6e7f5cdb5e411c6187729e12962c2705160d (diff)
downloadlinux-7a42c70ea0dd56b3ed747c1fcf9b96cc26c77774.tar.xz
xfs: disable xfs_ioc_space for always COW inodes
If we always have to write out of place preallocating blocks is pointless. We already check for this in the normal falloc path, but the check was missig in the legacy ALLOCSP path. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Diffstat (limited to 'fs/xfs/xfs_ioctl.c')
-rw-r--r--fs/xfs/xfs_ioctl.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c
index e897d5363d01..287f83eb791f 100644
--- a/fs/xfs/xfs_ioctl.c
+++ b/fs/xfs/xfs_ioctl.c
@@ -33,6 +33,7 @@
#include "xfs_sb.h"
#include "xfs_ag.h"
#include "xfs_health.h"
+#include "xfs_reflink.h"
#include <linux/mount.h>
#include <linux/namei.h>
@@ -606,6 +607,9 @@ xfs_ioc_space(
if (!S_ISREG(inode->i_mode))
return -EINVAL;
+ if (xfs_is_always_cow_inode(ip))
+ return -EOPNOTSUPP;
+
if (filp->f_flags & O_DSYNC)
flags |= XFS_PREALLOC_SYNC;
if (filp->f_mode & FMODE_NOCMTIME)