Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
nfsfh.h
Go to the documentation of this file.
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 <[email protected]>
12  */
13 #ifndef _LINUX_NFSD_FH_H
14 #define _LINUX_NFSD_FH_H
15 
16 # include <linux/sunrpc/svc.h>
17 #include <uapi/linux/nfsd/nfsfh.h>
18 
19 static inline __u32 ino_t_to_u32(ino_t ino)
20 {
21  return (__u32) ino;
22 }
23 
24 static inline ino_t u32_to_ino_t(__u32 uino)
25 {
26  return (ino_t) uino;
27 }
28 
29 /*
30  * This is the internal representation of an NFS handle used in knfsd.
31  * pre_mtime/post_version will be used to support wcc_attr's in NFSv3.
32  */
33 typedef struct svc_fh {
34  struct knfsd_fh fh_handle; /* FH data */
35  struct dentry * fh_dentry; /* validated dentry */
36  struct svc_export * fh_export; /* export pointer */
37  int fh_maxsize; /* max size for fh_handle */
38 
39  unsigned char fh_locked; /* inode locked by us */
40  unsigned char fh_want_write; /* remount protection taken */
41 
42 #ifdef CONFIG_NFSD_V3
43  unsigned char fh_post_saved; /* post-op attrs saved */
44  unsigned char fh_pre_saved; /* pre-op attrs saved */
45 
46  /* Pre-op attributes saved during fh_lock */
47  __u64 fh_pre_size; /* size before operation */
48  struct timespec fh_pre_mtime; /* mtime before oper */
49  struct timespec fh_pre_ctime; /* ctime before oper */
50  /*
51  * pre-op nfsv4 change attr: note must check IS_I_VERSION(inode)
52  * to find out if it is valid.
53  */
54  u64 fh_pre_change;
55 
56  /* Post-op attributes saved in fh_unlock */
57  struct kstat fh_post_attr; /* full attrs after operation */
58  u64 fh_post_change; /* nfsv4 change; see above */
59 #endif /* CONFIG_NFSD_V3 */
60 
61 } svc_fh;
62 
63 #endif /* _LINUX_NFSD_FH_H */