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.

Signed-off-by: Sachin Prabhu <sprabhu@redhat.com>
CC: Stable <stable@vger.kernel.org>
Signed-off-by: Steve French <smfrench@gmail.com>
Reviewed-by: Pavel Shilovsky <pshilov@microsoft.com>

authored by Sachin Prabhu and committed by Steve French 312bbc59 38bd4906

+16 -15
+2 -1
fs/cifs/cifsglob.h
··· 408 408 char * (*create_lease_buf)(u8 *, u8); 409 409 /* parse lease context buffer and return oplock/epoch info */ 410 410 __u8 (*parse_lease_buf)(void *, unsigned int *); 411 - int (*clone_range)(const unsigned int, struct cifsFileInfo *src_file, 411 + int (*copychunk_range)(const unsigned int, 412 + struct cifsFileInfo *src_file, 412 413 struct cifsFileInfo *target_file, u64 src_off, u64 len, 413 414 u64 dest_off); 414 415 int (*duplicate_extents)(const unsigned int, struct cifsFileInfo *src,
+8 -8
fs/cifs/ioctl.c
··· 34 34 #include "cifs_ioctl.h" 35 35 #include <linux/btrfs.h> 36 36 37 - static int cifs_file_clone_range(unsigned int xid, struct file *src_file, 37 + static int cifs_file_copychunk_range(unsigned int xid, struct file *src_file, 38 38 struct file *dst_file) 39 39 { 40 40 struct inode *src_inode = file_inode(src_file); ··· 45 45 struct cifs_tcon *target_tcon; 46 46 int rc; 47 47 48 - cifs_dbg(FYI, "ioctl clone range\n"); 48 + cifs_dbg(FYI, "ioctl copychunk range\n"); 49 49 50 50 if (!src_file->private_data || !dst_file->private_data) { 51 51 rc = -EBADF; ··· 75 75 /* should we flush first and last page first */ 76 76 truncate_inode_pages(&target_inode->i_data, 0); 77 77 78 - if (target_tcon->ses->server->ops->clone_range) 79 - rc = target_tcon->ses->server->ops->clone_range(xid, 78 + if (target_tcon->ses->server->ops->copychunk_range) 79 + rc = target_tcon->ses->server->ops->copychunk_range(xid, 80 80 smb_file_src, smb_file_target, 0, src_inode->i_size, 0); 81 81 else 82 82 rc = -EOPNOTSUPP; ··· 91 91 return rc; 92 92 } 93 93 94 - static long cifs_ioctl_clone(unsigned int xid, struct file *dst_file, 94 + static long cifs_ioctl_copychunk(unsigned int xid, struct file *dst_file, 95 95 unsigned long srcfd) 96 96 { 97 97 int rc; 98 98 struct fd src_file; 99 99 struct inode *src_inode; 100 100 101 - cifs_dbg(FYI, "ioctl clone range\n"); 101 + cifs_dbg(FYI, "ioctl copychunk range\n"); 102 102 /* the destination must be opened for writing */ 103 103 if (!(dst_file->f_mode & FMODE_WRITE)) { 104 104 cifs_dbg(FYI, "file target not open for write\n"); ··· 129 129 if (S_ISDIR(src_inode->i_mode)) 130 130 goto out_fput; 131 131 132 - rc = cifs_file_clone_range(xid, src_file.file, dst_file); 132 + rc = cifs_file_copychunk_range(xid, src_file.file, dst_file); 133 133 134 134 out_fput: 135 135 fdput(src_file); ··· 251 251 } 252 252 break; 253 253 case CIFS_IOC_COPYCHUNK_FILE: 254 - rc = cifs_ioctl_clone(xid, filep, arg); 254 + rc = cifs_ioctl_copychunk(xid, filep, arg); 255 255 break; 256 256 case CIFS_IOC_SET_INTEGRITY: 257 257 if (pSMBFile == NULL)
+6 -6
fs/cifs/smb2ops.c
··· 593 593 } 594 594 595 595 static int 596 - smb2_clone_range(const unsigned int xid, 596 + smb2_copychunk_range(const unsigned int xid, 597 597 struct cifsFileInfo *srcfile, 598 598 struct cifsFileInfo *trgtfile, u64 src_off, 599 599 u64 len, u64 dest_off) ··· 611 611 if (pcchunk == NULL) 612 612 return -ENOMEM; 613 613 614 - cifs_dbg(FYI, "in smb2_clone_range - about to call request res key\n"); 614 + cifs_dbg(FYI, "in smb2_copychunk_range - about to call request res key\n"); 615 615 /* Request a key from the server to identify the source of the copy */ 616 616 rc = SMB2_request_res_key(xid, tlink_tcon(srcfile->tlink), 617 617 srcfile->fid.persistent_fid, ··· 2378 2378 .set_oplock_level = smb2_set_oplock_level, 2379 2379 .create_lease_buf = smb2_create_lease_buf, 2380 2380 .parse_lease_buf = smb2_parse_lease_buf, 2381 - .clone_range = smb2_clone_range, 2381 + .copychunk_range = smb2_copychunk_range, 2382 2382 .wp_retry_size = smb2_wp_retry_size, 2383 2383 .dir_needs_close = smb2_dir_needs_close, 2384 2384 .get_dfs_refer = smb2_get_dfs_refer, ··· 2461 2461 .set_oplock_level = smb21_set_oplock_level, 2462 2462 .create_lease_buf = smb2_create_lease_buf, 2463 2463 .parse_lease_buf = smb2_parse_lease_buf, 2464 - .clone_range = smb2_clone_range, 2464 + .copychunk_range = smb2_copychunk_range, 2465 2465 .wp_retry_size = smb2_wp_retry_size, 2466 2466 .dir_needs_close = smb2_dir_needs_close, 2467 2467 .enum_snapshots = smb3_enum_snapshots, ··· 2548 2548 .set_oplock_level = smb3_set_oplock_level, 2549 2549 .create_lease_buf = smb3_create_lease_buf, 2550 2550 .parse_lease_buf = smb3_parse_lease_buf, 2551 - .clone_range = smb2_clone_range, 2551 + .copychunk_range = smb2_copychunk_range, 2552 2552 .duplicate_extents = smb2_duplicate_extents, 2553 2553 .validate_negotiate = smb3_validate_negotiate, 2554 2554 .wp_retry_size = smb2_wp_retry_size, ··· 2643 2643 .set_oplock_level = smb3_set_oplock_level, 2644 2644 .create_lease_buf = smb3_create_lease_buf, 2645 2645 .parse_lease_buf = smb3_parse_lease_buf, 2646 - .clone_range = smb2_clone_range, 2646 + .copychunk_range = smb2_copychunk_range, 2647 2647 .duplicate_extents = smb2_duplicate_extents, 2648 2648 /* .validate_negotiate = smb3_validate_negotiate, */ /* not used in 3.11 */ 2649 2649 .wp_retry_size = smb2_wp_retry_size,