linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 0/8] VFS: In-kernel copy system call
@ 2015-09-04 20:16 Anna Schumaker
  2015-09-04 20:16 ` [PATCH v1 1/9] vfs: add copy_file_range syscall and vfs helper Anna Schumaker
                   ` (10 more replies)
  0 siblings, 11 replies; 59+ messages in thread
From: Anna Schumaker @ 2015-09-04 20:16 UTC (permalink / raw)
  To: linux-nfs, linux-btrfs, linux-fsdevel, linux-api, zab, viro, clm,
	darrick.wong, mtk.manpages, andros, hch

Copy system calls came up during Plumbers a couple of weeks ago, because
several filesystems (including NFS and XFS) are currently working on copy
acceleration implementations.  We haven't heard from Zach Brown in a while,
so I volunteered to push his patches upstream so individual filesystems
don't need to keep writing their own ioctls.

The first three patches are a simple reposting of Zach's patches from several
months ago, with one minor error code fix.  The remaining patches add in a
fallback mechanism when filesystems don't provide a copy function.  This is
especially useful when doing a server-side copy on NFS (using the new COPY
operation in NFS v4.2).  This fallback can be disabled by passing the flag
COPY_REFLINK to the system call.

The last patch is a man page patch documenting this new system call,
including an example program.

I tested the fallback option by using /dev/urandom to generate files of
varying sizes and copying them.  I compared the time to copy against that
of `cp` just to see if there is a noticable difference.  I found that
runtimes are roughly the same, but in-kernel copy tends to use less of
the cpu.  Values in the tables below are averages across multiple trials.


 /usr/bin/cp |   512 MB  |   1024 MB |   1536 MB |   2048 MB
-------------|-----------|-----------|-----------|-----------
       user  |   0.00s   |   0.00s   |   0.00s   |   0.00s
     system  |   0.32s   |   0.52s   |   1.04s   |   1.04s
        cpu  |     73%   |     69%   |     62%   |     62%
      total  |   0.446   |   0.757   |   1.197   |   1.667


   VFS copy  |   512 MB  |   1024 MB |   1536 MB |   2048 MB
-------------|-----------|-----------|-----------|-----------
       user  |   0.00s   |   0.00s   |   0.00s   |  0.00s
     system  |   0.33s   |   0.49s   |   0.76s   |  0.99s
        cpu  |     77%   |     62%   |     60%   |    59%
      total  |   0.422   |   0.777   |   1.267   |  1.655


Questions?  Comments?  Thoughts?

Anna


Anna Schumaker (5):
  btrfs: Add mountpoint checking during btrfs_copy_file_range
  vfs: Remove copy_file_range mountpoint checks
  vfs: Copy should check len after file open mode
  vfs: Copy should use file_out rather than file_in
  vfs: Fall back on splice if no copy function defined

Zach Brown (3):
  vfs: add copy_file_range syscall and vfs helper
  x86: add sys_copy_file_range to syscall tables
  btrfs: add .copy_file_range file operation

 arch/x86/entry/syscalls/syscall_32.tbl |   1 +
 arch/x86/entry/syscalls/syscall_64.tbl |   1 +
 fs/btrfs/ctree.h                       |   3 +
 fs/btrfs/file.c                        |   1 +
 fs/btrfs/ioctl.c                       |  95 ++++++++++++++----------
 fs/read_write.c                        | 132 +++++++++++++++++++++++++++++++++
 include/linux/copy.h                   |   6 ++
 include/linux/fs.h                     |   3 +
 include/uapi/asm-generic/unistd.h      |   4 +-
 include/uapi/linux/Kbuild              |   1 +
 include/uapi/linux/copy.h              |   6 ++
 kernel/sys_ni.c                        |   1 +
 12 files changed, 214 insertions(+), 40 deletions(-)
 create mode 100644 include/linux/copy.h
 create mode 100644 include/uapi/linux/copy.h

-- 
2.5.1


^ permalink raw reply	[flat|nested] 59+ messages in thread

end of thread, other threads:[~2015-09-14 17:53 UTC | newest]

Thread overview: 59+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-04 20:16 [PATCH v1 0/8] VFS: In-kernel copy system call Anna Schumaker
2015-09-04 20:16 ` [PATCH v1 1/9] vfs: add copy_file_range syscall and vfs helper Anna Schumaker
2015-09-04 21:50   ` Darrick J. Wong
2015-09-04 20:16 ` [PATCH v1 2/8] x86: add sys_copy_file_range to syscall tables Anna Schumaker
2015-09-04 20:16 ` [PATCH v1 3/8] btrfs: add .copy_file_range file operation Anna Schumaker
2015-09-04 21:02   ` Josef Bacik
2015-09-09  8:39   ` David Sterba
2015-09-04 20:16 ` [PATCH v1 4/8] btrfs: Add mountpoint checking during btrfs_copy_file_range Anna Schumaker
2015-09-09  9:18   ` David Sterba
2015-09-09 15:56     ` Anna Schumaker
2015-09-04 20:16 ` [PATCH v1 5/8] vfs: Remove copy_file_range mountpoint checks Anna Schumaker
2015-09-04 20:17 ` [PATCH v1 6/8] vfs: Copy should check len after file open mode Anna Schumaker
2015-09-04 20:17 ` [PATCH v1 7/8] vfs: Copy should use file_out rather than file_in Anna Schumaker
2015-09-04 20:17 ` [PATCH v1 8/8] vfs: Fall back on splice if no copy function defined Anna Schumaker
2015-09-04 21:08   ` Darrick J. Wong
2015-09-08 14:57     ` Anna Schumaker
2015-09-04 20:17 ` [PATCH v1 9/8] copy_file_range.2: New page documenting copy_file_range() Anna Schumaker
2015-09-04 21:38   ` Darrick J. Wong
2015-09-04 22:31     ` Andreas Dilger
2015-09-08 15:05       ` Anna Schumaker
2015-09-08 15:04     ` Anna Schumaker
2015-09-08 20:39       ` Darrick J. Wong
2015-09-09  9:16         ` David Sterba
2015-09-09 11:38         ` Austin S Hemmelgarn
2015-09-09 17:17           ` Darrick J. Wong
2015-09-09 17:31             ` Anna Schumaker
2015-09-09 18:12               ` Darrick J. Wong
2015-09-09 19:25                 ` Anna Schumaker
2015-09-10 15:42             ` David Sterba
2015-09-10 16:43               ` Darrick J. Wong
2015-09-04 22:25 ` [PATCH v1 0/8] VFS: In-kernel copy system call Andreas Dilger
2015-09-05  8:33   ` Al Viro
2015-09-08 15:08     ` Anna Schumaker
2015-09-08 20:45       ` Darrick J. Wong
2015-09-08 20:49         ` Anna Schumaker
2015-09-08 15:07   ` Anna Schumaker
2015-09-08 15:21 ` Pádraig Brady
2015-09-08 18:23   ` Anna Schumaker
2015-09-08 19:10     ` Andy Lutomirski
2015-09-08 20:03       ` Pádraig Brady
2015-09-08 21:29         ` Darrick J. Wong
2015-09-08 21:45           ` Andy Lutomirski
2015-09-08 22:39             ` Darrick J. Wong
2015-09-08 23:08               ` Andy Lutomirski
2015-09-09  1:19                 ` Darrick J. Wong
2015-09-09 20:09                 ` Chris Mason
2015-09-09 20:26                   ` Trond Myklebust
2015-09-09 20:38                     ` Chris Mason
2015-09-09 20:41                       ` Anna Schumaker
2015-09-09 21:42                         ` Darrick J. Wong
2015-09-09 20:37                   ` Andy Lutomirski
2015-09-09 20:42                     ` Chris Mason
2015-09-13 23:25                 ` Dave Chinner
2015-09-14 17:53                   ` Andy Lutomirski
2015-09-09 18:52               ` Anna Schumaker
2015-09-09 21:16                 ` Darrick J. Wong
2015-09-10 15:10                   ` Anna Schumaker
2015-09-10 15:49                     ` Austin S Hemmelgarn
2015-09-10 11:40                 ` Austin S Hemmelgarn

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).