diff options
-rw-r--r-- | fs/xfs/xfs_file.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 52f96e16694c..8fb97a65286e 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c | |||
@@ -824,7 +824,7 @@ xfs_file_fallocate( | |||
824 | if (!S_ISREG(inode->i_mode)) | 824 | if (!S_ISREG(inode->i_mode)) |
825 | return -EINVAL; | 825 | return -EINVAL; |
826 | if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | | 826 | if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | |
827 | FALLOC_FL_COLLAPSE_RANGE)) | 827 | FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_ZERO_RANGE)) |
828 | return -EOPNOTSUPP; | 828 | return -EOPNOTSUPP; |
829 | 829 | ||
830 | xfs_ilock(ip, XFS_IOLOCK_EXCL); | 830 | xfs_ilock(ip, XFS_IOLOCK_EXCL); |
@@ -855,8 +855,11 @@ xfs_file_fallocate( | |||
855 | goto out_unlock; | 855 | goto out_unlock; |
856 | } | 856 | } |
857 | 857 | ||
858 | error = xfs_alloc_file_space(ip, offset, len, | 858 | if (mode & FALLOC_FL_ZERO_RANGE) |
859 | XFS_BMAPI_PREALLOC); | 859 | error = xfs_zero_file_space(ip, offset, len); |
860 | else | ||
861 | error = xfs_alloc_file_space(ip, offset, len, | ||
862 | XFS_BMAPI_PREALLOC); | ||
860 | if (error) | 863 | if (error) |
861 | goto out_unlock; | 864 | goto out_unlock; |
862 | } | 865 | } |