FAILED: patch "[PATCH] SMB3: Rename clone_range to copychunk_range" failed to apply to 4.10-stable tree
[email protected]
maintainerThe patch below does not apply to the 4.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
312bbc5946c4b73dfc1d64c1dd5b0f9df8016587Mon Sep 17 00:00:00 2001
From: Sachin Prabhu <[email protected]>
Date: Tue, 4 Apr 2017 02:12:04 -0500
Subject: [PATCH] SMB3: Rename clone_range to copychunk_range
Server side copy is one of the most important mechanisms smb2/smb3 supports and it was unintentionally disabled for most use cases.
Renaming calls to reflect the underlying smb2 ioctl called. This is similar to the name duplicate_extents used for a similar ioctl which is also used to duplicate files by reusing fs blocks. The name change is to avoid confusion.
fs/cifs/cifsglob.h +2 -1
@@ -408,7 +408,8 @@ struct smb_version_operations {char * (*create_lease_buf)(u8 *,u8 );/* parse lease context buffer and return oplock/epoch info */ __u8 (*parse_lease_buf)(void *,unsigned int *); -int (*clone_range)(const unsigned int ,struct cifsFileInfo *src_file, +int (*copychunk_range)(const unsigned int , +struct cifsFileInfo *src_file,struct cifsFileInfo *target_file,u64 src_off,u64 len,u64 dest_off); int (*duplicate_extents)(const unsigned int, struct cifsFileInfo *src,
fs/cifs/ioctl.c +8 -8
@@ -34,7 +34,7 @@#include "cifs_ioctl.h" #include <linux/btrfs.h> -static int cifs_file_clone_range (unsigned int xid,struct file *src_file, +static int cifs_file_copychunk_range (unsigned int xid,struct file *src_file,struct file *dst_file) {struct inode *src_inode =file_inode (src_file);
@@ -45,7 +45,7 @@ static int cifs_file_clone_range(unsigned int xid, struct file *src_file,struct cifs_tcon *target_tcon;int rc; -cifs_dbg (FYI ,"ioctl clone range\n" ); +cifs_dbg (FYI ,"ioctl copychunk range\n" );if (!src_file->private_data || !dst_file->private_data) { rc = -EBADF ;
@@ -75,8 +75,8 @@ static int cifs_file_clone_range(unsigned int xid, struct file *src_file,/* should we flush first and last page first */ truncate_inode_pages (&target_inode->i_data,0 ); -if (target_tcon->ses->server->ops->clone_range) - rc = target_tcon->ses->server->ops->clone_range (xid, +if (target_tcon->ses->server->ops->copychunk_range) + rc = target_tcon->ses->server->ops->copychunk_range (xid, smb_file_src, smb_file_target,0 , src_inode->i_size,0 );else rc = -EOPNOTSUPP ;
@@ -91,14 +91,14 @@ static int cifs_file_clone_range(unsigned int xid, struct file *src_file,return rc; } -static long cifs_ioctl_clone (unsigned int xid,struct file *dst_file, +static long cifs_ioctl_copychunk (unsigned int xid,struct file *dst_file,unsigned long srcfd) {int rc;struct fd src_file;struct inode *src_inode; -cifs_dbg (FYI ,"ioctl clone range\n" ); +cifs_dbg (FYI ,"ioctl copychunk range\n" );/* the destination must be opened for writing */ if (!(dst_file->f_mode &FMODE_WRITE )) {cifs_dbg (FYI ,"file target not open for write\n" );
@@ -129,7 +129,7 @@ static long cifs_ioctl_clone(unsigned int xid, struct file *dst_file,if (S_ISDIR (src_inode->i_mode)) goto out_fput; - rc =cifs_file_clone_range (xid, src_file.file, dst_file); + rc =cifs_file_copychunk_range (xid, src_file.file, dst_file); out_fput:fdput (src_file);
@@ -251,7 +251,7 @@ long cifs_ioctl(struct file *filep, unsigned int command, unsigned long arg) }break ;case CIFS_IOC_COPYCHUNK_FILE : - rc =cifs_ioctl_clone (xid, filep, arg); + rc =cifs_ioctl_copychunk (xid, filep, arg);break ;case CIFS_IOC_SET_INTEGRITY :if (pSMBFile ==NULL )
fs/cifs/smb2ops.c +6 -6
@@ -593,7 +593,7 @@ SMB2_request_res_key(const unsigned int xid, struct cifs_tcon *tcon, }static int -smb2_clone_range (const unsigned int xid, +smb2_copychunk_range (const unsigned int xid,struct cifsFileInfo *srcfile,struct cifsFileInfo *trgtfile,u64 src_off,u64 len,u64 dest_off)
@@ -611,7 +611,7 @@ smb2_clone_range(const unsigned int xid,if (pcchunk ==NULL )return -ENOMEM ; -cifs_dbg (FYI ,"in smb2_clone_range - about to call request res key\n" ); +cifs_dbg (FYI ,"in smb2_copychunk_range - about to call request res key\n" );/* Request a key from the server to identify the source of the copy */ rc = SMB2_request_res_key(xid, tlink_tcon(srcfile->tlink), srcfile->fid.persistent_fid,
@@ -2378,7 +2378,7 @@ struct smb_version_operations smb20_operations = { .set_oplock_level = smb2_set_oplock_level, .create_lease_buf = smb2_create_lease_buf, .parse_lease_buf = smb2_parse_lease_buf, - .clone_range = smb2_clone_range, + .copychunk_range = smb2_copychunk_range, .wp_retry_size = smb2_wp_retry_size, .dir_needs_close = smb2_dir_needs_close, .get_dfs_refer = smb2_get_dfs_refer,
@@ -2461,7 +2461,7 @@ struct smb_version_operations smb21_operations = { .set_oplock_level = smb21_set_oplock_level, .create_lease_buf = smb2_create_lease_buf, .parse_lease_buf = smb2_parse_lease_buf, - .clone_range = smb2_clone_range, + .copychunk_range = smb2_copychunk_range, .wp_retry_size = smb2_wp_retry_size, .dir_needs_close = smb2_dir_needs_close, .enum_snapshots = smb3_enum_snapshots,
@@ -2548,7 +2548,7 @@ struct smb_version_operations smb30_operations = { .set_oplock_level = smb3_set_oplock_level, .create_lease_buf = smb3_create_lease_buf, .parse_lease_buf = smb3_parse_lease_buf, - .clone_range = smb2_clone_range, + .copychunk_range = smb2_copychunk_range, .duplicate_extents = smb2_duplicate_extents, .validate_negotiate = smb3_validate_negotiate, .wp_retry_size = smb2_wp_retry_size,
@@ -2643,7 +2643,7 @@ struct smb_version_operations smb311_operations = { .set_oplock_level = smb3_set_oplock_level, .create_lease_buf = smb3_create_lease_buf, .parse_lease_buf = smb3_parse_lease_buf, - .clone_range = smb2_clone_range, + .copychunk_range = smb2_copychunk_range, .duplicate_extents = smb2_duplicate_extents,/* .validate_negotiate = smb3_validate_negotiate, */ /* not used in 3.11 */ .wp_retry_size = smb2_wp_retry_size,