[BACK]Return to nfs_var.h CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / nfs

Annotation of src/sys/nfs/nfs_var.h, Revision 1.65

1.65    ! thorpej     1: /*     $NetBSD: nfs_var.h,v 1.64 2006/12/27 12:10:09 yamt Exp $        */
1.1       christos    2:
1.15      christos    3: /*-
                      4:  * Copyright (c) 1996 The NetBSD Foundation, Inc.
                      5:  * All rights reserved.
                      6:  *
                      7:  * This code is derived from software contributed to The NetBSD Foundation
                      8:  * by Christos Zoulas.
1.1       christos    9:  *
                     10:  * Redistribution and use in source and binary forms, with or without
                     11:  * modification, are permitted provided that the following conditions
                     12:  * are met:
                     13:  * 1. Redistributions of source code must retain the above copyright
                     14:  *    notice, this list of conditions and the following disclaimer.
                     15:  * 2. Redistributions in binary form must reproduce the above copyright
                     16:  *    notice, this list of conditions and the following disclaimer in the
                     17:  *    documentation and/or other materials provided with the distribution.
                     18:  * 3. All advertising materials mentioning features or use of this software
                     19:  *    must display the following acknowledgement:
1.15      christos   20:  *        This product includes software developed by the NetBSD
                     21:  *        Foundation, Inc. and its contributors.
                     22:  * 4. Neither the name of The NetBSD Foundation nor the names of its
                     23:  *    contributors may be used to endorse or promote products derived
                     24:  *    from this software without specific prior written permission.
1.1       christos   25:  *
1.15      christos   26:  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
                     27:  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     28:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     29:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
                     30:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     31:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     32:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     33:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     34:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     35:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     36:  * POSSIBILITY OF SUCH DAMAGE.
1.1       christos   37:  */
                     38:
1.3       fvdl       39: /*
                     40:  * XXX needs <nfs/rpcv2.h> and <nfs/nfs.h> because of typedefs
                     41:  */
1.27      thorpej    42:
1.28      christos   43: #ifdef _KERNEL
1.27      thorpej    44: #include <sys/mallocvar.h>
1.37      yamt       45: #include <sys/pool.h>
1.27      thorpej    46:
                     47: MALLOC_DECLARE(M_NFSREQ);
                     48: MALLOC_DECLARE(M_NFSMNT);
                     49: MALLOC_DECLARE(M_NFSUID);
                     50: MALLOC_DECLARE(M_NFSD);
                     51: MALLOC_DECLARE(M_NFSDIROFF);
                     52: MALLOC_DECLARE(M_NFSBIGFH);
                     53: MALLOC_DECLARE(M_NQLEASE);
1.3       fvdl       54:
1.1       christos   55: struct vnode;
                     56: struct uio;
                     57: struct proc;
                     58: struct buf;
                     59: struct nfs_diskless;
                     60: struct sockaddr_in;
                     61: struct nfs_dlmount;
                     62: struct vnode;
                     63: struct nfsd;
                     64: struct mbuf;
                     65: struct file;
                     66: struct nfssvc_sock;
                     67: struct nfsmount;
                     68: struct socket;
                     69: struct nfsreq;
                     70: struct vattr;
                     71: struct nameidata;
                     72: struct nfsnode;
                     73: struct sillyrename;
                     74: struct componentname;
1.2       christos   75: struct nfsd_srvargs;
1.3       fvdl       76: struct nfsrv_descript;
                     77: struct nfs_fattr;
1.10      fvdl       78: struct nfsdircache;
1.13      mrg        79: union nethostaddr;
1.1       christos   80:
                     81: /* nfs_bio.c */
1.59      elad       82: int nfs_bioread(struct vnode *, struct uio *, int, kauth_cred_t, int);
1.57      yamt       83: struct buf *nfs_getcacheblk(struct vnode *, daddr_t, int, struct lwp *);
1.59      elad       84: int nfs_vinvalbuf(struct vnode *, int, kauth_cred_t, struct lwp *, int);
                     85: int nfs_flushstalebuf(struct vnode *, kauth_cred_t, struct lwp *, int);
1.47      yamt       86: #define        NFS_FLUSHSTALEBUF_MYWRITE       1       /* assume writes are ours */
1.57      yamt       87: int nfs_asyncio(struct buf *);
                     88: int nfs_doio(struct buf *);
