History

Merge tag 'nfs-for-5.5-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs

Pull NFS client updates from Trond Myklebust: "Highlights include: Features: - NFSv4.2 now supports cross device offloaded copy (i.e. offloaded copy of a file from one source server to a different target server). - New RDMA tracepoints for debugging congestion control and Local Invalidate WRs. Bugfixes and cleanups - Drop the NFSv4.1 session slot if nfs4_delegreturn_prepare waits for layoutreturn - Handle bad/dead sessions correctly in nfs41_sequence_process() - Various bugfixes to the delegation return operation. - Various bugfixes pertaining to delegations that have been revoked. - Cleanups to the NFS timespec code to avoid unnecessary conversions between timespec and timespec64. - Fix unstable RDMA connections after a reconnect - Close race between waking an RDMA sender and posting a receive - Wake pending RDMA tasks if connection fails - Fix MR list corruption, and clean up MR usage - Fix another RPCSEC_GSS issue with MIC buffer space" * tag 'nfs-for-5.5-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (79 commits) SUNRPC: Capture completion of all RPC tasks SUNRPC: Fix another issue with MIC buffer space NFS4: Trace lock reclaims NFS4: Trace state recovery operation NFSv4.2 fix memory leak in nfs42_ssc_open NFSv4.2 fix kfree in __nfs42_copy_file_range NFS: remove duplicated include from nfs4file.c NFSv4: Make _nfs42_proc_copy_notify() static NFS: Fallocate should use the nfs4_fattr_bitmap NFS: Return -ETXTBSY when attempting to write to a swapfile fs: nfs: sysfs: Remove NULL check before kfree NFS: remove unneeded semicolon NFSv4: add declaration of current_stateid NFSv4.x: Drop the slot if nfs4_delegreturn_prepare waits for layoutreturn NFSv4.x: Handle bad/dead sessions correctly in nfs41_sequence_process() nfsv4: Move NFSPROC4_CLNT_COPY_NOTIFY to end of list SUNRPC: Avoid RPC delays when exiting suspend NFS: Add a tracepoint in nfs_fh_to_dentry() NFSv4: Don't retry the GETATTR on old stateid in nfs4_delegreturn_done() NFSv4: Handle NFS4ERR_OLD_STATEID in delegreturn ...

Linus Torvalds committed 6 years ago

Commit fb9bf402 parents 94e89b4 a264aba49 files · +1756 −622Browse files

Showing the changes to include/linux (6 of 49 files). Show all

Unified · Split

6 files
  1. include/linux/nfs4.h +26 −0
  2. include/linux/nfs_fs.h +3 −1
  3. include/linux/nfs_fs_sb.h +5 −1
  4. include/linux/nfs_xdr.h +24 −7
  5. include/linux/sunrpc/clnt.h +1 −0
  6. include/linux/sunrpc/xprt.h +2 −1
