History

Merge tag 'nfs-for-4.13-1' of git://git.linux-nfs.org/projects/anna/linux-nfs

Pull NFS client updates from Anna Schumaker: "Stable bugfixes: - Fix -EACCESS on commit to DS handling - Fix initialization of nfs_page_array->npages - Only invalidate dentries that are actually invalid Features: - Enable NFSoRDMA transparent state migration - Add support for lookup-by-filehandle - Add support for nfs re-exporting Other bugfixes and cleanups: - Christoph cleaned up the way we declare NFS operations - Clean up various internal structures - Various cleanups to commits - Various improvements to error handling - Set the dt_type of . and .. entries in NFS v4 - Make slot allocation more reliable - Fix fscache stat printing - Fix uninitialized variable warnings - Fix potential list overrun in nfs_atomic_open() - Fix a race in NFSoRDMA RPC reply handler - Fix return size for nfs42_proc_copy() - Fix against MAC forgery timing attacks" * tag 'nfs-for-4.13-1' of git://git.linux-nfs.org/projects/anna/linux-nfs: (68 commits) NFS: Don't run wake_up_bit() when nobody is waiting... nfs: add export operations nfs4: add NFSv4 LOOKUPP handlers nfs: add a nfs_ilookup helper nfs: replace d_add with d_splice_alias in atomic_open sunrpc: use constant time memory comparison for mac NFSv4.2 fix size storage for nfs42_proc_copy xprtrdma: Fix documenting comments in frwr_ops.c xprtrdma: Replace PAGE_MASK with offset_in_page() xprtrdma: FMR does not need list_del_init() xprtrdma: Demote "connect" log messages NFSv4.1: Use seqid returned by EXCHANGE_ID after state migration NFSv4.1: Handle EXCHGID4_FLAG_CONFIRMED_R during NFSv4.1 migration xprtrdma: Don't defer MR recovery if ro_map fails xprtrdma: Fix FRWR invalidation error recovery xprtrdma: Fix client lock-up after application signal fires xprtrdma: Rename rpcrdma_req::rl_free xprtrdma: Pass only the list of registered MRs to ro_unmap_sync xprtrdma: Pre-mark remotely invalidated MRs xprtrdma: On invalidation failure, remove MWs from rl_registered ...

Linus Torvalds committed 9 years ago

Commit b86faee2 parents 48ea2ce b4f937c35 files · +777 −289Browse files

Showing the changes to include/linux (5 of 35 files). Show all

Unified · Split

5 files
  1. include/linux/nfs4.h +1 −0
  2. include/linux/nfs_fs.h +1 −0
  3. include/linux/nfs_fs_sb.h +2 −0
  4. include/linux/nfs_page.h +3 −1
  5. include/linux/nfs_xdr.h +24 −7