1.1       christos   89:
                     90: /* nfs_boot.c */
1.9       gwr        91: /* see nfsdiskless.h */
1.25      jdolecek   92:
                     93: /* nfs_kq.c */
1.57      yamt       94: void nfs_kqinit(void);
1.1       christos   95:
                     96: /* nfs_node.c */
1.57      yamt       97: void nfs_nhinit(void);
                     98: void nfs_nhreinit(void);
                     99: void nfs_nhdone(void);
                    100: int nfs_nget1(struct mount *, nfsfh_t *, int, struct nfsnode **, int);
1.43      yamt      101: #define        nfs_nget(mp, fhp, fhsize, npp) \
                    102:        nfs_nget1((mp), (fhp), (fhsize), (npp), 0)
1.1       christos  103:
                    104: /* nfs_vnops.c */
1.59      elad      105: int nfs_null(struct vnode *, kauth_cred_t, struct lwp *);
                    106: int nfs_setattrrpc(struct vnode *, struct vattr *, kauth_cred_t, struct lwp *);
                    107: int nfs_readlinkrpc(struct vnode *, struct uio *, kauth_cred_t);
1.57      yamt      108: int nfs_readrpc(struct vnode *, struct uio *);
1.65    ! thorpej   109: int nfs_writerpc(struct vnode *, struct uio *, int *, bool, bool *);
1.57      yamt      110: int nfs_mknodrpc(struct vnode *, struct vnode **, struct componentname *,
                    111:        struct vattr *);
                    112: int nfs_removeit(struct sillyrename *);
1.59      elad      113: int nfs_removerpc(struct vnode *, const char *, int, kauth_cred_t,
1.57      yamt      114:        struct lwp *);
                    115: int nfs_renameit(struct vnode *, struct componentname *, struct sillyrename *);
                    116: int nfs_renamerpc(struct vnode *, const char *, int, struct vnode *,
1.59      elad      117:        const char *, int, kauth_cred_t, struct lwp *);
                    118: int nfs_readdirrpc(struct vnode *, struct uio *, kauth_cred_t);
                    119: int nfs_readdirplusrpc(struct vnode *, struct uio *, kauth_cred_t);
1.62      yamt      120: int nfs_sillyrename(struct vnode *, struct vnode *, struct componentname *,
1.65    ! thorpej   121:        bool);
1.59      elad      122: int nfs_lookitup(struct vnode *, const char *, int, kauth_cred_t,
1.57      yamt      123:        struct lwp *, struct nfsnode **);
                    124: int nfs_commit(struct vnode *, off_t, uint32_t, struct lwp *);
1.59      elad      125: int nfs_flush(struct vnode *, kauth_cred_t, int, struct lwp *, int);
1.1       christos  126:
                    127: /* nfs_serv.c */
