Linux-NFS Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v9 00/11] client-side support for "inter" SSC copy
@ 2019-06-14 20:00 Olga Kornievskaia
  2019-06-14 20:00 ` [PATCH v9 01/11] NFS NFSD: defining nl4_servers structure needed by both Olga Kornievskaia
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Olga Kornievskaia @ 2019-06-14 20:00 UTC (permalink / raw)
  To: trond.myklebust, anna.schumaker; +Cc: linux-nfs

From: Olga Kornievskaia <kolga@netapp.com>

This patch series adds client-side support for doing NFSv4.2 "inter"
copy offload between different NFS servers.

In case of the "inter" SSC copy files reside on different servers and
thus under different superblocks and require that VFS removes the
restriction that src and dst files must be on the same superblock.

NFS's copy_file_range() determines if the copy is "intra" or "inter"
and for "inter" it sends the COPY_NOTIFY to the source server. Then,
it would send of an asynchronous COPY to the destination server. If
an application cancels an in-flight COPY, OFFLOAD_CANCEL is sent to
both of the servers.

This patch series also include necessary client-side additions that
are performed by the destination server. The server needs an NFS
open that represents a source file without doing an actual open.
Two function nfs42_ssc_open/nfs42_ssc_close() are introduced to
accomplish it that make use of the VFS's alloc_file_pseudo().

This patch series depends on removal of the cross-device check which
was done in Amir's VFS generic copy_file_range support.

v9:
--- reworked reboot recovery for the source server. previously copies
were stored on the destination's server structure list, but when source
server reboots it can't wake up the waiting copies to be redone. Instead
now add the copy to both the source server and the destination server so
that during recovery we can find it on either of the servers' lists.
--- when a source server rebooted and the destination server wasn't able
to read any bytes and in the callback it returns NFS4ERR_PARTNER_NO_AUTH
with 0 bytes, treat that as source server reboot.

Olga Kornievskaia (11):
  NFS NFSD: defining nl4_servers structure needed by both
  NFS: add COPY_NOTIFY operation
  NFS: add ca_source_server<> to COPY
  NFS: also send OFFLOAD_CANCEL to source server
  NFS: inter ssc open
  NFS: skip recovery of copy open on dest server
  NFS: for "inter" copy treat ESTALE as ENOTSUPP
  NFS: COPY handle ERR_OFFLOAD_DENIED
  NFS handle NFS4ERR_PARTNER_NO_AUTH error
  NFS: handle source server reboot
  NFS: replace cross device check in copy_file_range

 fs/nfs/nfs42.h            |  15 +++-
 fs/nfs/nfs42proc.c        | 193 +++++++++++++++++++++++++++++++++++++++-------
 fs/nfs/nfs42xdr.c         | 190 ++++++++++++++++++++++++++++++++++++++++++++-
 fs/nfs/nfs4_fs.h          |  11 +++
 fs/nfs/nfs4client.c       |   2 +-
 fs/nfs/nfs4file.c         | 125 +++++++++++++++++++++++++++++-
 fs/nfs/nfs4proc.c         |   7 +-
 fs/nfs/nfs4state.c        |  40 ++++++++--
 fs/nfs/nfs4xdr.c          |   1 +
 include/linux/nfs4.h      |  25 ++++++
 include/linux/nfs_fs.h    |   4 +-
 include/linux/nfs_fs_sb.h |   1 +
 include/linux/nfs_xdr.h   |  17 ++++
 13 files changed, 586 insertions(+), 45 deletions(-)

-- 
1.8.3.1


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

end of thread, back to index

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-14 20:00 [PATCH v9 00/11] client-side support for "inter" SSC copy Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 01/11] NFS NFSD: defining nl4_servers structure needed by both Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 02/11] NFS: add COPY_NOTIFY operation Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 03/11] NFS: add ca_source_server<> to COPY Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 04/11] NFS: also send OFFLOAD_CANCEL to source server Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 05/11] NFS: inter ssc open Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 06/11] NFS: skip recovery of copy open on dest server Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 07/11] NFS: for "inter" copy treat ESTALE as ENOTSUPP Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 08/11] NFS: COPY handle ERR_OFFLOAD_DENIED Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 09/11] NFS handle NFS4ERR_PARTNER_NO_AUTH error Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 10/11] NFS: handle source server reboot Olga Kornievskaia
2019-06-14 20:00 ` [PATCH v9 11/11] NFS: replace cross device check in copy_file_range Olga Kornievskaia

Linux-NFS Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-nfs/0 linux-nfs/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-nfs linux-nfs/ https://lore.kernel.org/linux-nfs \
		linux-nfs@vger.kernel.org linux-nfs@archiver.kernel.org
	public-inbox-index linux-nfs

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-nfs


AGPL code for this site: git clone https://public-inbox.org/ public-inbox