diff options
| author | 2019-06-04 16:14:30 -0400 | |
|---|---|---|
| committer | 2019-10-09 12:05:45 -0400 | |
| commit | 0491567b51efeca807da1125a1a0d5193875e286 (patch) | |
| tree | f1c88abfe8baacdf33d4dbed412812eb8b2f6f76 /include | |
| parent | NFS NFSD: defining nl4_servers structure needed by both (diff) | |
| download | linux-dev-0491567b51efeca807da1125a1a0d5193875e286.tar.xz linux-dev-0491567b51efeca807da1125a1a0d5193875e286.zip | |
NFS: add COPY_NOTIFY operation
Try using the delegation stateid, then the open stateid.
Only NL4_NETATTR, No support for NL4_NAME and NL4_URL.
Allow only one source server address to be returned for now.
To distinguish between same server copy offload ("intra") and
a copy between different server ("inter"), do a check of server
owner identity and also make sure server is capable of doing
a copy offload.
Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Olga Kornievskaia <kolga@netapp.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/nfs4.h | 1 | ||||
| -rw-r--r-- | include/linux/nfs_fs_sb.h | 1 | ||||
| -rw-r--r-- | include/linux/nfs_xdr.h | 16 | 
3 files changed, 18 insertions, 0 deletions
| diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h index 5810e248c1bd..5e7a5261af4e 100644 --- a/include/linux/nfs4.h +++ b/include/linux/nfs4.h @@ -537,6 +537,7 @@ enum {  	NFSPROC4_CLNT_CLONE,  	NFSPROC4_CLNT_COPY,  	NFSPROC4_CLNT_OFFLOAD_CANCEL, +	NFSPROC4_CLNT_COPY_NOTIFY,  	NFSPROC4_CLNT_LOOKUPP,  	NFSPROC4_CLNT_LAYOUTERROR, diff --git a/include/linux/nfs_fs_sb.h b/include/linux/nfs_fs_sb.h index a87fe854f008..e1c8748e1e82 100644 --- a/include/linux/nfs_fs_sb.h +++ b/include/linux/nfs_fs_sb.h @@ -276,5 +276,6 @@ struct nfs_server {  #define NFS_CAP_COPY		(1U << 24)  #define NFS_CAP_OFFLOAD_CANCEL	(1U << 25)  #define NFS_CAP_LAYOUTERROR	(1U << 26) +#define NFS_CAP_COPY_NOTIFY	(1U << 27)  #endif diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index 9b8324ec08f3..0a7af40026d7 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h @@ -1463,6 +1463,22 @@ struct nfs42_offload_status_res {  	int				osr_status;  }; +struct nfs42_copy_notify_args { +	struct nfs4_sequence_args	cna_seq_args; + +	struct nfs_fh		*cna_src_fh; +	nfs4_stateid		cna_src_stateid; +	struct nl4_server	cna_dst; +}; + +struct nfs42_copy_notify_res { +	struct nfs4_sequence_res	cnr_seq_res; + +	struct nfstime4		cnr_lease_time; +	nfs4_stateid		cnr_stateid; +	struct nl4_server	cnr_src; +}; +  struct nfs42_seek_args {  	struct nfs4_sequence_args	seq_args; | 
