home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 (Developer) / NS_dev_3.2.iso / NextDeveloper / Headers / bsd / nfs / nfs_clnt.h < prev    next >
Text File  |  1993-10-19  |  3KB  |  97 lines

  1. /*      @(#)nfs_clnt.h    1.2 88/07/15 NFSSRC4.0 from 2.19 88/02/08 SMI      */
  2. /*    Copyright (C) 1988, Sun Microsystems Inc.    */
  3.  
  4. /*
  5.  * HISTORY
  6.  *  9-May-89  Peter King (king) at NeXT
  7.  *    Sun Bugfixes: 1010518 - Fix for close-to-open consistency.
  8.  *
  9.  * 19-Dec-88  Peter King (king) at NeXT
  10.  *    NFS 4.0 Changes: Added constants for flexible attribute caching.
  11.  */
  12.  
  13. #ifndef __NFS_CLNT_HEADER__
  14. #define __NFS_CLNT_HEADER__
  15.  
  16. #if    NeXT
  17. #import    <netinet/in.h>
  18. #endif    NeXT
  19.  
  20. /*
  21.  * vfs pointer to mount info
  22.  */
  23. #define    vftomi(vfsp)    ((struct mntinfo *)((vfsp)->vfs_data))
  24.  
  25. /*
  26.  * vnode pointer to mount info
  27.  */
  28. #define    vtomi(vp)    ((struct mntinfo *)(((vp)->v_vfsp)->vfs_data))
  29.  
  30. /*
  31.  * NFS vnode to server's block size
  32.  */
  33. #define    vtoblksz(vp)    (vtomi(vp)->mi_bsize)
  34.  
  35.  
  36. #define    HOSTNAMESZ    32
  37. #define    ACREGMIN    3    /* min secs to hold cached file attr */
  38. #define    ACREGMAX    60    /* max secs to hold cached file attr */
  39. #define    ACDIRMIN    30    /* min secs to hold cached dir attr */
  40. #define    ACDIRMAX    60    /* max secs to hold cached dir attr */
  41. #define ACMINMAX        3600    /* 1 hr is longest min timeout */
  42. #define ACMAXMAX        36000   /* 10 hr is longest max timeout */
  43.  
  44. /*
  45.  * NFS private data per mounted file system
  46.  */
  47. struct mntinfo {
  48.     struct sockaddr_in mi_addr;    /* server's address */
  49.     struct vnode    *mi_rootvp;    /* root vnode */
  50.     u_int         mi_hard : 1;    /* hard or soft mount */
  51.     u_int         mi_printed : 1;/* not responding message printed */
  52.     u_int         mi_int : 1;    /* interrupts allowed on hard mount */
  53.     u_int         mi_down : 1;    /* server is down */
  54.     u_int         mi_noac : 1;    /* don't cache attributes */
  55.     u_int            mi_nocto : 1;  /* no close-to-open consistency */
  56.     int         mi_refct;    /* active vnodes for this vfs */
  57.     long         mi_tsize;    /* transfer size (bytes) */
  58.     long         mi_stsize;    /* server's max transfer size (bytes) */
  59.     long         mi_bsize;    /* server's disk block size */
  60.     int         mi_mntno;    /* kludge to set client rdev for stat*/
  61.     int         mi_timeo;    /* inital timeout in 10th sec */
  62.     int         mi_retrans;    /* times to retry request */
  63.     char         mi_hostname[HOSTNAMESZ];    /* server's hostname */
  64.     char        *mi_netname;    /* server's netname */
  65.     int         mi_netnamelen;    /* length of netname */
  66.     int         mi_authflavor;    /* authentication type */
  67.     u_int         mi_acregmin;    /* min secs to hold cached file attr */
  68.     u_int         mi_acregmax;    /* max secs to hold cached file attr */
  69.     u_int         mi_acdirmin;    /* min secs to hold cached dir attr */
  70.     u_int         mi_acdirmax;    /* max secs to hold cached dir attr */
  71. };
  72.  
  73. /*
  74.  * Mark cached attributes invalid
  75.  */
  76. #define    PURGE_ATTRCACHE(vp)    (vtor(vp)->r_attrtime.tv_sec = 0)
  77.  
  78. /*
  79.  * If returned error is ESTALE flush all caches.
  80.  */
  81. /*
  82.  * You should not purge if you are a biod.
  83.  */
  84. #define PURGE_STALE_FH(errno, vp) if ((errno) == ESTALE) {nfs_invalidate_caches(vp);}
  85.  
  86. /*
  87.  * Is cache valid?
  88.  * Swap is always valid
  89.  * otherwise if mtime matches cached mtime it is valid
  90.  */
  91. #define    CACHE_VALID(rp, mtime) \
  92.     ((rtov(rp)->v_flag & VISSWAP) == VISSWAP || \
  93.      ((mtime).tv_sec == (rp)->r_attr.va_mtime.tv_sec && \
  94.      (mtime).tv_usec == (rp)->r_attr.va_mtime.tv_usec))
  95.  
  96. #endif !__NFS_CLNT_HEADER__
  97.