include/linux/nfs4.h+1−0
@@ -479,6 +479,7 @@ enum { · 478 unmodified lines
479479 NFSPROC4_CLNT_ACCESS,
480480 NFSPROC4_CLNT_GETATTR,
481481 NFSPROC4_CLNT_LOOKUP,
482+ NFSPROC4_CLNT_LOOKUPP,
482483 NFSPROC4_CLNT_LOOKUP_ROOT,
483484 NFSPROC4_CLNT_REMOVE,
484485 NFSPROC4_CLNT_RENAME,
include/linux/nfs_fs.h+1−0
@@ -332,6 +332,7 @@ extern void nfs_zap_caches(struct inode *); · 331 unmodified lines
332332 extern void nfs_invalidate_atime(struct inode *);
333333 extern struct inode *nfs_fhget(struct super_block *, struct nfs_fh *,
334334 struct nfs_fattr *, struct nfs4_label *);
335+struct inode *nfs_ilookup(struct super_block *sb, struct nfs_fattr *, struct nfs_fh *);
335336 extern int nfs_refresh_inode(struct inode *, struct nfs_fattr *);
336337 extern int nfs_post_op_update_inode(struct inode *inode, struct nfs_fattr *fattr);
337338 extern int nfs_post_op_update_inode_force_wcc(struct inode *inode, struct nfs_fattr *fattr);
include/linux/nfs_fs_sb.h+2−0
@@ -42,6 +42,7 @@ struct nfs_client { · 41 unmodified lines
4242 #define NFS_CS_MIGRATION 2 /* - transparent state migr */
4343 #define NFS_CS_INFINITE_SLOTS 3 /* - don't limit TCP slots */
4444 #define NFS_CS_NO_RETRANS_TIMEOUT 4 /* - Disable retransmit timeouts */
45+#define NFS_CS_TSM_POSSIBLE 5 /* - Maybe state migration */
4546 struct sockaddr_storage cl_addr; /* server identifier */
4647 size_t cl_addrlen;
4748 char * cl_hostname; /* hostname of server */
@@ -210,6 +211,7 @@ struct nfs_server { · 162 unmodified lines
210211 unsigned long mig_status;
211212 #define NFS_MIG_IN_TRANSITION (1)
212213 #define NFS_MIG_FAILED (2)
214+#define NFS_MIG_TSM_POSSIBLE (3)
213215
214216 void (*destroy)(struct nfs_server *);
215217
include/linux/nfs_page.h+3−1
@@ -33,6 +33,8 @@ enum { · 32 unmodified lines
3333 PG_UPTODATE, /* page group sync bit in read path */
3434 PG_WB_END, /* page group sync bit in write path */
3535 PG_REMOVE, /* page group sync bit in write path */
36+ PG_CONTENDED1, /* Is someone waiting for a lock? */
37+ PG_CONTENDED2, /* Is someone waiting for a lock? */
3638 };
3739
3840 struct nfs_inode;
@@ -93,8 +95,8 @@ struct nfs_pageio_descriptor { · 54 unmodified lines
9395 const struct rpc_call_ops *pg_rpc_callops;
9496 const struct nfs_pgio_completion_ops *pg_completion_ops;
9597 struct pnfs_layout_segment *pg_lseg;
98+ struct nfs_io_completion *pg_io_completion;
9699 struct nfs_direct_req *pg_dreq;
97− void *pg_layout_private;
98100 unsigned int pg_bsize; /* default bsize for mirrors */
99101
100102 u32 pg_mirror_count;
include/linux/nfs_xdr.h+24−7
@@ -878,7 +878,7 @@ struct nfs3_readdirargs { · 877 unmodified lines
878878 struct nfs_fh * fh;
879879 __u64 cookie;
880880 __be32 verf[2];
881− int plus;
881+ bool plus;
882882 unsigned int count;
883883 struct page ** pages;
884884 };
@@ -909,7 +909,7 @@ struct nfs3_linkres { · 24 unmodified lines
909909 struct nfs3_readdirres {
910910 struct nfs_fattr * dir_attr;
911911 __be32 * verf;
912− int plus;
912+ bool plus;
913913 };
914914
915915 struct nfs3_getaclres {
@@ -1012,7 +1012,6 @@ struct nfs4_link_res { · 96 unmodified lines
10121012 struct nfs_fattr * dir_attr;
10131013 };
10141014
1015−
10161015 struct nfs4_lookup_arg {
10171016 struct nfs4_sequence_args seq_args;
10181017 const struct nfs_fh * dir_fh;
@@ -1028,6 +1027,20 @@ struct nfs4_lookup_res { · 9 unmodified lines
10281027 struct nfs4_label *label;
10291028 };
10301029
1030+struct nfs4_lookupp_arg {
1031+ struct nfs4_sequence_args seq_args;
1032+ const struct nfs_fh *fh;
1033+ const u32 *bitmask;
1034+};
1035+
1036+struct nfs4_lookupp_res {
1037+ struct nfs4_sequence_res seq_res;
1038+ const struct nfs_server *server;
1039+ struct nfs_fattr *fattr;
1040+ struct nfs_fh *fh;
1041+ struct nfs4_label *label;
1042+};
1043+
10311044 struct nfs4_lookup_root_arg {
10321045 struct nfs4_sequence_args seq_args;
10331046 const u32 * bitmask;
@@ -1053,7 +1066,7 @@ struct nfs4_readdir_arg { · 19 unmodified lines
10531066 struct page ** pages; /* zero-copy data */
10541067 unsigned int pgbase; /* zero-copy data */
10551068 const u32 * bitmask;
1056− int plus;
1069+ bool plus;
10571070 };
10581071
10591072 struct nfs4_readdir_res {
@@ -1422,6 +1435,7 @@ enum { · 362 unmodified lines
14221435 NFS_IOHDR_STAT,
14231436 };
14241437
1438+struct nfs_io_completion;
14251439 struct nfs_pgio_header {
14261440 struct inode *inode;
14271441 struct rpc_cred *cred;
@@ -1435,8 +1449,8 @@ struct nfs_pgio_header { · 7 unmodified lines
14351449 void (*release) (struct nfs_pgio_header *hdr);
14361450 const struct nfs_pgio_completion_ops *completion_ops;
14371451 const struct nfs_rw_ops *rw_ops;
1452+ struct nfs_io_completion *io_completion;
14381453 struct nfs_direct_req *dreq;
1439− void *layout_private;
14401454 spinlock_t lock;
14411455 /* fields protected by lock */
14421456 int pnfs_error;
@@ -1533,6 +1547,7 @@ struct nfs_renamedata { · 90 unmodified lines
15331547 struct nfs_fattr new_fattr;
15341548 void (*complete)(struct rpc_task *, struct nfs_renamedata *);
15351549 long timeout;
1550+ bool cancelled;
15361551 };
15371552
15381553 struct nfs_access_entry;
@@ -1567,6 +1582,8 @@ struct nfs_rpc_ops { · 28 unmodified lines
15671582 int (*lookup) (struct inode *, const struct qstr *,
15681583 struct nfs_fh *, struct nfs_fattr *,
15691584 struct nfs4_label *);
1585+ int (*lookupp) (struct inode *, struct nfs_fh *,
1586+ struct nfs_fattr *, struct nfs4_label *);
15701587 int (*access) (struct inode *, struct nfs_access_entry *);
15711588 int (*readlink)(struct inode *, struct page *, unsigned int,
15721589 unsigned int);
@@ -1585,7 +1602,7 @@ struct nfs_rpc_ops { · 12 unmodified lines
15851602 int (*mkdir) (struct inode *, struct dentry *, struct iattr *);
15861603 int (*rmdir) (struct inode *, const struct qstr *);
15871604 int (*readdir) (struct dentry *, struct rpc_cred *,
1588− u64, struct page **, unsigned int, int);
1605+ u64, struct page **, unsigned int, bool);
15891606 int (*mknod) (struct inode *, struct dentry *, struct iattr *,
15901607 dev_t);
15911608 int (*statfs) (struct nfs_server *, struct nfs_fh *,
@@ -1595,7 +1612,7 @@ struct nfs_rpc_ops { · 3 unmodified lines
15951612 int (*pathconf) (struct nfs_server *, struct nfs_fh *,
15961613 struct nfs_pathconf *);
15971614 int (*set_capabilities)(struct nfs_server *, struct nfs_fh *);
1598− int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, int);
1615+ int (*decode_dirent)(struct xdr_stream *, struct nfs_entry *, bool);
15991616 int (*pgio_rpc_prepare)(struct rpc_task *,
16001617 struct nfs_pgio_header *);
16011618 void (*read_setup)(struct nfs_pgio_header *, struct rpc_message *);

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