vfs: dedupe: return int
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
This commit is contained in:
parent
92b66d2cdd
commit
5740c99e9d
|
@ -3247,8 +3247,8 @@ void btrfs_get_block_group_info(struct list_head *groups_list,
|
|||
struct btrfs_ioctl_space_info *space);
|
||||
void btrfs_update_ioctl_balance_args(struct btrfs_fs_info *fs_info,
|
||||
struct btrfs_ioctl_balance_args *bargs);
|
||||
ssize_t btrfs_dedupe_file_range(struct file *src_file, u64 loff, u64 olen,
|
||||
struct file *dst_file, u64 dst_loff);
|
||||
int btrfs_dedupe_file_range(struct file *src_file, u64 loff, u64 olen,
|
||||
struct file *dst_file, u64 dst_loff);
|
||||
|
||||
/* file.c */
|
||||
int __init btrfs_auto_defrag_init(void);
|
||||
|
|
|
@ -3600,13 +3600,12 @@ static int btrfs_extent_same(struct inode *src, u64 loff, u64 olen,
|
|||
return ret;
|
||||
}
|
||||
|
||||
ssize_t btrfs_dedupe_file_range(struct file *src_file, u64 loff, u64 olen,
|
||||
struct file *dst_file, u64 dst_loff)
|
||||
int btrfs_dedupe_file_range(struct file *src_file, u64 loff, u64 olen,
|
||||
struct file *dst_file, u64 dst_loff)
|
||||
{
|
||||
struct inode *src = file_inode(src_file);
|
||||
struct inode *dst = file_inode(dst_file);
|
||||
u64 bs = BTRFS_I(src)->root->fs_info->sb->s_blocksize;
|
||||
ssize_t res;
|
||||
|
||||
if (WARN_ON_ONCE(bs < PAGE_SIZE)) {
|
||||
/*
|
||||
|
@ -3617,10 +3616,7 @@ ssize_t btrfs_dedupe_file_range(struct file *src_file, u64 loff, u64 olen,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
res = btrfs_extent_same(src, loff, olen, dst, dst_loff);
|
||||
if (res)
|
||||
return res;
|
||||
return olen;
|
||||
return btrfs_extent_same(src, loff, olen, dst, dst_loff);
|
||||
}
|
||||
|
||||
static int clone_finish_inode_update(struct btrfs_trans_handle *trans,
|
||||
|
|
|
@ -2537,19 +2537,14 @@ static int ocfs2_file_clone_range(struct file *file_in,
|
|||
len, false);
|
||||
}
|
||||
|
||||
static ssize_t ocfs2_file_dedupe_range(struct file *src_file,
|
||||
u64 loff,
|
||||
u64 len,
|
||||
struct file *dst_file,
|
||||
u64 dst_loff)
|
||||
static int ocfs2_file_dedupe_range(struct file *src_file,
|
||||
u64 loff,
|
||||
u64 len,
|
||||
struct file *dst_file,
|
||||
u64 dst_loff)
|
||||
{
|
||||
int error;
|
||||
|
||||
error = ocfs2_reflink_remap_range(src_file, loff, dst_file, dst_loff,
|
||||
return ocfs2_reflink_remap_range(src_file, loff, dst_file, dst_loff,
|
||||
len, true);
|
||||
if (error)
|
||||
return error;
|
||||
return len;
|
||||
}
|
||||
|
||||
const struct inode_operations ocfs2_file_iops = {
|
||||
|
|
|
@ -1976,7 +1976,7 @@ int vfs_dedupe_file_range(struct file *file, struct file_dedupe_range *same)
|
|||
u16 count = same->dest_count;
|
||||
struct file *dst_file;
|
||||
loff_t dst_off;
|
||||
ssize_t deduped;
|
||||
int deduped;
|
||||
|
||||
if (!(file->f_mode & FMODE_READ))
|
||||
return -EINVAL;
|
||||
|
@ -2056,7 +2056,7 @@ int vfs_dedupe_file_range(struct file *file, struct file_dedupe_range *same)
|
|||
else if (deduped < 0)
|
||||
info->status = deduped;
|
||||
else
|
||||
info->bytes_deduped += deduped;
|
||||
info->bytes_deduped += len;
|
||||
}
|
||||
|
||||
next_file:
|
||||
|
|
|
@ -933,7 +933,7 @@ xfs_file_clone_range(
|
|||
len, false);
|
||||
}
|
||||
|
||||
STATIC ssize_t
|
||||
STATIC int
|
||||
xfs_file_dedupe_range(
|
||||
struct file *src_file,
|
||||
u64 loff,
|
||||
|
@ -941,23 +941,8 @@ 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,
|
||||
return xfs_reflink_remap_range(src_file, loff, dst_file, dst_loff,
|
||||
len, true);
|
||||
if (error)
|
||||
return error;
|
||||
return len;
|
||||
}
|
||||
|
||||
STATIC int
|
||||
|
|
|
@ -1749,7 +1749,7 @@ struct file_operations {
|
|||
loff_t, size_t, unsigned int);
|
||||
int (*clone_file_range)(struct file *, loff_t, struct file *, loff_t,
|
||||
u64);
|
||||
ssize_t (*dedupe_file_range)(struct file *, u64, u64, struct file *,
|
||||
int (*dedupe_file_range)(struct file *, u64, u64, struct file *,
|
||||
u64);
|
||||
} __randomize_layout;
|
||||
|
||||
|
|
Loading…
Reference in New Issue