summaryrefslogtreecommitdiffstats
path: root/fs/ceph/super.c
diff options
context:
space:
mode:
authorLuis Henriques <lhenriques@suse.com>2020-01-08 11:03:53 +0100
committerIlya Dryomov <idryomov@gmail.com>2020-01-27 16:53:40 +0100
commit78beb0ff2feceb1d7568333f93195e1a4d95a49a (patch)
tree95c0d293b1403ac31c1adf75d95a8ea02fb985d1 /fs/ceph/super.c
parentceph: close holes in structs ceph_mds_session and ceph_mds_request (diff)
downloadlinux-78beb0ff2feceb1d7568333f93195e1a4d95a49a.tar.xz
linux-78beb0ff2feceb1d7568333f93195e1a4d95a49a.zip
ceph: use copy-from2 op in copy_file_range
Instead of using the copy-from operation, switch copy_file_range to the new copy-from2 operation, which allows to send the truncate_seq and truncate_size parameters. If an OSD does not support the copy-from2 operation it will return -EOPNOTSUPP. In that case, the kernel client will stop trying to do remote object copies for this fs client and will always use the generic VFS copy_file_range. Signed-off-by: Luis Henriques <lhenriques@suse.com> Reviewed-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph/super.c')
-rw-r--r--fs/ceph/super.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/ceph/super.c b/fs/ceph/super.c
index 112927dbd2f2..bfb8aead0555 100644
--- a/fs/ceph/super.c
+++ b/fs/ceph/super.c
@@ -718,6 +718,7 @@ static struct ceph_fs_client *create_fs_client(struct ceph_mount_options *fsopt,
fsc->sb = NULL;
fsc->mount_state = CEPH_MOUNT_MOUNTING;
fsc->filp_gen = 1;
+ fsc->have_copy_from2 = true;
atomic_long_set(&fsc->writeback_count, 0);