From: Jeff Layton <jlayton@xxxxxxxxxx> If we have an encrypted inode, then the client will need to re-encrypt the contents of the new object. Disable copy offload to or from encrypted inodes. Tested-by: Luís Henriques <lhenriques@xxxxxxx> Tested-by: Venky Shankar <vshankar@xxxxxxxxxx> Reviewed-by: Luís Henriques <lhenriques@xxxxxxx> Reviewed-by: Xiubo Li <xiubli@xxxxxxxxxx> Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> --- fs/ceph/file.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fs/ceph/file.c b/fs/ceph/file.c index e3d07f4049df..f621f733898e 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -2519,6 +2519,10 @@ static ssize_t __ceph_copy_file_range(struct file *src_file, loff_t src_off, return -EOPNOTSUPP; } + /* Every encrypted inode gets its own key, so we can't offload them */ + if (IS_ENCRYPTED(src_inode) || IS_ENCRYPTED(dst_inode)) + return -EOPNOTSUPP; + if (len < src_ci->i_layout.object_size) return -EOPNOTSUPP; /* no remote copy will be done */ -- 2.39.2