Introduce cifs_copy_file_range()
The earlier changes to copy range for cifs unintentionally disabled the more common form of server side copy. The patch introduces the file_operations helper cifs_copy_file_range() which is used by the syscall copy_file_range. The new file operations helper allows us to perform server side copies for SMB2.0 and 2.1 servers as well as SMB 3.0+ servers which do not support the ioctl FSCTL_DUPLICATE_EXTENTS_TO_FILE. The new helper uses the ioctl FSCTL_SRV_COPYCHUNK_WRITE to perform server side copies. The helper is called by vfs_copy_file_range() only once an attempt to clone the file using the ioctl FSCTL_DUPLICATE_EXTENTS_TO_FILE has failed. Signed-off-by:Sachin Prabhu <sprabhu@redhat.com> Reviewed-by:
Pavel Shilovsky <pshilov@microsoft.com> CC: Stable <stable@vger.kernel.org> Signed-off-by:
Steve French <smfrench@gmail.com>
Showing
- fs/cifs/cifsfs.c 87 additions, 0 deletionsfs/cifs/cifsfs.c
- fs/cifs/cifsfs.h 5 additions, 0 deletionsfs/cifs/cifsfs.h
- fs/cifs/cifsglob.h 3 additions, 3 deletionsfs/cifs/cifsglob.h
- fs/cifs/ioctl.c 2 additions, 58 deletionsfs/cifs/ioctl.c
- fs/cifs/smb2ops.c 13 additions, 7 deletionsfs/cifs/smb2ops.c
Please register or sign in to comment