1.57      yamt      128: int nfsrv3_access(struct nfsrv_descript *, struct nfssvc_sock *,
                    129:        struct lwp *, struct mbuf **);
                    130: int nfsrv_getattr(struct nfsrv_descript *, struct nfssvc_sock *,
                    131:        struct lwp *, struct mbuf **);
                    132: int nfsrv_setattr(struct nfsrv_descript *, struct nfssvc_sock *,
                    133:        struct lwp *, struct mbuf **);
                    134: int nfsrv_lookup(struct nfsrv_descript *, struct nfssvc_sock *,
                    135:        struct lwp *, struct mbuf **);
                    136: int nfsrv_readlink(struct nfsrv_descript *, struct nfssvc_sock *,
                    137:        struct lwp *, struct mbuf **);
                    138: int nfsrv_read(struct nfsrv_descript *, struct nfssvc_sock *,
                    139:        struct lwp *, struct mbuf **);
                    140: int nfsrv_write(struct nfsrv_descript *, struct nfssvc_sock *,
                    141:        struct lwp *, struct mbuf **);
                    142: int nfsrv_writegather(struct nfsrv_descript **, struct nfssvc_sock *,
                    143:        struct lwp *, struct mbuf **);
                    144: void nfsrvw_coalesce(struct nfsrv_descript *, struct nfsrv_descript *);
                    145: int nfsrv_create(struct nfsrv_descript *, struct nfssvc_sock *,
                    146:        struct lwp *, struct mbuf **);
                    147: int nfsrv_mknod(struct nfsrv_descript *, struct nfssvc_sock *,
                    148:        struct lwp *, struct mbuf **);
                    149: int nfsrv_remove(struct nfsrv_descript *, struct nfssvc_sock *,
                    150:        struct lwp *, struct mbuf **);
                    151: int nfsrv_rename(struct nfsrv_descript *, struct nfssvc_sock *,
                    152:        struct lwp *, struct mbuf **);
                    153: int nfsrv_link(struct nfsrv_descript *, struct nfssvc_sock *,
                    154:        struct lwp *, struct mbuf **);
                    155: int nfsrv_symlink(struct nfsrv_descript *, struct nfssvc_sock *,
                    156:        struct lwp *, struct mbuf **);
                    157: int nfsrv_mkdir(struct nfsrv_descript *, struct nfssvc_sock *,
                    158:        struct lwp *, struct mbuf **);
                    159: int nfsrv_rmdir(struct nfsrv_descript *, struct nfssvc_sock *,
                    160:        struct lwp *, struct mbuf **);
                    161: int nfsrv_readdir(struct nfsrv_descript *, struct nfssvc_sock *,
                    162:        struct lwp *, struct mbuf **);
                    163: int nfsrv_readdirplus(struct nfsrv_descript *, struct nfssvc_sock *,
                    164:        struct lwp *, struct mbuf **);
                    165: int nfsrv_commit(struct nfsrv_descript *, struct nfssvc_sock *,
                    166:        struct lwp *, struct mbuf **);
                    167: int nfsrv_statfs(struct nfsrv_descript *, struct nfssvc_sock *,
                    168:        struct lwp *, struct mbuf **);
                    169: int nfsrv_fsinfo(struct nfsrv_descript *, struct nfssvc_sock *,
                    170:        struct lwp *, struct mbuf **);
                    171: int nfsrv_pathconf(struct nfsrv_descript *, struct nfssvc_sock *,
                    172:        struct lwp *, struct mbuf **);
                    173: int nfsrv_null(struct nfsrv_descript *, struct nfssvc_sock *,
                    174:        struct lwp *, struct mbuf **);
                    175: int nfsrv_noop(struct nfsrv_descript *, struct nfssvc_sock *,
                    176:        struct lwp *, struct mbuf **);
1.59      elad      177: int nfsrv_access(struct vnode *, int, kauth_cred_t, int, struct lwp *, int);
1.1       christos  178:
                    179: /* nfs_socket.c */
1.57      yamt      180: int nfs_connect(struct nfsmount *, struct nfsreq *, struct lwp *);
                    181: int nfs_reconnect(struct nfsreq *, struct lwp *);
                    182: void nfs_disconnect(struct nfsmount *);
                    183: void nfs_safedisconnect(struct nfsmount *);
                    184: int nfs_send(struct socket *, struct mbuf *, struct mbuf *, struct nfsreq *,
                    185:        struct lwp *);
                    186: int nfs_receive(struct nfsreq *, struct mbuf **, struct mbuf **, struct lwp *);
                    187: int nfs_reply(struct nfsreq *, struct lwp *);
                    188: int nfs_request(struct nfsnode *, struct mbuf *, int, struct lwp *,
1.59      elad      189:        kauth_cred_t, struct mbuf **, struct mbuf **, caddr_t *, int *);
1.57      yamt      190: int nfs_rephead(int, struct nfsrv_descript *, struct nfssvc_sock *,
                    191:        int, int, u_quad_t *, struct mbuf **, struct mbuf **, caddr_t *);
                    192: void nfs_timer(void *);
                    193: int nfs_sigintr(struct nfsmount *, struct nfsreq *, struct lwp *);
                    194: int nfs_sndlock(int *, struct nfsreq *);
                    195: void nfs_exit(struct proc *, void *);
                    196: void nfs_sndunlock(int *);
                    197: int nfs_rcvlock(struct nfsreq *);
                    198: void nfs_rcvunlock(struct nfsmount *);
                    199: int nfs_getreq(struct nfsrv_descript *, struct nfsd *, int);
                    200: int nfs_msg(struct lwp *, const char *, const char *);
                    201: void nfsrv_rcv(struct socket *, caddr_t, int);
                    202: int nfsrv_getstream(struct nfssvc_sock *, int);
                    203: int nfsrv_dorec(struct nfssvc_sock *, struct nfsd *, struct nfsrv_descript **);
                    204: void nfsrv_wakenfsd(struct nfssvc_sock *);
