summaryrefslogtreecommitdiffstats
path: root/fs/read_write.c
diff options
context:
space:
mode:
authorDarrick J. Wong <darrick.wong@oracle.com>2018-10-30 00:41:01 +0100
committerDave Chinner <david@fromorbit.com>2018-10-30 00:41:01 +0100
commit9aae20500d9cd3e7d55d0536d359bdd1c869db89 (patch)
tree030cee6e5d4a6d1a3f4efae5797e82789b1af136 /fs/read_write.c
parentvfs: avoid problematic remapping requests into partial EOF block (diff)
downloadlinux-9aae20500d9cd3e7d55d0536d359bdd1c869db89.tar.xz
linux-9aae20500d9cd3e7d55d0536d359bdd1c869db89.zip
vfs: skip zero-length dedupe requests
Don't bother calling the filesystem for a zero-length dedupe request; we can return zero and exit. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Amir Goldstein <amir73il@gmail.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/read_write.c')
-rw-r--r--fs/read_write.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/fs/read_write.c b/fs/read_write.c
index 0f0a6efdd502..f5395d8da741 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -2009,6 +2009,11 @@ int vfs_dedupe_file_range_one(struct file *src_file, loff_t src_pos,
if (!dst_file->f_op->dedupe_file_range)
goto out_drop_write;
+ if (len == 0) {
+ ret = 0;
+ goto out_drop_write;
+ }
+
ret = dst_file->f_op->dedupe_file_range(src_file, src_pos,
dst_file, dst_pos, len);
out_drop_write: