On Wed, Aug 26, 2015 at 12:01 AM, Anna Schumaker <Anna.Schumaker@xxxxxxxxxx> wrote: > Hey Tao, > > On 08/25/2015 11:42 AM, Peng Tao wrote: >> On Tue, Aug 25, 2015 at 11:33 PM, Peng Tao <tao.peng@xxxxxxxxxxxxxxx> wrote: >>> Hi all, >>> >>> This patchset adds NFSv42 COPY support to nfs and nfsd. As suggested by Christoph, >>> it pulls btrfs BTRFS_IOC_CLONE/BTRFS_IOC_CLONE_RANGE ioctls to generic layer and >>> adds a new file operation to call down to file systems. Then the CLONE ioctl >>> is implemented for NFS and NFSD. >>> >>> I took a slightly different approach from Anna's NFS42 COPY implementation >>> (http://www.spinics.net/lists/linux-nfs/msg53009.html) mainly because CLONE >>> has different requirements than COPY. And the main differences between the two are: >>> 1. well, CLONE is supported rather than COPY. >>> 2. vfs_file_clone_range() does not expect file systems to do data copy, and thus >>> no rw_verify_area() required. >>> 3. clone does not expect partial success. >>> 4. clone does not fall back to data copy if underlying storage does not support it. >>> 5. no new system call required. We reuse existing BTRFS_IOC_CLONE/BTRFS_IOC_CLONE_RANGE >>> and make it generic to all file systems. >> I should have mentioned that this overlaps with Anna's COPY work. >> We'll deal with the conflicts after figuring out what to do with both. > > Since we're both working on this at the same time, can you change the title of this patch series to "NFSv42 CLONE"? I got confused when I saw these patches :) > oh, sorry my bad. I definitely was thinking about CLONE when typing COPY in the mail subject line... now fixed. Thanks, Tao > Thanks, > Anna > >> >> Cheers, >> Tao >> >>> >>> Cheers, >>> Tao >>> >>> Anna Schumaker (2): >>> nfsd: Pass filehandle to nfs4_preprocess_stateid_op() >>> NFSD: Implement the CLONE call >>> >>> Peng Tao (9): >>> vfs: pull btrfs clone API to vfs layer >>> vfs/btrfs: add .clone_range file operation >>> nfs42: decode_layoutstats does not need res parameter >>> nfs42: remove unused declaration >>> nfs42: add CLONE xdr functions >>> nfs42: add CLONE proc functions >>> nfs42: add .copy_range file operation >>> nfs: get clone_blksize when probing fsinfo >>> nfs42: respect clone_blksize >>> >>> fs/btrfs/ctree.h | 2 + >>> fs/btrfs/file.c | 1 + >>> fs/btrfs/ioctl.c | 68 ++++-------------------------- >>> fs/ioctl.c | 30 +++++++++++++ >>> fs/nfs/client.c | 1 + >>> fs/nfs/nfs42.h | 3 +- >>> fs/nfs/nfs42proc.c | 71 +++++++++++++++++++++++++++++++ >>> fs/nfs/nfs42xdr.c | 102 +++++++++++++++++++++++++++++++++++++++++++-- >>> fs/nfs/nfs4file.c | 58 ++++++++++++++++++++++++++ >>> fs/nfs/nfs4proc.c | 4 +- >>> fs/nfs/nfs4xdr.c | 26 ++++++++++++ >>> fs/nfsd/nfs4proc.c | 91 ++++++++++++++++++++++++++++++++++++---- >>> fs/nfsd/nfs4state.c | 5 +-- >>> fs/nfsd/nfs4xdr.c | 21 ++++++++++ >>> fs/nfsd/state.h | 4 +- >>> fs/nfsd/vfs.c | 7 ++++ >>> fs/nfsd/vfs.h | 1 + >>> fs/nfsd/xdr4.h | 10 +++++ >>> fs/read_write.c | 45 ++++++++++++++++++++ >>> include/linux/fs.h | 4 ++ >>> include/linux/nfs4.h | 7 +++- >>> include/linux/nfs_fs_sb.h | 2 + >>> include/linux/nfs_xdr.h | 20 +++++++++ >>> include/uapi/linux/btrfs.h | 10 ----- >>> include/uapi/linux/fs.h | 9 ++++ >>> 25 files changed, 510 insertions(+), 92 deletions(-) >>> >>> -- >>> 1.8.3.1 >>> > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html