diff options
author | Ingo Molnar <mingo@kernel.org> | 2018-05-14 09:02:14 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2018-05-14 09:02:14 +0200 |
commit | dfd5c3ea641b1697333e5f6704e4e5dddfafe86b (patch) | |
tree | 5eab12757acaec0f7ff07a48f4b66140b78eb969 /fs/xfs/xfs_file.c | |
parent | 247f2f6f3c706b40b5f3886646f3eb53671258bf (diff) | |
parent | 67b8d5c7081221efa252e111cd52532ec6d4266f (diff) |
Merge tag 'v4.17-rc5' into sched/core, to pick up fixes and dependencies
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/xfs/xfs_file.c')
-rw-r--r-- | fs/xfs/xfs_file.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index eed073cc4778..e70fb8ccecea 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -880,8 +880,18 @@ xfs_file_dedupe_range( struct file *dst_file, u64 dst_loff) { + struct inode *srci = file_inode(src_file); + u64 max_dedupe; int error; + /* + * Since we have to read all these pages in to compare them, cut + * it off at MAX_RW_COUNT/2 rounded down to the nearest block. + * That means we won't do more than MAX_RW_COUNT IO per request. + */ + max_dedupe = (MAX_RW_COUNT >> 1) & ~(i_blocksize(srci) - 1); + if (len > max_dedupe) + len = max_dedupe; error = xfs_reflink_remap_range(src_file, loff, dst_file, dst_loff, len, true); if (error) |