History

UAPI: (Scripted) Disintegrate include/linux/nfsd

David Howells committed 14 years ago

Commit 616d1ca1 parent 9e2d86511 files · +246 −203Browse files

Unified · Split

11 files
  1. include/linux/nfsd/Kbuild +0 −5
  2. include/linux/nfsd/debug.h +1 −30
  3. include/linux/nfsd/export.h +1 −51
  4. include/linux/nfsd/nfsfh.h +1 −110
  5. include/linux/nfsd/stats.h +1 −7
  6. include/uapi/linux/nfsd/Kbuild +5 −0
  7. include/uapi/linux/nfsd/cld.h +0 −0
  8. include/uapi/linux/nfsd/debug.h +40 −0
  9. include/uapi/linux/nfsd/export.h +58 −0
  10. include/uapi/linux/nfsd/nfsfh.h +122 −0
  11. include/uapi/linux/nfsd/stats.h +17 −0
include/linux/nfsd/Kbuild+0−5
@@ -1,5 +0,0 @@
1−header-y += cld.h
2−header-y += debug.h
3−header-y += export.h
4−header-y += nfsfh.h
5−header-y += stats.h
include/linux/nfsd/debug.h+1−30
@@ -5,44 +5,15 @@ · 4 unmodified lines
55 *
66 * Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de>
77 */
8−
98 #ifndef LINUX_NFSD_DEBUG_H
109 #define LINUX_NFSD_DEBUG_H
1110
12−#include <linux/sunrpc/debug.h>
11+#include <uapi/linux/nfsd/debug.h>
1312
14−/*
15− * Enable debugging for nfsd.
16− * Requires RPC_DEBUG.
17− */
18−#ifdef RPC_DEBUG
19−# define NFSD_DEBUG 1
20−#endif
21−
22−/*
23− * knfsd debug flags
24− */
25−#define NFSDDBG_SOCK 0x0001
26−#define NFSDDBG_FH 0x0002
27−#define NFSDDBG_EXPORT 0x0004
28−#define NFSDDBG_SVC 0x0008
29−#define NFSDDBG_PROC 0x0010
30−#define NFSDDBG_FILEOP 0x0020
31−#define NFSDDBG_AUTH 0x0040
32−#define NFSDDBG_REPCACHE 0x0080
33−#define NFSDDBG_XDR 0x0100
34−#define NFSDDBG_LOCKD 0x0200
35−#define NFSDDBG_ALL 0x7FFF
36−#define NFSDDBG_NOCHANGE 0xFFFF
37−
38−
39−#ifdef __KERNEL__
4013 # undef ifdebug
4114 # ifdef NFSD_DEBUG
4215 # define ifdebug(flag) if (nfsd_debug & NFSDDBG_##flag)
4316 # else
4417 # define ifdebug(flag) if (0)
4518 # endif
46−#endif /* __KERNEL__ */
47−
4819 #endif /* LINUX_NFSD_DEBUG_H */
include/linux/nfsd/export.h+1−51
@@ -6,58 +6,11 @@ · 5 unmodified lines
66 *
77 * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de>
88 */
9−
109 #ifndef NFSD_EXPORT_H
1110 #define NFSD_EXPORT_H
1211
13−# include <linux/types.h>
14−#ifdef __KERNEL__
1512 # include <linux/nfsd/nfsfh.h>
16−#endif
17−
18−/*
19− * Important limits for the exports stuff.
20− */
21−#define NFSCLNT_IDMAX 1024
22−#define NFSCLNT_ADDRMAX 16
23−#define NFSCLNT_KEYMAX 32
24−
25−/*
26− * Export flags.
27− */
28−#define NFSEXP_READONLY 0x0001
29−#define NFSEXP_INSECURE_PORT 0x0002
30−#define NFSEXP_ROOTSQUASH 0x0004
31−#define NFSEXP_ALLSQUASH 0x0008
32−#define NFSEXP_ASYNC 0x0010
33−#define NFSEXP_GATHERED_WRITES 0x0020
34−/* 40 80 100 currently unused */
35−#define NFSEXP_NOHIDE 0x0200
36−#define NFSEXP_NOSUBTREECHECK 0x0400
37−#define NFSEXP_NOAUTHNLM 0x0800 /* Don't authenticate NLM requests - just trust */
38−#define NFSEXP_MSNFS 0x1000 /* do silly things that MS clients expect; no longer supported */
39−#define NFSEXP_FSID 0x2000
40−#define NFSEXP_CROSSMOUNT 0x4000
41−#define NFSEXP_NOACL 0x8000 /* reserved for possible ACL related use */
42−/*
43− * The NFSEXP_V4ROOT flag causes the kernel to give access only to NFSv4
44− * clients, and only to the single directory that is the root of the
45− * export; further lookup and readdir operations are treated as if every
46− * subdirectory was a mountpoint, and ignored if they are not themselves
47− * exported. This is used by nfsd and mountd to construct the NFSv4
48− * pseudofilesystem, which provides access only to paths leading to each
49− * exported filesystem.
50− */
51−#define NFSEXP_V4ROOT 0x10000
52−/* All flags that we claim to support. (Note we don't support NOACL.) */
53−#define NFSEXP_ALLFLAGS 0x17E3F
54−
55−/* The flags that may vary depending on security flavor: */
56−#define NFSEXP_SECINFO_FLAGS (NFSEXP_READONLY | NFSEXP_ROOTSQUASH \
57− | NFSEXP_ALLSQUASH \
58− | NFSEXP_INSECURE_PORT)
59−
60−#ifdef __KERNEL__
13+#include <uapi/linux/nfsd/export.h>
6114
6215 /*
6316 * FS Locations
@@ -154,7 +107,4 @@ static inline void exp_get(struct svc_export *exp) · 90 unmodified lines
154107 }
155108 struct svc_export * rqst_exp_find(struct svc_rqst *, int, u32 *);
156109
157−#endif /* __KERNEL__ */
158−
159110 #endif /* NFSD_EXPORT_H */
160−
include/linux/nfsd/nfsfh.h+1−110
@@ -10,117 +10,11 @@ · 9 unmodified lines
1010 *
1111 * Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de>
1212 */
13−
1413 #ifndef _LINUX_NFSD_FH_H
1514 #define _LINUX_NFSD_FH_H
1615
17−#include <linux/types.h>
18−#include <linux/nfs.h>
19−#include <linux/nfs2.h>
20−#include <linux/nfs3.h>
21−#include <linux/nfs4.h>
22−#ifdef __KERNEL__
2316 # include <linux/sunrpc/svc.h>
24−#endif
25−
26−/*
27− * This is the old "dentry style" Linux NFSv2 file handle.
28− *
29− * The xino and xdev fields are currently used to transport the
30− * ino/dev of the exported inode.
31− */
32−struct nfs_fhbase_old {
33− __u32 fb_dcookie; /* dentry cookie - always 0xfeebbaca */
34− __u32 fb_ino; /* our inode number */
35− __u32 fb_dirino; /* dir inode number, 0 for directories */
36− __u32 fb_dev; /* our device */
37− __u32 fb_xdev;
38− __u32 fb_xino;
39− __u32 fb_generation;
40−};
41−
42−/*
43− * This is the new flexible, extensible style NFSv2/v3 file handle.
44− * by Neil Brown <neilb@cse.unsw.edu.au> - March 2000
45− *
46− * The file handle starts with a sequence of four-byte words.
47− * The first word contains a version number (1) and three descriptor bytes
48− * that tell how the remaining 3 variable length fields should be handled.
49− * These three bytes are auth_type, fsid_type and fileid_type.
50− *
51− * All four-byte values are in host-byte-order.
52− *
53− * The auth_type field specifies how the filehandle can be authenticated
54− * This might allow a file to be confirmed to be in a writable part of a
55− * filetree without checking the path from it up to the root.
56− * Current values:
57− * 0 - No authentication. fb_auth is 0 bytes long
58− * Possible future values:
59− * 1 - 4 bytes taken from MD5 hash of the remainer of the file handle
60− * prefixed by a secret and with the important export flags.
61− *
62− * The fsid_type identifies how the filesystem (or export point) is
63− * encoded.
64− * Current values:
65− * 0 - 4 byte device id (ms-2-bytes major, ls-2-bytes minor), 4byte inode number
66− * NOTE: we cannot use the kdev_t device id value, because kdev_t.h
67− * says we mustn't. We must break it up and reassemble.
68− * 1 - 4 byte user specified identifier
69− * 2 - 4 byte major, 4 byte minor, 4 byte inode number - DEPRECATED
70− * 3 - 4 byte device id, encoded for user-space, 4 byte inode number
71− * 4 - 4 byte inode number and 4 byte uuid
72− * 5 - 8 byte uuid
73− * 6 - 16 byte uuid
74− * 7 - 8 byte inode number and 16 byte uuid
75− *
76− * The fileid_type identified how the file within the filesystem is encoded.
77− * This is (will be) passed to, and set by, the underlying filesystem if it supports
78− * filehandle operations. The filesystem must not use the value '0' or '0xff' and may
79− * only use the values 1 and 2 as defined below:
80− * Current values:
81− * 0 - The root, or export point, of the filesystem. fb_fileid is 0 bytes.
82− * 1 - 32bit inode number, 32 bit generation number.
83− * 2 - 32bit inode number, 32 bit generation number, 32 bit parent directory inode number.
84− *
85− */
86−struct nfs_fhbase_new {
87− __u8 fb_version; /* == 1, even => nfs_fhbase_old */
88− __u8 fb_auth_type;
89− __u8 fb_fsid_type;
90− __u8 fb_fileid_type;
91− __u32 fb_auth[1];
92−/* __u32 fb_fsid[0]; floating */
93−/* __u32 fb_fileid[0]; floating */
94−};
95−
96−struct knfsd_fh {
97− unsigned int fh_size; /* significant for NFSv3.
98− * Points to the current size while building
99− * a new file handle
100− */
101− union {
102− struct nfs_fhbase_old fh_old;
103− __u32 fh_pad[NFS4_FHSIZE/4];
104− struct nfs_fhbase_new fh_new;
105− } fh_base;
106−};
107−
108−#define ofh_dcookie fh_base.fh_old.fb_dcookie
109−#define ofh_ino fh_base.fh_old.fb_ino
110−#define ofh_dirino fh_base.fh_old.fb_dirino
111−#define ofh_dev fh_base.fh_old.fb_dev
112−#define ofh_xdev fh_base.fh_old.fb_xdev
113−#define ofh_xino fh_base.fh_old.fb_xino
114−#define ofh_generation fh_base.fh_old.fb_generation
115−
116−#define fh_version fh_base.fh_new.fb_version
117−#define fh_fsid_type fh_base.fh_new.fb_fsid_type
118−#define fh_auth_type fh_base.fh_new.fb_auth_type
119−#define fh_fileid_type fh_base.fh_new.fb_fileid_type
120−#define fh_auth fh_base.fh_new.fb_auth
121−#define fh_fsid fh_base.fh_new.fb_auth
122−
123−#ifdef __KERNEL__
17+#include <uapi/linux/nfsd/nfsfh.h>
12418
12519 static inline __u32 ino_t_to_u32(ino_t ino)
12620 {
@@ -166,7 +60,4 @@ typedef struct svc_fh { · 39 unmodified lines
16660
16761 } svc_fh;
16862
169−#endif /* __KERNEL__ */
170−
171−
17263 #endif /* _LINUX_NFSD_FH_H */
include/linux/nfsd/stats.h+1−7
@@ -5,16 +5,11 @@ · 4 unmodified lines
55 *
66 * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
77 */
8−
98 #ifndef LINUX_NFSD_STATS_H
109 #define LINUX_NFSD_STATS_H
1110
12−#include <linux/nfs4.h>
13−
14−/* thread usage wraps very million seconds (approx one fortnight) */
15−#define NFSD_USAGE_WRAP (HZ*1000000)
11+#include <uapi/linux/nfsd/stats.h>
1612
17−#ifdef __KERNEL__
1813
1914 struct nfsd_stats {
2015 unsigned int rchits; /* repcache hits */
@@ -47,5 +42,4 @@ extern struct svc_stat nfsd_svcstats; · 26 unmodified lines
4742 void nfsd_stat_init(void);
4843 void nfsd_stat_shutdown(void);
4944
50−#endif /* __KERNEL__ */
5145 #endif /* LINUX_NFSD_STATS_H */
include/uapi/linux/nfsd/Kbuild+5−0
@@ -1 +1,6 @@
11 # UAPI Header export list
2+header-y += cld.h
3+header-y += debug.h
4+header-y += export.h
5+header-y += nfsfh.h
6+header-y += stats.h
include/uapi/linux/nfsd/cld.hrenamed from include/linux/nfsd/cld.h+0−0

File renamed without changes.

include/uapi/linux/nfsd/debug.h+40−0
@@ -0,0 +1,40 @@
1+/*
2+ * linux/include/linux/nfsd/debug.h
3+ *
4+ * Debugging-related stuff for nfsd
5+ *
6+ * Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de>
7+ */
8+
9+#ifndef _UAPILINUX_NFSD_DEBUG_H
10+#define _UAPILINUX_NFSD_DEBUG_H
11+
12+#include <linux/sunrpc/debug.h>
13+
14+/*
15+ * Enable debugging for nfsd.
16+ * Requires RPC_DEBUG.
17+ */
18+#ifdef RPC_DEBUG
19+# define NFSD_DEBUG 1
20+#endif
21+
22+/*
23+ * knfsd debug flags
24+ */
25+#define NFSDDBG_SOCK 0x0001
26+#define NFSDDBG_FH 0x0002
27+#define NFSDDBG_EXPORT 0x0004
28+#define NFSDDBG_SVC 0x0008
29+#define NFSDDBG_PROC 0x0010
30+#define NFSDDBG_FILEOP 0x0020
31+#define NFSDDBG_AUTH 0x0040
32+#define NFSDDBG_REPCACHE 0x0080
33+#define NFSDDBG_XDR 0x0100
34+#define NFSDDBG_LOCKD 0x0200
35+#define NFSDDBG_ALL 0x7FFF
36+#define NFSDDBG_NOCHANGE 0xFFFF
37+
38+
39+
40+#endif /* _UAPILINUX_NFSD_DEBUG_H */
include/uapi/linux/nfsd/export.h+58−0
@@ -0,0 +1,58 @@
1+/*
2+ * include/linux/nfsd/export.h
3+ *
4+ * Public declarations for NFS exports. The definitions for the
5+ * syscall interface are in nfsctl.h
6+ *
7+ * Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de>
8+ */
9+
10+#ifndef _UAPINFSD_EXPORT_H
11+#define _UAPINFSD_EXPORT_H
12+
13+# include <linux/types.h>
14+
15+/*
16+ * Important limits for the exports stuff.
17+ */
18+#define NFSCLNT_IDMAX 1024
19+#define NFSCLNT_ADDRMAX 16
20+#define NFSCLNT_KEYMAX 32
21+
22+/*
23+ * Export flags.
24+ */
25+#define NFSEXP_READONLY 0x0001
26+#define NFSEXP_INSECURE_PORT 0x0002
27+#define NFSEXP_ROOTSQUASH 0x0004
28+#define NFSEXP_ALLSQUASH 0x0008
29+#define NFSEXP_ASYNC 0x0010
30+#define NFSEXP_GATHERED_WRITES 0x0020
31+/* 40 80 100 currently unused */
32+#define NFSEXP_NOHIDE 0x0200
33+#define NFSEXP_NOSUBTREECHECK 0x0400
34+#define NFSEXP_NOAUTHNLM 0x0800 /* Don't authenticate NLM requests - just trust */
35+#define NFSEXP_MSNFS 0x1000 /* do silly things that MS clients expect; no longer supported */
36+#define NFSEXP_FSID 0x2000
37+#define NFSEXP_CROSSMOUNT 0x4000
38+#define NFSEXP_NOACL 0x8000 /* reserved for possible ACL related use */
39+/*
40+ * The NFSEXP_V4ROOT flag causes the kernel to give access only to NFSv4
41+ * clients, and only to the single directory that is the root of the
42+ * export; further lookup and readdir operations are treated as if every
43+ * subdirectory was a mountpoint, and ignored if they are not themselves
44+ * exported. This is used by nfsd and mountd to construct the NFSv4
45+ * pseudofilesystem, which provides access only to paths leading to each
46+ * exported filesystem.
47+ */
48+#define NFSEXP_V4ROOT 0x10000
49+/* All flags that we claim to support. (Note we don't support NOACL.) */
50+#define NFSEXP_ALLFLAGS 0x17E3F
51+
52+/* The flags that may vary depending on security flavor: */
53+#define NFSEXP_SECINFO_FLAGS (NFSEXP_READONLY | NFSEXP_ROOTSQUASH \
54+ | NFSEXP_ALLSQUASH \
55+ | NFSEXP_INSECURE_PORT)
56+
57+
58+#endif /* _UAPINFSD_EXPORT_H */
include/uapi/linux/nfsd/nfsfh.h+122−0
@@ -0,0 +1,122 @@
1+/*
2+ * include/linux/nfsd/nfsfh.h
3+ *
4+ * This file describes the layout of the file handles as passed
5+ * over the wire.
6+ *
7+ * Earlier versions of knfsd used to sign file handles using keyed MD5
8+ * or SHA. I've removed this code, because it doesn't give you more
9+ * security than blocking external access to port 2049 on your firewall.
10+ *
11+ * Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de>
12+ */
13+
14+#ifndef _UAPI_LINUX_NFSD_FH_H
15+#define _UAPI_LINUX_NFSD_FH_H
16+
17+#include <linux/types.h>
18+#include <linux/nfs.h>
19+#include <linux/nfs2.h>
20+#include <linux/nfs3.h>
21+#include <linux/nfs4.h>
22+
23+/*
24+ * This is the old "dentry style" Linux NFSv2 file handle.
25+ *
26+ * The xino and xdev fields are currently used to transport the
27+ * ino/dev of the exported inode.
28+ */
29+struct nfs_fhbase_old {
30+ __u32 fb_dcookie; /* dentry cookie - always 0xfeebbaca */
31+ __u32 fb_ino; /* our inode number */
32+ __u32 fb_dirino; /* dir inode number, 0 for directories */
33+ __u32 fb_dev; /* our device */
34+ __u32 fb_xdev;
35+ __u32 fb_xino;
36+ __u32 fb_generation;
37+};
38+
39+/*
40+ * This is the new flexible, extensible style NFSv2/v3 file handle.
41+ * by Neil Brown <neilb@cse.unsw.edu.au> - March 2000
42+ *
43+ * The file handle starts with a sequence of four-byte words.
44+ * The first word contains a version number (1) and three descriptor bytes
45+ * that tell how the remaining 3 variable length fields should be handled.
46+ * These three bytes are auth_type, fsid_type and fileid_type.
47+ *
48+ * All four-byte values are in host-byte-order.
49+ *
50+ * The auth_type field specifies how the filehandle can be authenticated
51+ * This might allow a file to be confirmed to be in a writable part of a
52+ * filetree without checking the path from it up to the root.
53+ * Current values:
54+ * 0 - No authentication. fb_auth is 0 bytes long
55+ * Possible future values:
56+ * 1 - 4 bytes taken from MD5 hash of the remainer of the file handle
57+ * prefixed by a secret and with the important export flags.
58+ *
59+ * The fsid_type identifies how the filesystem (or export point) is
60+ * encoded.
61+ * Current values:
62+ * 0 - 4 byte device id (ms-2-bytes major, ls-2-bytes minor), 4byte inode number
63+ * NOTE: we cannot use the kdev_t device id value, because kdev_t.h
64+ * says we mustn't. We must break it up and reassemble.
65+ * 1 - 4 byte user specified identifier
66+ * 2 - 4 byte major, 4 byte minor, 4 byte inode number - DEPRECATED
67+ * 3 - 4 byte device id, encoded for user-space, 4 byte inode number
68+ * 4 - 4 byte inode number and 4 byte uuid
69+ * 5 - 8 byte uuid
70+ * 6 - 16 byte uuid
71+ * 7 - 8 byte inode number and 16 byte uuid
72+ *
73+ * The fileid_type identified how the file within the filesystem is encoded.
74+ * This is (will be) passed to, and set by, the underlying filesystem if it supports
75+ * filehandle operations. The filesystem must not use the value '0' or '0xff' and may
76+ * only use the values 1 and 2 as defined below:
77+ * Current values:
78+ * 0 - The root, or export point, of the filesystem. fb_fileid is 0 bytes.
79+ * 1 - 32bit inode number, 32 bit generation number.
80+ * 2 - 32bit inode number, 32 bit generation number, 32 bit parent directory inode number.
81+ *
82+ */
83+struct nfs_fhbase_new {
84+ __u8 fb_version; /* == 1, even => nfs_fhbase_old */
85+ __u8 fb_auth_type;
86+ __u8 fb_fsid_type;
87+ __u8 fb_fileid_type;
88+ __u32 fb_auth[1];
89+/* __u32 fb_fsid[0]; floating */
90+/* __u32 fb_fileid[0]; floating */
91+};
92+
93+struct knfsd_fh {
94+ unsigned int fh_size; /* significant for NFSv3.
95+ * Points to the current size while building
96+ * a new file handle
97+ */
98+ union {
99+ struct nfs_fhbase_old fh_old;
100+ __u32 fh_pad[NFS4_FHSIZE/4];
101+ struct nfs_fhbase_new fh_new;
102+ } fh_base;
103+};
104+
105+#define ofh_dcookie fh_base.fh_old.fb_dcookie
106+#define ofh_ino fh_base.fh_old.fb_ino
107+#define ofh_dirino fh_base.fh_old.fb_dirino
108+#define ofh_dev fh_base.fh_old.fb_dev
109+#define ofh_xdev fh_base.fh_old.fb_xdev
110+#define ofh_xino fh_base.fh_old.fb_xino
111+#define ofh_generation fh_base.fh_old.fb_generation
112+
113+#define fh_version fh_base.fh_new.fb_version
114+#define fh_fsid_type fh_base.fh_new.fb_fsid_type
115+#define fh_auth_type fh_base.fh_new.fb_auth_type
116+#define fh_fileid_type fh_base.fh_new.fb_fileid_type
117+#define fh_auth fh_base.fh_new.fb_auth
118+#define fh_fsid fh_base.fh_new.fb_auth
119+
120+
121+
122+#endif /* _UAPI_LINUX_NFSD_FH_H */
include/uapi/linux/nfsd/stats.h+17−0
@@ -0,0 +1,17 @@
1+/*
2+ * linux/include/linux/nfsd/stats.h
3+ *
4+ * Statistics for NFS server.
5+ *
6+ * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
7+ */
8+
9+#ifndef _UAPILINUX_NFSD_STATS_H
10+#define _UAPILINUX_NFSD_STATS_H
11+
12+#include <linux/nfs4.h>
13+
14+/* thread usage wraps very million seconds (approx one fortnight) */
15+#define NFSD_USAGE_WRAP (HZ*1000000)
16+
17+#endif /* _UAPILINUX_NFSD_STATS_H */