1.65    ! thorpej   205: int nfsdsock_lock(struct nfssvc_sock *, bool);
1.56      yamt      206: void nfsdsock_unlock(struct nfssvc_sock *);
                    207: int nfsdsock_drain(struct nfssvc_sock *);
                    208: int nfsdsock_sendreply(struct nfssvc_sock *, struct nfsrv_descript *);
1.61      yamt      209: void nfsdreq_init(void);
                    210: struct nfsrv_descript *nfsdreq_alloc(void);
1.60      yamt      211: void nfsdreq_free(struct nfsrv_descript *);
1.1       christos  212:
                    213: /* nfs_srvcache.c */
1.57      yamt      214: void nfsrv_initcache(void);
                    215: int nfsrv_getcache(struct nfsrv_descript *, struct nfssvc_sock *,
                    216:        struct mbuf **);
                    217: void nfsrv_updatecache(struct nfsrv_descript *, int, struct mbuf *);
                    218: void nfsrv_cleancache(void);
1.1       christos  219:
                    220: /* nfs_subs.c */
1.57      yamt      221: struct mbuf *nfsm_reqh(struct nfsnode *, u_long, int, caddr_t *);
1.59      elad      222: struct mbuf *nfsm_rpchead(kauth_cred_t, int, int, int, int, char *, int,
1.57      yamt      223:        char *, struct mbuf *, int, struct mbuf **, u_int32_t *);
                    224: int nfsm_mbuftouio(struct mbuf **, struct uio *, int, caddr_t *);
                    225: int nfsm_uiotombuf(struct uio *, struct mbuf **, int, caddr_t *);
                    226: int nfsm_disct(struct mbuf **, caddr_t *, int, int, caddr_t *);
                    227: int nfs_adv(struct mbuf **, caddr_t *, int, int);
                    228: int nfsm_strtmbuf(struct mbuf **, char **, const char *, long);
                    229: u_long nfs_dirhash(off_t);
                    230: void nfs_initdircache(struct vnode *);
                    231: void nfs_initdirxlatecookie(struct vnode *);
                    232: struct nfsdircache *nfs_searchdircache(struct vnode *, off_t, int, int *);
                    233: struct nfsdircache *nfs_enterdircache(struct vnode *, off_t, off_t, int,
                    234:        daddr_t);
                    235: void nfs_putdircache(struct nfsnode *, struct nfsdircache *);
                    236: void nfs_invaldircache(struct vnode *, int);
1.49      yamt      237: #define        NFS_INVALDIRCACHE_FORCE         1
                    238: #define        NFS_INVALDIRCACHE_KEEPEOF       2
1.3       fvdl      239: void nfs_init __P((void));
1.57      yamt      240: int nfsm_loadattrcache(struct vnode **, struct mbuf **, caddr_t *,
                    241:        struct vattr *, int flags);
                    242: int nfs_loadattrcache(struct vnode **, struct nfs_fattr *, struct vattr *,
                    243:        int flags);
                    244: int nfs_getattrcache(struct vnode *, struct vattr *);
                    245: void nfs_delayedtruncate(struct vnode *);
                    246: int nfs_check_wccdata(struct nfsnode *, const struct timespec *,
1.65    ! thorpej   247:        struct timespec *, bool);
1.63      yamt      248: int nfs_namei(struct nameidata *, nfsrvfh_t *, uint32_t, struct nfssvc_sock *,
1.57      yamt      249:        struct mbuf *, struct mbuf **, caddr_t *, struct vnode **, struct lwp *,
                    250:        int, int);
                    251: void nfs_zeropad(struct mbuf *, int, int);
                    252: void nfsm_srvwcc(struct nfsrv_descript *, int, struct vattr *, int,
                    253:        struct vattr *, struct mbuf **, char **);
                    254: void nfsm_srvpostopattr(struct nfsrv_descript *, int, struct vattr *,
                    255:        struct mbuf **, char **);
                    256: void nfsm_srvfattr(struct nfsrv_descript *, struct vattr *, struct nfs_fattr *);
