nfsnode.h (120003) | nfsnode.h (122698) |
---|---|
1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Rick Macklem at The University of Guelph. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 20 unchanged lines hidden (view full) --- 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 * 36 * @(#)nfsnode.h 8.9 (Berkeley) 5/14/95 | 1/* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * Rick Macklem at The University of Guelph. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 20 unchanged lines hidden (view full) --- 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34 * SUCH DAMAGE. 35 * 36 * @(#)nfsnode.h 8.9 (Berkeley) 5/14/95 |
37 * $FreeBSD: head/sys/nfsclient/nfsnode.h 120003 2003-09-12 16:44:40Z phk $ | 37 * $FreeBSD: head/sys/nfsclient/nfsnode.h 122698 2003-11-14 20:54:10Z alfred $ |
38 */ 39 40#ifndef _NFSCLIENT_NFSNODE_H_ 41#define _NFSCLIENT_NFSNODE_H_ 42 43#if !defined(_NFSCLIENT_NFS_H_) && !defined(_KERNEL) 44#include <nfs/nfs.h> 45#endif 46 47/* 48 * Silly rename structure that hangs off the nfsnode until the name 49 * can be removed by nfs_inactive() 50 */ 51struct sillyrename { 52 struct ucred *s_cred; 53 struct vnode *s_dvp; | 38 */ 39 40#ifndef _NFSCLIENT_NFSNODE_H_ 41#define _NFSCLIENT_NFSNODE_H_ 42 43#if !defined(_NFSCLIENT_NFS_H_) && !defined(_KERNEL) 44#include <nfs/nfs.h> 45#endif 46 47/* 48 * Silly rename structure that hangs off the nfsnode until the name 49 * can be removed by nfs_inactive() 50 */ 51struct sillyrename { 52 struct ucred *s_cred; 53 struct vnode *s_dvp; |
54 int (*s_removeit)(struct sillyrename *sp); |
|
54 long s_namlen; 55 char s_name[20]; 56}; 57 58/* 59 * This structure is used to save the logical directory offset to 60 * NFS cookie mappings. 61 * The mappings are stored in a list headed 62 * by n_cookies, as required. 63 * There is one mapping for each NFS_DIRBLKSIZ bytes of directory information 64 * stored in increasing logical offset byte order. 65 */ 66#define NFSNUMCOOKIES 31 67 68struct nfsdmap { 69 LIST_ENTRY(nfsdmap) ndm_list; 70 int ndm_eocookie; | 55 long s_namlen; 56 char s_name[20]; 57}; 58 59/* 60 * This structure is used to save the logical directory offset to 61 * NFS cookie mappings. 62 * The mappings are stored in a list headed 63 * by n_cookies, as required. 64 * There is one mapping for each NFS_DIRBLKSIZ bytes of directory information 65 * stored in increasing logical offset byte order. 66 */ 67#define NFSNUMCOOKIES 31 68 69struct nfsdmap { 70 LIST_ENTRY(nfsdmap) ndm_list; 71 int ndm_eocookie; |
71 nfsuint64 ndm_cookies[NFSNUMCOOKIES]; | 72 union { 73 nfsuint64 ndmu3_cookies[NFSNUMCOOKIES]; 74 uint64_t ndmu4_cookies[NFSNUMCOOKIES]; 75 } ndm_un1; |
72}; 73 | 76}; 77 |
78#define ndm_cookies ndm_un1.ndmu3_cookies 79#define ndm4_cookies ndm_un1.ndmu4_cookies 80 |
|
74/* 75 * The nfsnode is the nfs equivalent to ufs's inode. Any similarity 76 * is purely coincidental. 77 * There is a unique nfsnode allocated for each active file, 78 * each current directory, each mounted-on file, text file, and the root. 79 * An nfsnode is 'named' by its file handle. (nget/nfs_node.c) 80 * If this structure exceeds 256 bytes (it is currently 256 using 4.4BSD-Lite 81 * type definitions), file handles of > 32 bytes should probably be split out --- 12 unchanged lines hidden (view full) --- 94 u_int32_t n_mode; /* ACCESS mode cache */ 95 uid_t n_modeuid; /* credentials having mode */ 96 time_t n_modestamp; /* mode cache timestamp */ 97 time_t n_mtime; /* Prev modify time. */ 98 time_t n_ctime; /* Prev create time. */ 99 time_t n_expiry; /* Lease expiry time */ 100 nfsfh_t *n_fhp; /* NFS File Handle */ 101 struct vnode *n_vnode; /* associated vnode */ | 81/* 82 * The nfsnode is the nfs equivalent to ufs's inode. Any similarity 83 * is purely coincidental. 84 * There is a unique nfsnode allocated for each active file, 85 * each current directory, each mounted-on file, text file, and the root. 86 * An nfsnode is 'named' by its file handle. (nget/nfs_node.c) 87 * If this structure exceeds 256 bytes (it is currently 256 using 4.4BSD-Lite 88 * type definitions), file handles of > 32 bytes should probably be split out --- 12 unchanged lines hidden (view full) --- 101 u_int32_t n_mode; /* ACCESS mode cache */ 102 uid_t n_modeuid; /* credentials having mode */ 103 time_t n_modestamp; /* mode cache timestamp */ 104 time_t n_mtime; /* Prev modify time. */ 105 time_t n_ctime; /* Prev create time. */ 106 time_t n_expiry; /* Lease expiry time */ 107 nfsfh_t *n_fhp; /* NFS File Handle */ 108 struct vnode *n_vnode; /* associated vnode */ |
109 struct vnode *n_dvp; /* parent vnode */ |
|
102 struct lockf *n_lockf; /* Locking record of file */ 103 int n_error; /* Save write error value */ 104 union { 105 struct timespec nf_atim; /* Special file times */ 106 nfsuint64 nd_cookieverf; /* Cookie verifier (dir only) */ | 110 struct lockf *n_lockf; /* Locking record of file */ 111 int n_error; /* Save write error value */ 112 union { 113 struct timespec nf_atim; /* Special file times */ 114 nfsuint64 nd_cookieverf; /* Cookie verifier (dir only) */ |
115 u_char nd4_cookieverf[NFSX_V4VERF]; |
|
107 } n_un1; 108 union { 109 struct timespec nf_mtim; 110 off_t nd_direof; /* Dir. EOF offset cache */ 111 } n_un2; 112 union { 113 struct sillyrename *nf_silly; /* Ptr to silly rename struct */ 114 LIST_HEAD(, nfsdmap) nd_cook; /* cookies */ 115 } n_un3; 116 short n_fhsize; /* size in bytes, of fh */ 117 short n_flag; /* Flag for locking.. */ 118 nfsfh_t n_fh; /* Small File Handle */ 119 struct lock n_rslock; | 116 } n_un1; 117 union { 118 struct timespec nf_mtim; 119 off_t nd_direof; /* Dir. EOF offset cache */ 120 } n_un2; 121 union { 122 struct sillyrename *nf_silly; /* Ptr to silly rename struct */ 123 LIST_HEAD(, nfsdmap) nd_cook; /* cookies */ 124 } n_un3; 125 short n_fhsize; /* size in bytes, of fh */ 126 short n_flag; /* Flag for locking.. */ 127 nfsfh_t n_fh; /* Small File Handle */ 128 struct lock n_rslock; |
129 struct nfs4_fctx n_rfc; 130 struct nfs4_fctx n_wfc; 131 /* 132 * The last component name is needed for the NFSv4 OPEN 133 * operation. 134 */ 135 u_char *n_name; 136 uint32_t n_namelen; |
|
120}; 121 122#define n_atim n_un1.nf_atim 123#define n_mtim n_un2.nf_mtim 124#define n_sillyrename n_un3.nf_silly 125#define n_cookieverf n_un1.nd_cookieverf | 137}; 138 139#define n_atim n_un1.nf_atim 140#define n_mtim n_un2.nf_mtim 141#define n_sillyrename n_un3.nf_silly 142#define n_cookieverf n_un1.nd_cookieverf |
143#define n4_cookieverf n_un1.nd4_cookieverf |
|
126#define n_direofoffset n_un2.nd_direof 127#define n_cookies n_un3.nd_cook 128 129/* 130 * Flags for n_flag 131 */ 132#define NFLUSHWANT 0x0001 /* Want wakeup from a flush in prog. */ 133#define NFLUSHINPROG 0x0002 /* Avoid multiple calls to vinvalbuf() */ 134#define NMODIFIED 0x0004 /* Might have a modified buffer in bio */ 135#define NWRITEERR 0x0008 /* Flag write errors so close will know */ 136/* 0x20, 0x40, 0x80 free */ 137#define NACC 0x0100 /* Special file accessed */ 138#define NUPD 0x0200 /* Special file updated */ 139#define NCHG 0x0400 /* Special file times changed */ | 144#define n_direofoffset n_un2.nd_direof 145#define n_cookies n_un3.nd_cook 146 147/* 148 * Flags for n_flag 149 */ 150#define NFLUSHWANT 0x0001 /* Want wakeup from a flush in prog. */ 151#define NFLUSHINPROG 0x0002 /* Avoid multiple calls to vinvalbuf() */ 152#define NMODIFIED 0x0004 /* Might have a modified buffer in bio */ 153#define NWRITEERR 0x0008 /* Flag write errors so close will know */ 154/* 0x20, 0x40, 0x80 free */ 155#define NACC 0x0100 /* Special file accessed */ 156#define NUPD 0x0200 /* Special file updated */ 157#define NCHG 0x0400 /* Special file times changed */ |
158#define NCREATED 0x0800 /* Opened by nfs_create() */ 159#define NTRUNCATE 0x1000 /* Opened by nfs_setattr() */ |
|
140 141/* 142 * Convert between nfsnode pointers and vnode pointers 143 */ 144#define VTONFS(vp) ((struct nfsnode *)(vp)->v_data) 145#define NFSTOV(np) ((struct vnode *)(np)->n_vnode) 146 147/* --- 29 unchanged lines hidden (view full) --- 177 178 (void)lockmgr(&np->n_rslock, LK_RELEASE, NULL, td); 179} 180 181extern vop_t **fifo_nfsnodeop_p; 182extern vop_t **nfs_vnodeop_p; 183extern vop_t **spec_nfsnodeop_p; 184 | 160 161/* 162 * Convert between nfsnode pointers and vnode pointers 163 */ 164#define VTONFS(vp) ((struct nfsnode *)(vp)->v_data) 165#define NFSTOV(np) ((struct vnode *)(np)->n_vnode) 166 167/* --- 29 unchanged lines hidden (view full) --- 197 198 (void)lockmgr(&np->n_rslock, LK_RELEASE, NULL, td); 199} 200 201extern vop_t **fifo_nfsnodeop_p; 202extern vop_t **nfs_vnodeop_p; 203extern vop_t **spec_nfsnodeop_p; 204 |
205extern vop_t **fifo_nfs4nodeop_p; 206extern vop_t **nfs4_vnodeop_p; 207extern vop_t **spec_nfs4nodeop_p; 208 |
|
185/* 186 * Prototypes for NFS vnode operations 187 */ 188int nfs_getpages(struct vop_getpages_args *); 189int nfs_putpages(struct vop_putpages_args *); 190int nfs_write(struct vop_write_args *); 191int nfs_inactive(struct vop_inactive_args *); 192int nfs_reclaim(struct vop_reclaim_args *); 193 194/* other stuff */ 195int nfs_removeit(struct sillyrename *); | 209/* 210 * Prototypes for NFS vnode operations 211 */ 212int nfs_getpages(struct vop_getpages_args *); 213int nfs_putpages(struct vop_putpages_args *); 214int nfs_write(struct vop_write_args *); 215int nfs_inactive(struct vop_inactive_args *); 216int nfs_reclaim(struct vop_reclaim_args *); 217 218/* other stuff */ 219int nfs_removeit(struct sillyrename *); |
220int nfs4_removeit(struct sillyrename *); |
|
196int nfs_nget(struct mount *, nfsfh_t *, int, struct nfsnode **); 197nfsuint64 *nfs_getcookie(struct nfsnode *, off_t, int); | 221int nfs_nget(struct mount *, nfsfh_t *, int, struct nfsnode **); 222nfsuint64 *nfs_getcookie(struct nfsnode *, off_t, int); |
223uint64_t *nfs4_getcookie(struct nfsnode *, off_t, int); |
|
198void nfs_invaldir(struct vnode *); | 224void nfs_invaldir(struct vnode *); |
225void nfs4_invaldir(struct vnode *); |
|
199 200#endif /* _KERNEL */ 201 202#endif | 226 227#endif /* _KERNEL */ 228 229#endif |