include/linux/nfs4.h+26−0
@@ -16,6 +16,7 @@ · 15 unmodified lines
1616 #include <linux/list.h>
1717 #include <linux/uidgid.h>
1818 #include <uapi/linux/nfs4.h>
19+#include <linux/sunrpc/msg_prot.h>
1920
2021 enum nfs4_acl_whotype {
2122 NFS4_ACL_WHO_NAMED = 0,
@@ -539,6 +540,8 @@ enum { · 517 unmodified lines
539540
540541 NFSPROC4_CLNT_LOOKUPP,
541542 NFSPROC4_CLNT_LAYOUTERROR,
543+
544+ NFSPROC4_CLNT_COPY_NOTIFY,
542545 };
543546
544547 /* nfs41 types */
@@ -674,4 +677,27 @@ struct nfs4_op_map { · 129 unmodified lines
674677 } u;
675678 };
676679
680+struct nfs42_netaddr {
681+ char netid[RPCBIND_MAXNETIDLEN];
682+ char addr[RPCBIND_MAXUADDRLEN + 1];
683+ u32 netid_len;
684+ u32 addr_len;
685+};
686+
687+enum netloc_type4 {
688+ NL4_NAME = 1,
689+ NL4_URL = 2,
690+ NL4_NETADDR = 3,
691+};
692+
693+struct nl4_server {
694+ enum netloc_type4 nl4_type;
695+ union {
696+ struct { /* NL4_NAME, NL4_URL */
697+ int nl4_str_sz;
698+ char nl4_str[NFS4_OPAQUE_LIMIT + 1];
699+ };
700+ struct nfs42_netaddr nl4_addr; /* NL4_NETADDR */
701+ } u;
702+};
677703 #endif
include/linux/nfs_fs.h+3−1
@@ -189,13 +189,15 @@ struct nfs_inode { · 188 unmodified lines
189189
190190 struct nfs4_copy_state {
191191 struct list_head copies;
192+ struct list_head src_copies;
192193 nfs4_stateid stateid;
193194 struct completion completion;
194195 uint64_t count;
195196 struct nfs_writeverf verf;
196197 int error;
197198 int flags;
198− struct nfs4_state *parent_state;
199+ struct nfs4_state *parent_src_state;
200+ struct nfs4_state *parent_dst_state;
199201 };
200202
201203 /*
include/linux/nfs_fs_sb.h+5−1
@@ -45,6 +45,9 @@ struct nfs_client { · 44 unmodified lines
4545 #define NFS_CS_INFINITE_SLOTS 3 /* - don't limit TCP slots */
4646 #define NFS_CS_NO_RETRANS_TIMEOUT 4 /* - Disable retransmit timeouts */
4747 #define NFS_CS_TSM_POSSIBLE 5 /* - Maybe state migration */
48+#define NFS_CS_NOPING 6 /* - don't ping on connect */
49+#define NFS_CS_DS 7 /* - Server is a DS */
50+#define NFS_CS_REUSEPORT 8 /* - reuse src port on reconnect */
4851 struct sockaddr_storage cl_addr; /* server identifier */
4952 size_t cl_addrlen;
5053 char * cl_hostname; /* hostname of server */
@@ -171,7 +174,7 @@ struct nfs_server { · 120 unmodified lines
171174
172175 struct nfs_fsid fsid;
173176 __u64 maxfilesize; /* maximum file size */
174− struct timespec time_delta; /* smallest time granularity */
177+ struct timespec64 time_delta; /* smallest time granularity */
175178 unsigned long mount_time; /* when this fs was mounted */
176179 struct super_block *super; /* VFS super block */
177180 dev_t s_dev; /* superblock dev numbers */
@@ -276,5 +279,6 @@ struct nfs_server { · 98 unmodified lines
276279 #define NFS_CAP_COPY (1U << 24)
277280 #define NFS_CAP_OFFLOAD_CANCEL (1U << 25)
278281 #define NFS_CAP_LAYOUTERROR (1U << 26)
282+#define NFS_CAP_COPY_NOTIFY (1U << 27)
279283
280284 #endif
include/linux/nfs_xdr.h+24−7
@@ -62,14 +62,14 @@ struct nfs_fattr { · 61 unmodified lines
6262 struct nfs_fsid fsid;
6363 __u64 fileid;
6464 __u64 mounted_on_fileid;
65− struct timespec atime;
66− struct timespec mtime;
67− struct timespec ctime;
65+ struct timespec64 atime;
66+ struct timespec64 mtime;
67+ struct timespec64 ctime;
6868 __u64 change_attr; /* NFSv4 change attribute */
6969 __u64 pre_change_attr;/* pre-op NFSv4 change attribute */
7070 __u64 pre_size; /* pre_op_attr.size */
71− struct timespec pre_mtime; /* pre_op_attr.mtime */
72− struct timespec pre_ctime; /* pre_op_attr.ctime */
71+ struct timespec64 pre_mtime; /* pre_op_attr.mtime */
72+ struct timespec64 pre_ctime; /* pre_op_attr.ctime */
7373 unsigned long time_start;
7474 unsigned long gencount;
7575 struct nfs4_string *owner_name;
@@ -143,7 +143,7 @@ struct nfs_fsinfo { · 67 unmodified lines
143143 __u32 wtmult; /* writes should be multiple of this */
144144 __u32 dtpref; /* pref. readdir transfer size */
145145 __u64 maxfilesize;
146− struct timespec time_delta; /* server time granularity */
146+ struct timespec64 time_delta; /* server time granularity */
147147 __u32 lease_time; /* in seconds */
148148 __u32 nlayouttypes; /* number of layouttypes */
149149 __u32 layouttype[NFS_MAX_LAYOUT_TYPES]; /* supported pnfs layout driver */
@@ -869,7 +869,7 @@ struct nfs3_sattrargs { · 719 unmodified lines
869869 struct nfs_fh * fh;
870870 struct iattr * sattr;
871871 unsigned int guard;
872− struct timespec guardtime;
872+ struct timespec64 guardtime;
873873 };
874874
875875 struct nfs3_diropargs {
@@ -1435,6 +1435,7 @@ struct nfs42_copy_args { · 559 unmodified lines
14351435
14361436 u64 count;
14371437 bool sync;
1438+ struct nl4_server *cp_src;
14381439 };
14391440
14401441 struct nfs42_write_res {
@@ -1463,6 +1464,22 @@ struct nfs42_offload_status_res { · 22 unmodified lines
14631464 int osr_status;
14641465 };
14651466
1467+struct nfs42_copy_notify_args {
1468+ struct nfs4_sequence_args cna_seq_args;
1469+
1470+ struct nfs_fh *cna_src_fh;
1471+ nfs4_stateid cna_src_stateid;
1472+ struct nl4_server cna_dst;
1473+};
1474+
1475+struct nfs42_copy_notify_res {
1476+ struct nfs4_sequence_res cnr_seq_res;
1477+
1478+ struct nfstime4 cnr_lease_time;
1479+ nfs4_stateid cnr_stateid;
1480+ struct nl4_server cnr_src;
1481+};
1482+
14661483 struct nfs42_seek_args {
14671484 struct nfs4_sequence_args seq_args;
14681485
include/linux/sunrpc/clnt.h+1−0
@@ -149,6 +149,7 @@ struct rpc_add_xprt_test { · 148 unmodified lines
149149 #define RPC_CLNT_CREATE_NO_IDLE_TIMEOUT (1UL << 8)
150150 #define RPC_CLNT_CREATE_NO_RETRANS_TIMEOUT (1UL << 9)
151151 #define RPC_CLNT_CREATE_SOFTERR (1UL << 10)
152+#define RPC_CLNT_CREATE_REUSEPORT (1UL << 11)
152153
153154 struct rpc_clnt *rpc_create(struct rpc_create_args *args);
154155 struct rpc_clnt *rpc_bind_new_program(struct rpc_clnt *,
include/linux/sunrpc/xprt.h+2−1
@@ -207,7 +207,8 @@ struct rpc_xprt { · 206 unmodified lines
207207 unsigned int min_reqs; /* min number of slots */
208208 unsigned int num_reqs; /* total slots */
209209 unsigned long state; /* transport state */
210− unsigned char resvport : 1; /* use a reserved port */
210+ unsigned char resvport : 1, /* use a reserved port */
211+ reuseport : 1; /* reuse port on reconnect */
211212 atomic_t swapper; /* we're swapping over this
212213 transport */
213214 unsigned int bind_index; /* bind function index */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t