Skip to content

Commit 8e1d322

Browse files
jtlaytonchucklever
authored andcommitted
nfs_common: make include/linux/nfs4.h include generated nfs4_1.h
In the long run, the NFS development community intends to autogenerate a lot of the XDR handling code. Both the NFS client and server include "include/linux/nfs4.hi". That file was hand-rolled, and some of the symbols in it conflict with the autogenerated symbols. Add a small nfs4_1.x to Documentation that currently just has the necessary definitions for the delstid draft, and generate the relevant header and source files. Make include/linux/nfs4.h include the generated include/linux/sunrpc/xdrgen/nfs4_1.h and remove the conflicting definitions from it and nfs_xdr.h. Signed-off-by: Jeff Layton <[email protected]> Signed-off-by: Chuck Lever <[email protected]>
1 parent 5315030 commit 8e1d322

File tree

7 files changed

+570
-12
lines changed

7 files changed

+570
-12
lines changed

Documentation/sunrpc/xdr/nfs4_1.x

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
/*
2+
* Copyright (c) 2010 IETF Trust and the persons identified
3+
* as the document authors. All rights reserved.
4+
*
5+
* The document authors are identified in RFC 3530 and
6+
* RFC 5661.
7+
*
8+
* Redistribution and use in source and binary forms, with
9+
* or without modification, are permitted provided that the
10+
* following conditions are met:
11+
*
12+
* - Redistributions of source code must retain the above
13+
* copyright notice, this list of conditions and the
14+
* following disclaimer.
15+
*
16+
* - Redistributions in binary form must reproduce the above
17+
* copyright notice, this list of conditions and the
18+
* following disclaimer in the documentation and/or other
19+
* materials provided with the distribution.
20+
*
21+
* - Neither the name of Internet Society, IETF or IETF
22+
* Trust, nor the names of specific contributors, may be
23+
* used to endorse or promote products derived from this
24+
* software without specific prior written permission.
25+
*
26+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
27+
* AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
28+
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
30+
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
31+
* EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
32+
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
33+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
34+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35+
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
36+
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
37+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
38+
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
39+
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
40+
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
41+
*/
42+
43+
pragma header nfs4;
44+
45+
/*
46+
* Basic typedefs for RFC 1832 data type definitions
47+
*/
48+
typedef hyper int64_t;
49+
typedef unsigned int uint32_t;
50+
51+
/*
52+
* Basic data types
53+
*/
54+
typedef uint32_t bitmap4<>;
55+
56+
/*
57+
* Timeval
58+
*/
59+
struct nfstime4 {
60+
int64_t seconds;
61+
uint32_t nseconds;
62+
};
63+
64+
65+
/*
66+
* The following content was extracted from draft-ietf-nfsv4-delstid
67+
*/
68+
69+
typedef bool fattr4_offline;
70+
71+
72+
const FATTR4_OFFLINE = 83;
73+
74+
75+
struct open_arguments4 {
76+
bitmap4 oa_share_access;
77+
bitmap4 oa_share_deny;
78+
bitmap4 oa_share_access_want;
79+
bitmap4 oa_open_claim;
80+
bitmap4 oa_create_mode;
81+
};
82+
83+
84+
enum open_args_share_access4 {
85+
OPEN_ARGS_SHARE_ACCESS_READ = 1,
86+
OPEN_ARGS_SHARE_ACCESS_WRITE = 2,
87+
OPEN_ARGS_SHARE_ACCESS_BOTH = 3
88+
};
89+
90+
91+
enum open_args_share_deny4 {
92+
OPEN_ARGS_SHARE_DENY_NONE = 0,
93+
OPEN_ARGS_SHARE_DENY_READ = 1,
94+
OPEN_ARGS_SHARE_DENY_WRITE = 2,
95+
OPEN_ARGS_SHARE_DENY_BOTH = 3
96+
};
97+
98+
99+
enum open_args_share_access_want4 {
100+
OPEN_ARGS_SHARE_ACCESS_WANT_ANY_DELEG = 3,
101+
OPEN_ARGS_SHARE_ACCESS_WANT_NO_DELEG = 4,
102+
OPEN_ARGS_SHARE_ACCESS_WANT_CANCEL = 5,
103+
OPEN_ARGS_SHARE_ACCESS_WANT_SIGNAL_DELEG_WHEN_RESRC_AVAIL
104+
= 17,
105+
OPEN_ARGS_SHARE_ACCESS_WANT_PUSH_DELEG_WHEN_UNCONTENDED
106+
= 18,
107+
OPEN_ARGS_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS = 20,
108+
OPEN_ARGS_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION = 21
109+
};
110+
111+
112+
enum open_args_open_claim4 {
113+
OPEN_ARGS_OPEN_CLAIM_NULL = 0,
114+
OPEN_ARGS_OPEN_CLAIM_PREVIOUS = 1,
115+
OPEN_ARGS_OPEN_CLAIM_DELEGATE_CUR = 2,
116+
OPEN_ARGS_OPEN_CLAIM_DELEGATE_PREV = 3,
117+
OPEN_ARGS_OPEN_CLAIM_FH = 4,
118+
OPEN_ARGS_OPEN_CLAIM_DELEG_CUR_FH = 5,
119+
OPEN_ARGS_OPEN_CLAIM_DELEG_PREV_FH = 6
120+
};
121+
122+
123+
enum open_args_createmode4 {
124+
OPEN_ARGS_CREATEMODE_UNCHECKED4 = 0,
125+
OPEN_ARGS_CREATE_MODE_GUARDED = 1,
126+
OPEN_ARGS_CREATEMODE_EXCLUSIVE4 = 2,
127+
OPEN_ARGS_CREATE_MODE_EXCLUSIVE4_1 = 3
128+
};
129+
130+
131+
typedef open_arguments4 fattr4_open_arguments;
132+
pragma public fattr4_open_arguments;
133+
134+
135+
%/*
136+
% * Determine what OPEN supports.
137+
% */
138+
const FATTR4_OPEN_ARGUMENTS = 86;
139+
140+
141+
const OPEN4_SHARE_ACCESS_WANT_OPEN_XOR_DELEGATION = 0x200000;
142+
143+
144+
const OPEN4_RESULT_NO_OPEN_STATEID = 0x00000010;
145+
146+
147+
/*
148+
* attributes for the delegation times being
149+
* cached and served by the "client"
150+
*/
151+
typedef nfstime4 fattr4_time_deleg_access;
152+
typedef nfstime4 fattr4_time_deleg_modify;
153+
pragma public fattr4_time_deleg_access;
154+
pragma public fattr4_time_deleg_modify;
155+
156+
157+
%/*
158+
% * New RECOMMENDED Attribute for
159+
% * delegation caching of times
160+
% */
161+
const FATTR4_TIME_DELEG_ACCESS = 84;
162+
const FATTR4_TIME_DELEG_MODIFY = 85;
163+
164+
165+
const OPEN4_SHARE_ACCESS_WANT_DELEG_TIMESTAMPS = 0x100000;
166+