1.63      yamt      257: int nfsrv_fhtovp(nfsrvfh_t *, int, struct vnode **, kauth_cred_t,
1.57      yamt      258:        struct nfssvc_sock *, struct mbuf *, int *, int, int);
1.63      yamt      259: int nfs_ispublicfh __P((const nfsrvfh_t *));
1.57      yamt      260: int netaddr_match(int, union nethostaddr *, struct mbuf *);
1.24      yamt      261:
                    262: /* flags for nfs_loadattrcache and friends */
                    263: #define        NAC_NOTRUNC     1       /* don't truncate file size */
1.18      fvdl      264:
1.57      yamt      265: void nfs_clearcommit(struct mount *);
                    266: void nfs_merge_commit_ranges(struct vnode *);
                    267: int nfs_in_committed_range(struct vnode *, off_t, off_t);
                    268: int nfs_in_tobecommitted_range(struct vnode *, off_t, off_t);
                    269: void nfs_add_committed_range(struct vnode *, off_t, off_t);
                    270: void nfs_del_committed_range(struct vnode *, off_t, off_t);
                    271: void nfs_add_tobecommitted_range(struct vnode *, off_t, off_t);
                    272: void nfs_del_tobecommitted_range(struct vnode *, off_t, off_t);
                    273:
                    274: int nfsrv_errmap(struct nfsrv_descript *, int);
1.59      elad      275: void nfs_cookieheuristic(struct vnode *, int *, struct lwp *, kauth_cred_t);
1.42      yamt      276:
1.57      yamt      277: u_int32_t nfs_getxid(void);
                    278: void nfs_renewxid(struct nfsreq *);
1.1       christos  279:
1.65    ! thorpej   280: int nfsrv_composefh(struct vnode *, nfsrvfh_t *, bool);
1.63      yamt      281: int nfsrv_comparefh(const nfsrvfh_t *, const nfsrvfh_t *);
                    282: void nfsrv_copyfh(nfsrvfh_t *, const nfsrvfh_t *);
                    283:
1.1       christos  284: /* nfs_syscalls.c */
1.57      yamt      285: int sys_getfh(struct lwp *, void *, register_t *);
                    286: int sys_nfssvc(struct lwp *, void *, register_t *);
                    287: int nfssvc_addsock(struct file *, struct mbuf *);
                    288: int nfssvc_nfsd(struct nfsd_srvargs *, caddr_t, struct lwp *);
                    289: void nfsrv_zapsock(struct nfssvc_sock *);
                    290: void nfsrv_slpderef(struct nfssvc_sock *);
                    291: void nfsrv_init(int);
                    292: int nfssvc_iod(struct lwp *);
                    293: void nfs_iodinit(void);
                    294: void start_nfsio(void *);
                    295: void nfs_getset_niothreads(int);
1.59      elad      296: int nfs_getauth(struct nfsmount *, struct nfsreq *, kauth_cred_t, char **,
1.57      yamt      297:        int *, char *, int *, NFSKERBKEY_T);
1.59      elad      298: int nfs_getnickauth(struct nfsmount *, kauth_cred_t, char **, int *, char *,
1.57      yamt      299:        int);
1.59      elad      300: int nfs_savenickauth(struct nfsmount *, kauth_cred_t, int, NFSKERBKEY_T,
1.57      yamt      301:        struct mbuf **, char **, struct mbuf *);
1.52      jmmv      302:
                    303: /* nfs_export.c */
                    304: extern struct nfs_public nfs_pub;
1.55      christos  305: int mountd_set_exports_list(const struct mountd_exports_list *, struct lwp *);
1.54      yamt      306: int netexport_check(const fsid_t *, struct mbuf *, struct mount **, int *,
1.59      elad      307:     kauth_cred_t *);
1.58      yamt      308: void netexport_rdlock(void);
                    309: void netexport_rdunlock(void);
1.53      jmmv      310: #ifdef COMPAT_30
1.55      christos  311: int nfs_update_exports_30(struct mount *, const char *, void *, struct lwp *);
1.53      jmmv      312: #endif
1.32      yamt      313: #endif /* _KERNEL */

CVSweb <webmaster@jp.NetBSD.org>