Return-Path: Received: from mx142.netapp.com ([216.240.21.19]:32789 "EHLO mx142.netapp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751372AbcIGT5d (ORCPT ); Wed, 7 Sep 2016 15:57:33 -0400 From: Anna Schumaker To: CC: Subject: [PATCH v5] NFSD: Add support for the COPY operation Date: Wed, 7 Sep 2016 15:57:29 -0400 Message-ID: <20160907195730.26480-1-Anna.Schumaker@Netapp.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-nfs-owner@vger.kernel.org List-ID: This patch adds server support for the NFS v4.2 COPY operation. I did some performance testing on my own, and found that a 4MB copy cap has performance pretty close to copying with no cap at all. Here are my results for testing with various file sizes and copy caps: |-------|---------|---------|---------|---------|---------|---------|---------| |NFSv4.1| 512 MB | 1024 MB | 1536 MB | 2048 MB | 2560 MB | 3072 MB | 5120 MB | |-------|---------|---------|---------|---------|---------|---------|---------| |user | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | |system | 0.28s | 0.48s | 0.72s | 0.94s | 1.17s | 1.42s | 2.37s | |cpu | 18% | 14% | 14% | 14% | 14% | 13% | 13% | |total | 1.547s | 3.269s | 5.040s | 6.690s | 8.363s | 10.146s | 16.729s | |read | 4096 | 8192 | 12288 | 16384 | 20480 | 24576 | 40960 | |write | 4098 | 8203 | 12302 | 16402 | 20497 | 24668 | 40996 | |commit | 9 | 18 | 27 | 36 | 46 | 55 | 93 | |-------|---------|---------|---------|---------|---------|---------|---------| |-------|---------|---------|---------|---------|---------|---------|---------| |No Cap | 512 MB | 1024 MB | 1536 MB | 2048 MB | 2560 MB | 3072 MB | 5120 MB | |-------|---------|---------|---------|---------|---------|---------|---------| |user | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | |system | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | |cpu | 0% | 0% | 0% | 0% | 0% | 0% | 0% | |total | 1.476s | 3.068s | 4.569s | 6.123s | 7.701s | 9.265s | 15.438s | |copy | 1 | 1 | 1 | 2 | 2 | 2 | 3 | |commit | 1 | 1 | 1 | 2 | 2 | 2 | 3 | |-------|---------|---------|---------|---------|---------|---------|---------| |-------|---------|---------|---------|---------|---------|---------|---------| |1MB Cap| 512 MB | 1024 MB | 1536 MB | 2048 MB | 2560 MB | 3072 MB | 5120 MB | |-------|---------|---------|---------|---------|---------|---------|---------| |user | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | |system | 0.01s | 0.02s | 0.03s | 0.04s | 0.05s | 0.07s | 0.10s | |cpu | 0% | 0% | 0% | 0% | 0% | 0% | 0% | |total | 1.659s | 3.118s | 4.930s | 6.647s | 8.110s | 9.637s | 16.030s | |copy | 512 | 1024 | 1536 | 2048 | 2560 | 3072 | 5120 | |commit | 512 | 1024 | 1536 | 2048 | 2560 | 3072 | 5120 | |-------|---------|---------|---------|---------|---------|---------|---------| |-------|---------|---------|---------|---------|---------|---------|---------| |2MB Cap| 512 MB | 1024 MB | 1536 MB | 2048 MB | 2560 MB | 3072 MB | 5120 MB | |-------|---------|---------|---------|---------|---------|---------|---------| |user | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | |system | 0.01s | 0.01s | 0.02s | 0.03s | 0.03s | 0.04s | 0.07s | |cpu | 0% | 0% | 0% | 0% | 0% | 0% | 0% | |total | 1.757s | 3.351s | 4.791s | 6.522s | 8.090s | 9.594s | 15.977s | |copy | 256 | 512 | 768 | 1024 | 1280 | 1536 | 2560 | |commit | 256 | 512 | 768 | 1024 | 1280 | 1536 | 2560 | |-------|---------|---------|---------|---------|---------|---------|---------| |-------|---------|---------|---------|---------|---------|---------|---------| |4MB Cap| 512 MB | 1024 MB | 1536 MB | 2048 MB | 2560 MB | 3072 MB | 5120 MB | |-------|---------|---------|---------|---------|---------|---------|---------| |user | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | 0.00s | |system | 0.00s | 0.01s | 0.01s | 0.01s | 0.02s | 0.02s | 0.04s | |cpu | 0% | 0% | 0% | 0% | 0% | 0% | 0% | |total | 1.475s | 3.046s | 4.643s | 6.159s | 7.779s | 9.340s | 15.476s | |copy | 128 | 256 | 384 | 512 | 640 | 768 | 1280 | |commit | 128 | 256 | 384 | 512 | 640 | 768 | 1280 | |-------|---------|---------|---------|---------|---------|---------|---------| Changes in v5: - Add an arbitrary 4MB copy cap Anna Schumaker (1): NFSD: Implement the COPY call fs/nfsd/nfs4proc.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++------- fs/nfsd/nfs4xdr.c | 63 ++++++++++++++++++++++++++++++++++++-- fs/nfsd/vfs.c | 8 +++++ fs/nfsd/vfs.h | 2 ++ fs/nfsd/xdr4.h | 23 ++++++++++++++ 5 files changed, 173 insertions(+), 13 deletions(-) -- 2.9.3