fs/nfsd/Makefile

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,23 @@ nfsd-$(CONFIG_NFSD_V2) += nfsproc.o nfsxdr.o
1818
nfsd-$(CONFIG_NFSD_V2_ACL) += nfs2acl.o
1919
nfsd-$(CONFIG_NFSD_V3_ACL) += nfs3acl.o
2020
nfsd-$(CONFIG_NFSD_V4) += nfs4proc.o nfs4xdr.o nfs4state.o nfs4idmap.o \
21-
nfs4acl.o nfs4callback.o nfs4recover.o
21+
nfs4acl.o nfs4callback.o nfs4recover.o nfs4xdr_gen.o
2222
nfsd-$(CONFIG_NFSD_PNFS) += nfs4layouts.o
2323
nfsd-$(CONFIG_NFSD_BLOCKLAYOUT) += blocklayout.o blocklayoutxdr.o
2424
nfsd-$(CONFIG_NFSD_SCSILAYOUT) += blocklayout.o blocklayoutxdr.o
2525
nfsd-$(CONFIG_NFSD_FLEXFILELAYOUT) += flexfilelayout.o flexfilelayoutxdr.o
2626
nfsd-$(CONFIG_NFS_LOCALIO) += localio.o
27+
28+
29+
.PHONY: xdrgen
30+
31+
xdrgen: ../../include/linux/sunrpc/xdrgen/nfs4_1.h nfs4xdr_gen.h nfs4xdr_gen.c
32+
33+
../../include/linux/sunrpc/xdrgen/nfs4_1.h: ../../Documentation/sunrpc/xdr/nfs4_1.x
34+
../../tools/net/sunrpc/xdrgen/xdrgen definitions $< > $@
35+
36+
nfs4xdr_gen.h: ../../Documentation/sunrpc/xdr/nfs4_1.x
37+
../../tools/net/sunrpc/xdrgen/xdrgen declarations $< > $@
38+
39+
nfs4xdr_gen.c: ../../Documentation/sunrpc/xdr/nfs4_1.x
40+
../../tools/net/sunrpc/xdrgen/xdrgen source $< > $@

0 commit comments

Comments
 (0)