summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2019-10-24 22:26:27 -0700
committerDarrick J. Wong <darrick.wong@oracle.com>2019-10-28 16:08:17 -0700
commit7a42c70ea0dd56b3ed747c1fcf9b96cc26c77774 (patch)
tree86675e5d71686515feea9ff1912222f733620875
parent837a6e7f5cdb5e411c6187729e12962c2705160d (diff)
downloadlinux-7a42c70ea0dd56b3ed747c1fcf9b96cc26c77774.tar.bz2
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>
-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)