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. 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