From aee2480fc6f591ac4b0d62cbba3770a033331819 Mon Sep 17 00:00:00 2001 From: patacongo Date: Mon, 23 Apr 2012 23:21:30 +0000 Subject: NFS update git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4650 42af7a65-404d-4744-a932-0658087f49c3 --- apps/nshlib/nsh_fscmds.c | 38 +++---- nuttx/fs/nfs/nfs.h | 113 ++++++++++---------- nuttx/fs/nfs/nfs_mount.h | 5 +- nuttx/fs/nfs/nfs_node.h | 2 + nuttx/fs/nfs/nfs_proto.h | 6 +- nuttx/fs/nfs/nfs_socket.c | 2 - nuttx/fs/nfs/nfs_util.c | 5 +- nuttx/fs/nfs/nfs_vfsops.c | 4 +- nuttx/include/nuttx/fs/nfs.h | 249 +------------------------------------------ 9 files changed, 97 insertions(+), 327 deletions(-) diff --git a/apps/nshlib/nsh_fscmds.c b/apps/nshlib/nsh_fscmds.c index d79ce4f47..a398179c0 100644 --- a/apps/nshlib/nsh_fscmds.c +++ b/apps/nshlib/nsh_fscmds.c @@ -56,6 +56,7 @@ # endif # ifdef CONFIG_NFS # include +# include # include # endif #endif @@ -86,7 +87,8 @@ * Private Types ****************************************************************************/ -typedef int (*direntry_handler_t)(FAR struct nsh_vtbl_s *, const char *, struct dirent *, void *); +typedef int (*direntry_handler_t)(FAR struct nsh_vtbl_s *, const char *, + struct dirent *, void *); /**************************************************************************** * Private Function Prototypes @@ -1338,23 +1340,23 @@ int cmd_nfsmount(FAR struct nsh_vtbl_s *vtbl, int argc, char **argv) /* Place all of the NFS arguements into the nfs_args structure */ memset(&data, 0, sizeof(data)); - data.version = 3; - data.proto = (tcp) ? 6 : 17; - data.sotype = (tcp) ? 0 : 1; - sin.sin_family = 2; - sin.sin_port = htons(2049); - sin.sin_addr = inaddr; - data.addr = (struct sockaddr *)&sin; - data.addrlen = sizeof(struct sockaddr); - data.flags = 0x00000200; - data.retrans = 3; - data.acregmin = 3; - data.acregmax = 60; - data.acdirmin = 30; - data.acdirmax = 60; - data.rsize = 0; - data.wsize = 0; - data.timeo = (tcp) ? 70 : 7; + data.version = NFS_ARGSVERSION; + data.proto = (tcp) ? IPPROTO_TCP : IPPROTO_UDP; + data.sotype = (tcp) ? SOCK_STREAM : SOCK_DGRAM; + sin.sin_family = AF_INET; + sin.sin_port = htons(NFS_PORT); + sin.sin_addr = inaddr; + data.addr = (struct sockaddr *)&sin; + data.addrlen = sizeof(struct sockaddr); + data.flags = NFSMNT_NFSV3; + data.retrans = 3; + data.acregmin = 3; + data.acregmax = 60; + data.acdirmin = 30; + data.acdirmax = 60; + data.rsize = 0; + data.wsize = 0; + data.timeo = (tcp) ? 70 : 7; /* Perform the mount */ diff --git a/nuttx/fs/nfs/nfs.h b/nuttx/fs/nfs/nfs.h index a88e5b91c..600e53350 100644 --- a/nuttx/fs/nfs/nfs.h +++ b/nuttx/fs/nfs/nfs.h @@ -53,31 +53,32 @@ * Pre-processor Definitions ****************************************************************************/ -#define NFS_TICKINTVL 5 /* Desired time for a tick (msec) */ +#define NFS_TICKINTVL 5 /* Desired time for a tick (msec) */ #define NFS_HZ (CLOCKS_PER_SEC / nfs_ticks) /* Ticks/sec */ #define NFS_TIMEO (1 * NFS_HZ) /* Default timeout = 1 second */ #define NFS_MINTIMEO (1 * NFS_HZ) /* Min timeout to use */ #define NFS_MAXTIMEO (60 * NFS_HZ) /* Max timeout to backoff to */ #define NFS_MINIDEMTIMEO (5 * NFS_HZ) /* Min timeout for non-idempotent ops */ -#define NFS_TIMEOUTMUL 2 /* Timeout/Delay multiplier */ -#define NFS_MAXREXMIT 100 /* Stop counting after this many */ -#define NFS_RETRANS 10 /* Num of retrans for soft mounts */ -#define NFS_MAXGRPS 16 /* Max. size of groups list */ -#define NFS_MINATTRTIMO 5 /* Attribute cache timeout in sec */ +#define NFS_TIMEOUTMUL 2 /* Timeout/Delay multiplier */ +#define NFS_MAXREXMIT 100 /* Stop counting after this many */ +#define NFS_RETRANS 10 /* Num of retrans for soft mounts */ +#define NFS_MAXGRPS 16 /* Max. size of groups list */ +#define NFS_MINATTRTIMO 5 /* Attribute cache timeout in sec */ #define NFS_MAXATTRTIMO 60 -#define NFS_WSIZE 8192 /* Def. write data size <= 8192 */ -#define NFS_RSIZE 8192 /* Def. read data size <= 8192 */ -#define NFS_READDIRSIZE 8192 /* Def. readdir size */ -#define NFS_DEFRAHEAD 1 /* Def. read ahead # blocks */ -#define NFS_MAXRAHEAD 4 /* Max. read ahead # blocks */ -#define NFS_MAXASYNCDAEMON 20 /* Max. number async_daemons runable */ +#define NFS_WSIZE 8192 /* Def. write data size <= 8192 */ +#define NFS_RSIZE 8192 /* Def. read data size <= 8192 */ +#define NFS_READDIRSIZE 8192 /* Def. readdir size */ +#define NFS_DEFRAHEAD 1 /* Def. read ahead # blocks */ +#define NFS_MAXRAHEAD 4 /* Max. read ahead # blocks */ +#define NFS_MAXASYNCDAEMON 20 /* Max. number async_daemons runable */ +#define NFS_NPROCS 23 /* Ideally, NFS_DIRBLKSIZ should be bigger, but I've seen servers with * broken NFS/ethernet drivers that won't work with anything bigger (Linux..) */ -#define NFS_DIRBLKSIZ 1024 /* Must be a multiple of DIRBLKSIZ */ -#define NFS_READDIRBLKSIZ 512 /* Size of read dir blocks. XXX */ +#define NFS_DIRBLKSIZ 1024 /* Must be a multiple of DIRBLKSIZ */ +#define NFS_READDIRBLKSIZ 512 /* Size of read dir blocks. XXX */ /* Oddballs */ @@ -189,13 +190,14 @@ /* Bits for "nd_flag" */ #define ND_NFSV3 0x08 - #define NFSD_CHECKSLP 0x01 /**************************************************************************** * Public Types ****************************************************************************/ +#undef COMP +#ifdef COMP /* Structures for the nfssvc(2) syscall. * Not that anyone besides nfsd(8) should ever use it. */ @@ -220,46 +222,6 @@ struct nfsd_srvargs uint32_t nsd_ttl; /* credential ttl (sec) */ }; -/* Stats structure */ - -struct nfsstats -{ - uint64_t attrcache_hits; - uint64_t attrcache_misses; - uint64_t lookupcache_hits; - uint64_t lookupcache_misses; - uint64_t direofcache_hits; - uint64_t direofcache_misses; - uint64_t biocache_reads; - uint64_t read_bios; - uint64_t read_physios; - uint64_t biocache_writes; - uint64_t write_bios; - uint64_t write_physios; - uint64_t biocache_readlinks; - uint64_t readlink_bios; - uint64_t biocache_readdirs; - uint64_t readdir_bios; - uint64_t rpccnt[NFS_NPROCS]; - uint64_t rpcretries; - uint64_t srvrpccnt[NFS_NPROCS]; - uint64_t srvrpc_errs; - uint64_t srv_errs; - uint64_t rpcrequests; - uint64_t rpctimeouts; - uint64_t rpcunexpected; - uint64_t rpcinvalid; - uint64_t srvcache_inproghits; - uint64_t srvcache_idemdonehits; - uint64_t srvcache_nonidemdonehits; - uint64_t srvcache_misses; - uint64_t forcedsync; - uint64_t srvnqnfs_leases; - uint64_t srvnqnfs_maxleases; - uint64_t srvnqnfs_getleases; - uint64_t srvvop_writes; -}; - /* The set of signals the interrupt an I/O in progress for NFSMNT_INT mounts. * What should be in this set is open to debate, but I believe that since * I/O system calls on ufs are never interrupted by signals the set should @@ -330,6 +292,47 @@ struct nfsrv_descript int nd_repstat; /* Reply status */ uint32_t nd_retxid; /* Reply xid */ }; +#endif + +/* Stats structure */ + +struct nfsstats +{ + uint64_t attrcache_hits; + uint64_t attrcache_misses; + uint64_t lookupcache_hits; + uint64_t lookupcache_misses; + uint64_t direofcache_hits; + uint64_t direofcache_misses; + uint64_t biocache_reads; + uint64_t read_bios; + uint64_t read_physios; + uint64_t biocache_writes; + uint64_t write_bios; + uint64_t write_physios; + uint64_t biocache_readlinks; + uint64_t readlink_bios; + uint64_t biocache_readdirs; + uint64_t readdir_bios; + uint64_t rpccnt[NFS_NPROCS]; + uint64_t rpcretries; + uint64_t srvrpccnt[NFS_NPROCS]; + uint64_t srvrpc_errs; + uint64_t srv_errs; + uint64_t rpcrequests; + uint64_t rpctimeouts; + uint64_t rpcunexpected; + uint64_t rpcinvalid; + uint64_t srvcache_inproghits; + uint64_t srvcache_idemdonehits; + uint64_t srvcache_nonidemdonehits; + uint64_t srvcache_misses; + uint64_t forcedsync; + uint64_t srvnqnfs_leases; + uint64_t srvnqnfs_maxleases; + uint64_t srvnqnfs_getleases; + uint64_t srvvop_writes; +}; /**************************************************************************** * Public Data diff --git a/nuttx/fs/nfs/nfs_mount.h b/nuttx/fs/nfs/nfs_mount.h index 7ca070b9d..bfd5035bd 100644 --- a/nuttx/fs/nfs/nfs_mount.h +++ b/nuttx/fs/nfs/nfs_mount.h @@ -47,6 +47,8 @@ * Included Files ****************************************************************************/ + #include + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -68,7 +70,6 @@ struct nfsmount { int nm_flag; /* Flags for soft/hard... */ int nm_state; /* Internal state flags */ -//struct inode *nm_blkdriver; /* Vfs structure for this filesystem */ struct nfsnode *nm_head; /* A list to all files opened on this mountpoint */ bool nm_mounted; /* true: The file system is ready */ sem_t nm_sem; /* Used to assume thread-safe access */ @@ -98,8 +99,6 @@ struct nfsmount int nm_acregmin; /* Reg file attr cache min lifetime */ int nm_acregmax; /* Reg file attr cache max lifetime */ unsigned char *nm_verf; /* V3 write verifier */ -//char nm_mntonname[90]; /* directory on which mounted */ -//uint8_t *nm_buffer; /* This is an allocated buffer to hold one sector*/ }; #endif diff --git a/nuttx/fs/nfs/nfs_node.h b/nuttx/fs/nfs/nfs_node.h index 55148d181..98867c900 100644 --- a/nuttx/fs/nfs/nfs_node.h +++ b/nuttx/fs/nfs/nfs_node.h @@ -49,6 +49,8 @@ #include +#include "nfs.h" + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ diff --git a/nuttx/fs/nfs/nfs_proto.h b/nuttx/fs/nfs/nfs_proto.h index b82b2e104..7fecb60b4 100644 --- a/nuttx/fs/nfs/nfs_proto.h +++ b/nuttx/fs/nfs/nfs_proto.h @@ -47,8 +47,10 @@ * Included Files ****************************************************************************/ - #include +#include +#include "nfs.h" + /**************************************************************************** * Pre-processor Definitions ****************************************************************************/ @@ -302,7 +304,7 @@ typedef struct fhandle fhandle_t; /* union nfsfh { -fhandle_t fh_generic; + fhandle_t fh_generic; unsigned char fh_bytes[NFS_MAXFHSIZE]; }; typedef union nfsfh nfsfh_t; diff --git a/nuttx/fs/nfs/nfs_socket.c b/nuttx/fs/nfs/nfs_socket.c index d659a097e..53a68ef1a 100644 --- a/nuttx/fs/nfs/nfs_socket.c +++ b/nuttx/fs/nfs/nfs_socket.c @@ -46,8 +46,6 @@ #include #include -#include - #include "nfs.h" #include "rpc.h" #include "rpc_v2.h" diff --git a/nuttx/fs/nfs/nfs_util.c b/nuttx/fs/nfs/nfs_util.c index a6c82ab22..3aedfc65c 100755 --- a/nuttx/fs/nfs/nfs_util.c +++ b/nuttx/fs/nfs/nfs_util.c @@ -134,7 +134,10 @@ int nfs_checkmount(struct nfsmount *nmp) { file->n_open = false; } + + return -ENODEV; } - return -ENODEV; + + return 0; } diff --git a/nuttx/fs/nfs/nfs_vfsops.c b/nuttx/fs/nfs/nfs_vfsops.c index 478271419..4679239c1 100644 --- a/nuttx/fs/nfs/nfs_vfsops.c +++ b/nuttx/fs/nfs/nfs_vfsops.c @@ -1016,6 +1016,7 @@ int mountnfs(struct nfs_args *argp, struct sockaddr *nam, void **handle) sem_init(&nmp->nm_sem, 0, 0); /* Initialize the semaphore that controls access */ //nmp->nm_blkdriver = blkdriver; /* Save the block driver reference */ + nfs_init(); nmp->nm_timeo = NFS_TIMEO; nmp->nm_retry = NFS_RETRANS; nmp->nm_wsize = NFS_WSIZE; @@ -1053,8 +1054,7 @@ int mountnfs(struct nfs_args *argp, struct sockaddr *nam, void **handle) /* Mounted! */ nmp->nm_mounted = true; - nfs_init(); - *handle /*= blkdriver->i_private*/ = &nmp; + *handle = &nmp; nfs_semgive(nmp); return 0; diff --git a/nuttx/include/nuttx/fs/nfs.h b/nuttx/include/nuttx/fs/nfs.h index 93b0b780c..977736390 100644 --- a/nuttx/include/nuttx/fs/nfs.h +++ b/nuttx/include/nuttx/fs/nfs.h @@ -51,145 +51,7 @@ * Pre-processor Definitions ****************************************************************************/ -#define NFS_TICKINTVL 5 /* Desired time for a tick (msec) */ -#define NFS_HZ (CLOCKS_PER_SEC / nfs_ticks) /* Ticks/sec */ -#define NFS_TIMEO (1 * NFS_HZ) /* Default timeout = 1 second */ -#define NFS_MINTIMEO (1 * NFS_HZ) /* Min timeout to use */ -#define NFS_MAXTIMEO (60 * NFS_HZ) /* Max timeout to backoff to */ -#define NFS_MINIDEMTIMEO (5 * NFS_HZ) /* Min timeout for non-idempotent ops */ -#define NFS_TIMEOUTMUL 2 /* Timeout/Delay multiplier */ -#define NFS_MAXREXMIT 100 /* Stop counting after this many */ -#define NFS_RETRANS 10 /* Num of retrans for soft mounts */ -#define NFS_MAXGRPS 16 /* Max. size of groups list */ -#define NFS_MINATTRTIMO 5 /* Attribute cache timeout in sec */ -#define NFS_MAXATTRTIMO 60 -#define NFS_WSIZE 8192 /* Def. write data size <= 8192 */ -#define NFS_RSIZE 8192 /* Def. read data size <= 8192 */ -#define NFS_READDIRSIZE 8192 /* Def. readdir size */ -#define NFS_DEFRAHEAD 1 /* Def. read ahead # blocks */ -#define NFS_MAXRAHEAD 4 /* Max. read ahead # blocks */ -#define NFS_MAXASYNCDAEMON 20 /* Max. number async_daemons runable */ - -/* Ideally, NFS_DIRBLKSIZ should be bigger, but I've seen servers with - * broken NFS/ethernet drivers that won't work with anything bigger (Linux..) - */ - -#define NFS_DIRBLKSIZ 1024 /* Must be a multiple of DIRBLKSIZ */ -#define NFS_READDIRBLKSIZ 512 /* Size of read dir blocks. XXX */ - -/* Oddballs */ - -#define NFS_CMPFH(n, f, s) \ - ((n)->n_fhsize == (s) && !bcmp((void *)(n)->n_fhp, (void *)(f), (s))) -#define NFS_ISV3(i) (VFSTONFS((i)->f_inode)->nm_flag & NFSMNT_NFSV3) -#define NFS_SRVMAXDATA(n) \ - (((n)->nd_flag & ND_NFSV3) ? (((n)->nd_nam2) ? \ - NFS_MAXDGRAMDATA : NFS_MAXDATA) : NFS_V2MAXDATA) - -/* sys/malloc.h needs M_NFSDIROFF, M_NFSRVDESC and M_NFSBIGFH added. */ - -#ifndef M_NFSRVDESC -# define M_NFSRVDESC M_TEMP -#endif -#ifndef M_NFSDIROFF -# define M_NFSDIROFF M_TEMP -#endif -#ifndef M_NFSBIGFH -# define M_NFSBIGFH M_TEMP -#endif - -/* The B_INVAFTERWRITE flag should be set to whatever is required by the - * buffer cache code to say "Invalidate the block after it is written back". - */ - -#define B_INVAFTERWRITE B_INVAL - -/* Flags for nfssvc() system call. */ - -#define NFSSVC_BIOD 0x002 -#define NFSSVC_NFSD 0x004 -#define NFSSVC_ADDSOCK 0x008 -#define NFSSVC_AUTHIN 0x010 -#define NFSSVC_GOTAUTH 0x040 -#define NFSSVC_AUTHINFAIL 0x080 -#define NFSSVC_MNTD 0x100 - -/* fs.nfs sysctl(3) identifiers */ - -#define NFS_NFSSTATS 1 /* struct: struct nfsstats */ -#define NFS_NIOTHREADS 2 /* number of i/o threads */ -#define NFS_MAXID 3 - -#define FS_NFS_NAMES { \ - { 0, 0 }, \ - { "nfsstats", CTLTYPE_STRUCT }, \ - { "iothreads", CTLTYPE_INT } \ -} - -#define NFSINT_SIGMASK (sigmask(SIGINT)|sigmask(SIGTERM)|sigmask(SIGKILL)| \ - sigmask(SIGHUP)|sigmask(SIGQUIT)) - -/* Socket errors ignored for connectionless sockets?? - * For now, ignore them all - */ - -#define NFSIGNORE_SOERROR(s, e) \ - ((e) != EINTR && (e) != ERESTART && (e) != EWOULDBLOCK && \ - ((s) & PR_CONNREQUIRED) == 0) - -/* Flag values for r_flags */ - -#define R_TIMING 0x01/* timing request (in mntp) */ -#define R_SENT 0x02/* request has been sent */ -#define R_SOFTTERM 0x04/* soft mnt, too many retries */ -#define R_INTR 0x08/* intr mnt, signal pending */ -#define R_SOCKERR 0x10/* Fatal error on socket */ -#define R_TPRINTFMSG 0x20/* Did a tprintf msg. */ -#define R_MUSTRESEND 0x40/* Must resend request */ - -/* On fast networks, the estimator will try to reduce the - * timeout lower than the latency of the server's disks, - * which results in too many timeouts, so cap the lower - * bound. - */ - -#define NFS_MINRTO (NFS_HZ >> 2) - -/* Keep the RTO from increasing to unreasonably large values - * when a server is not responding. - */ - -#define NFS_MAXRTO (20 * NFS_HZ) - -#define NFS_MAX_TIMER (NFS_WRITE_TIMER) -#define NFS_INITRTT (NFS_HZ << 3) - -/* Bits for "ns_flag" */ - -#define SLP_VALID 0x01/* connection is usable */ -#define SLP_DOREC 0x02/* receive operation required */ -#define SLP_NEEDQ 0x04/* connection has data to queue from socket */ -#define SLP_DISCONN 0x08/* connection is closed */ -#define SLP_GETSTREAM 0x10/* extracting RPC from TCP connection */ -#define SLP_LASTFRAG 0x20/* last fragment received on TCP connection */ -#define SLP_ALLFLAGS 0xff/* convenience */ - -#define SLP_INIT 0x01/* NFS data undergoing initialization */ -#define SLP_WANTINIT 0x02/* thread waiting on NFS initialization */ - -/* Bits for "nfsd_flag" */ - -#define NFSD_WAITING 0x01 -#define NFSD_REQINPROG 0x02 -#define NFSD_NEEDAUTH 0x04 -#define NFSD_AUTHFAIL 0x08 - -/* Bits for "nd_flag" */ - -#define ND_NFSV3 0x08 -#define NFSD_CHECKSLP 0x01 - -/* NFS mount option flags */ + /* NFS mount option flags */ #define NFSMNT_SOFT 0x00000001 /* soft mount (hard is default) */ #define NFSMNT_WSIZE 0x00000002 /* set write size */ @@ -227,14 +89,14 @@ #define NFSMNT_NOAC 0x00080000 /* Turn off attribute cache */ #define NFS_ARGSVERSION 3 /* change when nfs_args changes */ -#define NFS_NPROCS 23 -#define NFS_MAXFHSIZE 64 - +#define NFS_MAXFHSIZE 64 +#define NFS_PORT 2049 + /**************************************************************************** * Public Types ****************************************************************************/ -/* File Handle (32 bytes for version 2), variable up to 64 for version 3. */ + /* File Handle (32 bytes for version 2), variable up to 64 for version 3. */ union nfsfh { @@ -242,106 +104,6 @@ union nfsfh }; typedef union nfsfh nfsfh_t; -#undef COMP -#ifdef COMP -/* Structures for the nfssvc(2) syscall. - * Not that anyone besides nfsd(8) should ever use it. - */ - -struct nfsd_args -{ - int sock; /* Socket to serve */ - void *name; /* Client addr for connection based sockets */ - int namelen; /* Length of name */ -}; - -struct nfsd_srvargs -{ - struct nfsd *nsd_nfsd; /* Pointer to in kernel nfsd struct */ - uid_t nsd_uid; /* Effective uid mapped to cred */ - uint32_t nsd_haddr; /* IP address of client */ - int nsd_authlen; /* Length of auth string (ret) */ - unsigned char *nsd_authstr; /* Auth string (ret) */ - int nsd_verflen; /* and the verifier */ - unsigned char *nsd_verfstr; - struct timeval nsd_timestamp; /* timestamp from verifier */ - uint32_t nsd_ttl; /* credential ttl (sec) */ -}; -#endif - -#ifdef COMP -/* The set of signals the interrupt an I/O in progress for NFSMNT_INT mounts. - * What should be in this set is open to debate, but I believe that since - * I/O system calls on ufs are never interrupted by signals the set should - * be minimal. My reasoning is that many current programs that use signals - * such as SIGALRM will not expect file I/O system calls to be interrupted - * by them and break. - */ - -/* Nfs outstanding request list element */ - -struct nfsmount; -struct nfsreq -{ - dq_entry_t r_chain; - struct nfsmount *r_nmp; - uint32_t r_xid; - int r_flags; /* flags on request, see below */ - int r_rexmit; /* current retrans count */ - int r_timer; /* tick counter on reply */ - int r_procnum; /* NFS procedure number */ - int r_rtt; /* RTT for rpc */ -}; - -enum nfs_rto_timers -{ - NFS_DEFAULT_TIMER, - NFS_GETATTR_TIMER, - NFS_LOOKUP_TIMER, - NFS_READ_TIMER, - NFS_WRITE_TIMER, -}; - -/* Network address hash list element */ - -union nethostaddr -{ - uint32_t had_inetaddr; -}; - -struct nfssvc_sock -{ - // TAILQ_ENTRY(nfssvc_sock) ns_chain; /* List of all nfssvc_sock's */ - struct file *ns_fp; /* fp from the... */ - struct socket *ns_so; /* ...socket this struct wraps */ - int ns_flag; /* socket status flags */ - int ns_solock; /* lock for connected socket */ - int ns_cc; /* actual chars queued */ - int ns_reclen; /* length of first queued record */ - uint32_t ns_sref; /* # of refs to this struct */ -}; - -/* One of these structures is allocated for each nfsd. */ - -struct nfsd -{ - //TAILQ_ENTRY(nfsd) nfsd_chain; /* List of all nfsd's */ - int nfsd_flag; /* NFSD_ flags */ - struct nfssvc_sock *nfsd_slp; /* Current socket */ - struct nfsrv_descript *nfsd_nd; /* Associated nfsrv_descript */ -}; - -/* This structure is used by the server for describing each request. */ - -struct nfsrv_descript -{ - unsigned int nd_procnum; /* RPC # */ - int nd_flag; /* nd_flag */ - int nd_repstat; /* Reply status */ - uint32_t nd_retxid; /* Reply xid */ -}; -#endif - /* Arguments to mount NFS */ struct nfs_args @@ -363,7 +125,6 @@ struct nfs_args int readahead; /* # of blocks to readahead */ int leaseterm; /* Term (sec) of lease */ int deadthresh; /* Retrans threshold */ -//char *hostname; /* server's name */ int acregmin; /* cache attrs for reg files min time */ int acregmax; /* cache attrs for reg files max time */ int acdirmin; /* cache attrs for dirs min time */ -- cgit v1.2.3