Steve French
f19e84df37
[CIFS] Do not use btrfs refcopy ioctl for SMB2 copy offload
...
Change cifs.ko to using CIFS_IOCTL_COPYCHUNK instead
of BTRFS_IOC_CLONE to avoid confusion about whether
copy-on-write is required or optional for this operation.
SMB2/SMB3 copyoffload had used the BTRFS_IOC_CLONE ioctl since
they both speed up copy by offloading the copy rather than
passing many read and write requests back and forth and both have
identical syntax (passing file handles), but for SMB2/SMB3
CopyChunk the server is not required to use copy-on-write
to make a copy of the file (although some do), and Christoph
has commented that since CopyChunk does not require
copy-on-write we should not reuse BTRFS_IOC_CLONE.
This patch renames the ioctl to use a cifs specific IOCTL
CIFS_IOCTL_COPYCHUNK. This ioctl is particularly important
for SMB2/SMB3 since large file copy over the network otherwise
can be very slow, and with this is often more than 100 times
faster putting less load on server and client.
Note that if a copy syscall is ever introduced, depending on
its requirements/format it could end up using one of the other
three methods that CIFS/SMB2/SMB3 can do for copy offload,
but this method is particularly useful for file copy
and broadly supported (not just by Samba server).
Signed-off-by: Steve French <smfrench@gmail.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: David Disseldorp <ddiss@samba.org>
2013-11-25 09:50:31 -06:00
..
9p
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-11-13 15:34:18 +09:00
adfs
adfs: delayed freeing of sbi
2013-10-24 23:43:27 -04:00
affs
truncate: drop 'oldsize' truncate_pagecache() parameter
2013-09-12 15:38:02 -07:00
afs
Merge branch 'fscache' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs into linux-next
2013-10-28 19:36:46 -04:00
autofs4
autofs4: make freeing sbi rcu-delayed
2013-10-24 23:43:27 -04:00
befs
befs: split symlink iops in two - for short and long symlinks resp.
2013-10-24 23:34:50 -04:00
bfs
truncate: drop 'oldsize' truncate_pagecache() parameter
2013-09-12 15:38:02 -07:00
btrfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs
2013-11-16 11:57:05 -08:00
cachefiles
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-11-13 15:34:18 +09:00
ceph
FS-Cache: Provide the ability to enable/disable cookies
2013-09-27 18:40:25 +01:00
cifs
[CIFS] Do not use btrfs refcopy ioctl for SMB2 copy offload
2013-11-25 09:50:31 -06:00
coda
coda_revalidate_inode(): switch to passing inode...
2013-11-09 00:16:21 -05:00
configfs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-07-14 11:42:26 -07:00
cramfs
cramfs: mark as obsolete
2013-11-13 12:09:12 +09:00
debugfs
debugfs: use list_next_entry() in debugfs_remove_recursive()
2013-11-13 12:09:24 +09:00
devpts
devpts: plug the memory leak in kill_sb
2013-11-13 12:09:36 +09:00
dlm
dlm: Avoid that dlm_release_lockspace() incorrectly returns -EBUSY
2013-10-16 10:32:42 -05:00
ecryptfs
tree-wide: use reinit_completion instead of INIT_COMPLETION
2013-11-15 09:32:21 +09:00
efivarfs
efivarfs: we can use simple_lookup() now
2013-07-14 17:48:35 +04:00
efs
efs: iget_locked() doesn't return an ERR_PTR()
2013-08-24 12:10:22 -04:00
exofs
truncate: drop 'oldsize' truncate_pagecache() parameter
2013-09-12 15:38:02 -07:00
exportfs
exportfs: fix quadratic behavior in filehandle lookup
2013-11-09 00:16:38 -05:00
ext2
ext2: Fix fs corruption in ext2_get_xip_mem()
2013-11-05 11:26:47 +01:00
ext3
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs
2013-11-13 15:25:47 +09:00
ext4
Ext4 updates for 3.13. Mostly bug fixes and cleanups.
2013-11-14 17:19:58 +09:00
f2fs
f2fs: issue more large discard command
2013-11-11 09:36:32 +09:00
fat
fat: rcu-delay unloading nls and freeing sbi
2013-10-24 23:43:28 -04:00
freevxfs
fscache
Merge branch 'for-3.13/core' of git://git.kernel.dk/linux-block
2013-11-14 12:08:14 +09:00
fuse
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-11-13 15:34:18 +09:00
gfs2
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-11-13 15:34:18 +09:00
hfs
fs/hfs/btree.h: remove duplicate defines
2013-11-13 12:09:32 +09:00
hfsplus
hfsplus: Fix undefined __divdi3 in hfsplus_init_header_node()
2013-11-15 09:32:23 +09:00
hostfs
um: hostfs: Fix writeback
2013-09-07 10:38:29 +02:00
hpfs
locks: break delegations on any attribute modification
2013-11-09 00:16:44 -05:00
hppfs
clean up scary strncpy(dst, src, strlen(src)) uses
2013-07-03 16:07:41 -07:00
hugetlbfs
cope with potentially long ->d_dname() output for shmem/hugetlb
2013-08-24 12:10:17 -04:00
isofs
isofs: don't pass dentry to isofs_hash{i,}_common()
2013-10-24 23:34:59 -04:00
jbd
jbd: Revert "jbd: remove dependency on __GFP_NOFAIL"
2013-10-31 20:37:15 +01:00
jbd2
jbd2: Fix endian mixing problems in the checksumming code
2013-08-28 14:59:58 -04:00
jffs2
jffs2: do not support the MLC nand
2013-10-27 16:27:07 -07:00
jfs
Just a patch to fix an oops in an error path.
2013-10-22 09:01:11 +01:00
lockd
LOCKD: Don't call utsname()->nodename from nlmclnt_setlockargs
2013-08-05 15:03:46 -04:00
logfs
minix
fs/minix: Drop dependency on H8300
2013-09-16 18:20:25 -07:00
ncpfs
ncpfs: rcu-delay unload_nls() and freeing ncp_server
2013-10-24 23:43:28 -04:00
nfs
NFS client bugfixes:
2013-11-16 13:14:56 -08:00
nfs_common
nfsd
Merge branch 'nfsd-next' of git://linux-nfs.org/~bfields/linux
2013-11-16 12:04:02 -08:00
nilfs2
nilfs2: fix issue with race condition of competition between segments for dirty blocks
2013-09-30 14:31:02 -07:00
nls
notify
fsnotify: update comments concerning locking scheme
2013-07-09 10:33:20 -07:00
ntfs
iget/iget5: don't bother with ->i_lock until we find a match
2013-11-09 00:16:31 -05:00
ocfs2
tree-wide: use reinit_completion instead of INIT_COMPLETION
2013-11-15 09:32:21 +09:00
omfs
truncate: drop 'oldsize' truncate_pagecache() parameter
2013-09-12 15:38:02 -07:00
openpromfs
proc
seq_file: remove "%n" usage from seq_file users
2013-11-15 09:32:20 +09:00
pstore
pstore: Remove the messages related to compression failure
2013-09-16 09:28:29 -07:00
qnx4
qnx4: i_sb is never NULL
2013-11-09 00:16:32 -05:00
qnx6
quota
quota: info leak in quota_getquota()
2013-11-04 14:16:55 +01:00
ramfs
initmpfs: move rootfs code from fs/ramfs/ to init/
2013-09-11 15:59:37 -07:00
reiserfs
reiserfs: fix race with flush_used_journal_lists and flush_journal_list
2013-09-24 11:24:21 +02:00
romfs
squashfs
Squashfs: add corruption check for type in squashfs_readdir()
2013-09-06 04:57:54 +01:00
sysfs
Revert "sysfs: drop kobj_ns_type handling"
2013-11-07 20:47:28 +09:00
sysv
sysv: Add forgotten superblock lock init for v7 fs
2013-09-29 22:02:02 -04:00
ubifs
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-11-13 15:34:18 +09:00
udf
udf: fix for pathetic mount times in case of invalid file system
2013-10-18 22:39:07 +02:00
ufs
truncate: drop 'oldsize' truncate_pagecache() parameter
2013-09-12 15:38:02 -07:00
xfs
xfs: update for v3.13-rc1
2013-11-14 17:16:35 +09:00
aio.c
aio: checking for NULL instead of IS_ERR
2013-11-13 07:30:53 -05:00
anon_inodes.c
... and kill anon_inode_getfile_private()
2013-11-09 00:16:28 -05:00
attr.c
locks: break delegations on any attribute modification
2013-11-09 00:16:44 -05:00
bad_inode.c
binfmt_aout.c
dump_skip(): dump_seek() replacement taking coredump_params
2013-11-09 00:16:26 -05:00
binfmt_elf.c
elf{,_fdpic} coredump: get rid of pointless if (siginfo->si_signo)
2013-11-09 00:16:30 -05:00
binfmt_elf_fdpic.c
elf{,_fdpic} coredump: get rid of pointless if (siginfo->si_signo)
2013-11-09 00:16:30 -05:00
binfmt_em86.c
file->f_op is never NULL...
2013-10-24 23:34:54 -04:00
binfmt_flat.c
binfmt_misc.c
binfmt_script.c
binfmt_som.c
bio-integrity.c
Merge branch 'for-3.12/core' of git://git.kernel.dk/linux-block
2013-09-22 15:00:11 -07:00
bio.c
block: Consolidate duplicated bio_trim() implementations
2013-11-08 09:02:31 -07:00
block_dev.c
a trivial writeback fix
2013-09-13 23:06:40 -04:00
buffer.c
fs: buffer: move allocation failure loop into the allocator
2013-10-16 21:35:53 -07:00
char_dev.c
Merge branch 'for-3.13/core' of git://git.kernel.dk/linux-block
2013-11-14 12:08:14 +09:00
compat.c
compat_binfmt_elf.c
compat_ioctl.c
file->f_op is never NULL...
2013-10-24 23:34:54 -04:00
coredump.c
constify do_coredump() argument
2013-11-09 00:16:29 -05:00
coredump.h
dcache.c
Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2013-11-14 16:30:30 +09:00
dcookies.c
direct-io.c
direct-io: Use return from cmpxchg to decide of assignment happened
2013-09-09 10:47:42 -07:00
drop_caches.c
shrinker: add node awareness
2013-09-10 18:56:31 -04:00
eventfd.c
eventpoll.c
Merge branch 'akpm' (patches from Andrew Morton)
2013-11-13 15:45:43 +09:00
exec.c
Merge branch 'akpm' (patches from Andrew Morton)
2013-11-13 15:45:43 +09:00
fcntl.c
file->f_op is never NULL...
2013-10-24 23:34:54 -04:00
fhandle.c
file.c
file_table.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-11-13 15:34:18 +09:00
filesystems.c
fs-writeback.c
Merge branch 'akpm' (patches from Andrew Morton)
2013-11-13 15:45:43 +09:00
fs_struct.c
seqcount: Add lockdep functionality to seqcount/seqlock structures
2013-11-06 12:40:26 +01:00
generic_acl.c
inode.c
locks: break delegations on any attribute modification
2013-11-09 00:16:44 -05:00
internal.h
get rid of s_files and files_lock
2013-11-09 00:16:20 -05:00
ioctl.c
file->f_op is never NULL...
2013-10-24 23:34:54 -04:00
ioprio.c
Kconfig
Kconfig.binfmt
libfs.c
take anon inode allocation to libfs.c
2013-11-09 00:16:27 -05:00
locks.c
locks: missing unlock on error in generic_add_lease()
2013-11-13 07:30:53 -05:00
Makefile
mbcache.c
fs: convert fs shrinkers to new scan/count API
2013-09-10 18:56:31 -04:00
mount.h
RCU'd vfsmounts
2013-11-09 00:16:19 -05:00
mpage.c
namei.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-11-13 15:34:18 +09:00
namespace.c
RCU'd vfsmounts
2013-11-09 00:16:19 -05:00
no-block.c
open.c
locks: break delegations on any attribute modification
2013-11-09 00:16:44 -05:00
pipe.c
pnode.c
split __lookup_mnt() in two functions
2013-10-24 23:35:00 -04:00
pnode.h
vfs: Don't copy mount bind mounts of /proc/<pid>/ns/mnt between namespaces
2013-08-26 18:42:15 -07:00
posix_acl.c
proc_namespace.c
don't bother with vfsmount_lock in mounts_poll()
2013-10-24 23:34:59 -04:00
read_write.c
file->f_op is never NULL...
2013-10-24 23:34:54 -04:00
readdir.c
file->f_op is never NULL...
2013-10-24 23:34:54 -04:00
select.c
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2013-11-13 15:34:18 +09:00
seq_file.c
seq_file: introduce seq_setwidth() and seq_pad()
2013-11-15 09:32:20 +09:00
signalfd.c
splice.c
file->f_op is never NULL...
2013-10-24 23:34:54 -04:00
stack.c
stat.c
vfs: split out vfs_getattr_nosec
2013-11-09 00:16:31 -05:00
statfs.c
vfs: allow O_PATH file descriptors for fstatfs()
2013-10-12 13:12:31 -07:00
super.c
get rid of s_files and files_lock
2013-11-09 00:16:20 -05:00
sync.c
Merge branch 'akpm' (patches from Andrew Morton)
2013-11-13 15:45:43 +09:00
timerfd.c
utimes.c
locks: break delegations on any attribute modification
2013-11-09 00:16:44 -05:00
xattr.c
xattr_acl.c