afs-indextimes-in-dcache-20050125
[openafs.git] / src / afs / afs.h
index b47683f..a394bbc 100644 (file)
@@ -43,7 +43,7 @@ extern int afs_shuttingdown;
 #if     defined(AFS_HPUX102_ENV)
 #define AFS_FLOCK       k_flock
 #else
-#if     defined(AFS_SUN56_ENV) || defined(AFS_LINUX24_ENV)
+#if     defined(AFS_SUN56_ENV) || (defined(AFS_LINUX24_ENV) && !defined(AFS_PPC64_LINUX26_ENV) && !defined(AFS_AMD64_LINUX26_ENV) && !defined(AFS_IA64_LINUX26_ENV))
 #define AFS_FLOCK       flock64
 #else
 #define AFS_FLOCK       flock
@@ -61,26 +61,27 @@ extern int afs_shuttingdown;
 
 /* The basic defines for the Andrew file system
     better keep things powers of two so "& (foo-1)" hack works for masking bits */
-#define        MAXHOSTS        13          /* max hosts per single volume */
-#define        OMAXHOSTS        8          /* backwards compatibility */
-#define MAXCELLHOSTS    8          /* max vldb servers per cell */
-#define        NBRS            15          /* max number of queued daemon requests */
-#define        NUSERS          16          /* hash table size for unixuser table */
-#define        NSERVERS        16          /* hash table size for server table */
-#define        NVOLS           64          /* hash table size for volume table */
-#define        NFENTRIES       256         /* hash table size for disk volume table */
-#define        VCSIZE         1024         /* stat cache hash table size */
-#define        DCSIZE          512         /* disk cache hash table size */
-#define        PIGGYSIZE       1350        /* max piggyback size */
-#define        MAXVOLS         128         /* max vols we can store */
-#define        MAXSYSNAME      128         /* max sysname (i.e. @sys) size */
-#define MAXNUMSYSNAMES 16          /* max that current constants allow */
-#define        NOTOKTIMEOUT    (2*3600)    /* time after which to timeout conns sans tokens */
+#define        MAXHOSTS        13      /* max hosts per single volume */
+#define        OMAXHOSTS        8      /* backwards compatibility */
+#define MAXCELLHOSTS    8      /* max vldb servers per cell */
+#define        NBRS            15      /* max number of queued daemon requests */
+#define        NUSERS          16      /* hash table size for unixuser table */
+#define        NSERVERS        16      /* hash table size for server table */
+#define        NVOLS           64      /* hash table size for volume table */
+#define        NFENTRIES       256     /* hash table size for disk volume table */
+#define        VCSIZE         1024     /* stat cache hash table size */
+#define        DCSIZE          512     /* disk cache hash table size */
+#define CBRSIZE                512     /* call back returns hash table size */
+#define        PIGGYSIZE       1350    /* max piggyback size */
+#define        MAXVOLS         128     /* max vols we can store */
+#define        MAXSYSNAME      128     /* max sysname (i.e. @sys) size */
+#define MAXNUMSYSNAMES 16      /* max that current constants allow */
+#define        NOTOKTIMEOUT    (2*3600)        /* time after which to timeout conns sans tokens */
 #define        NOPAG           0xffffffff
-#define AFS_NCBRS      300         /* max # of call back return entries */
-#define AFS_MAXCBRSCALL        16          /* max to return in a given call */
-#define        AFS_SALLOC_LOW_WATER    250 /* Min free blocks before allocating more */
-#define        AFS_LRALLOCSIZ  4096        /* "Large" allocated size */
+#define AFS_NCBRS      300     /* max # of call back return entries */
+#define AFS_MAXCBRSCALL        16      /* max to return in a given call */
+#define        AFS_SALLOC_LOW_WATER    250     /* Min free blocks before allocating more */
+#define        AFS_LRALLOCSIZ  4096    /* "Large" allocated size */
 #define        VCACHE_FREE     5
 #define        AFS_NRXPACKETS  80
 #define        AFS_RXDEADTIME  50
@@ -90,13 +91,13 @@ extern afs_int32 afs_rx_deadtime;
 extern afs_int32 afs_rx_harddead;
 
 struct sysname_info {
-  char *name;
-  short offset;
-  char index, allocked;
+    char *name;
+    short offset;
+    char index, allocked;
 };
 
 /* flags to use with AFSOP_CACHEINIT */
-#define AFSCALL_INIT_MEMCACHE        0x1         /* use a memory-based cache */
+#define AFSCALL_INIT_MEMCACHE        0x1       /* use a memory-based cache */
 
 /* below here used only for kernel procedures */
 #ifdef KERNEL
@@ -111,12 +112,12 @@ struct sysname_info {
 /* background request structure */
 #define        BPARMS          4
 
-#define        BOP_NOOP        0           /* leave 0 unused */
-#define        BOP_FETCH       1           /* parm1 is chunk to get */
-#define        BOP_STORE       2           /* parm1 is chunk to store */
-#define        BOP_PATH        3           /* parm1 is path, parm2 is chunk to fetch */
+#define        BOP_NOOP        0       /* leave 0 unused */
+#define        BOP_FETCH       1       /* parm1 is chunk to get */
+#define        BOP_STORE       2       /* parm1 is chunk to store */
+#define        BOP_PATH        3       /* parm1 is path, parm2 is chunk to fetch */
 
-#define        B_DONTWAIT      1           /* On failure return; don't wait */
+#define        B_DONTWAIT      1       /* On failure return; don't wait */
 
 /* protocol is: refCount is incremented by user to take block out of free pool.
     Next, BSTARTED is set when daemon finds request.  This prevents
@@ -124,19 +125,19 @@ struct sysname_info {
     request is done, refCount is zeroed.  BDONE and BWAIT are used by
     dudes waiting for operation to proceed to a certain point before returning.
 */
-#define        BSTARTED        1           /* request picked up by a daemon */
-#define        BUVALID         2           /* code is valid (store) */
-#define        BUWAIT          4           /* someone is waiting for BUVALID */
+#define        BSTARTED        1       /* request picked up by a daemon */
+#define        BUVALID         2       /* code is valid (store) */
+#define        BUWAIT          4       /* someone is waiting for BUVALID */
 struct brequest {
-    struct vcache *vc;             /* vnode to use, with vrefcount bumped */
-    struct AFS_UCRED *cred;        /* credentials to use for operation */
-    afs_size_t size_parm[BPARMS];   /* random parameters */
-    void *ptr_parm[BPARMS];        /* pointer parameters */
-    afs_int32 code;                /* return code */
-    short refCount;                /* use counter for this structure */
-    char opcode;                   /* what to do (store, fetch, etc) */
-    char flags;                            /* free, etc */
-    afs_int32 ts;                  /* counter "timestamp" */
+    struct vcache *vc;         /* vnode to use, with vrefcount bumped */
+    struct AFS_UCRED *cred;    /* credentials to use for operation */
+    afs_size_t size_parm[BPARMS];      /* random parameters */
+    void *ptr_parm[BPARMS];    /* pointer parameters */
+    afs_int32 code;            /* return code */
+    short refCount;            /* use counter for this structure */
+    char opcode;               /* what to do (store, fetch, etc) */
+    char flags;                        /* free, etc */
+    afs_int32 ts;              /* counter "timestamp" */
 };
 
 struct SecretToken {
@@ -144,15 +145,15 @@ struct SecretToken {
 };
 
 struct ClearToken {
-       afs_int32 AuthHandle;
-       char HandShakeKey[8];
-       afs_int32 ViceId;
-       afs_int32 BeginTimestamp;
-       afs_int32 EndTimestamp;
+    afs_int32 AuthHandle;
+    char HandShakeKey[8];
+    afs_int32 ViceId;
+    afs_int32 BeginTimestamp;
+    afs_int32 EndTimestamp;
 };
 
 struct VenusFid {
-    afs_int32 Cell;                        /* better sun packing if at end of structure */
+    afs_int32 Cell;            /* better sun packing if at end of structure */
     struct AFSFid Fid;
 };
 
@@ -175,9 +176,9 @@ struct afs_q {
 };
 
 struct vrequest {
-    afs_int32 uid;                     /* user id making the request */
-    afs_int32 busyCount;               /* how many busies we've seen so far */
-    afs_int32 flags;                 /* things like O_SYNC, O_NONBLOCK go here */
+    afs_int32 uid;             /* user id making the request */
+    afs_int32 busyCount;       /* how many busies we've seen so far */
+    afs_int32 flags;           /* things like O_SYNC, O_NONBLOCK go here */
     char initd;                        /* if non-zero, non-uid fields meaningful */
     char accessError;          /* flags for overriding error return code */
     char volumeError;          /* encountered a missing or busy volume */
@@ -191,7 +192,12 @@ struct vrequest {
  * callbacks.  Sent asynchronously when we run a little low on free dudes.
  */
 struct afs_cbr {
+    struct afs_cbr **pprev;
     struct afs_cbr *next;
+
+    struct afs_cbr **hash_pprev;
+    struct afs_cbr *hash_next;
+
     struct AFSFid fid;
 };
 
@@ -206,18 +212,18 @@ struct afs_cbr {
 #define CLinkedCell            0x20    /* has a linked cell in lcellp */
 
 struct cell {
-    struct afs_q lruq;                     /* lru q next and prev */
-    char *cellName;                        /* char string name of cell */
-    afs_int32 cellIndex;                   /* sequence number */
-    afs_int32 cellNum;                     /* semi-permanent cell number */
-    struct server *cellHosts[MAXCELLHOSTS]; /* volume *location* hosts */
-    struct cell *lcellp;                   /* Associated linked cell */
-    u_short fsport;                        /* file server port */
-    u_short vlport;                        /* volume server port */
-    short states;                          /* state flags */
-    time_t timeout;                        /* data expire time, if non-zero */
-    struct cell_name *cnamep;              /* pointer to our cell_name */
-    afs_rwlock_t lock;                     /* protects cell data */
+    struct afs_q lruq;         /* lru q next and prev */
+    char *cellName;            /* char string name of cell */
+    afs_int32 cellIndex;       /* sequence number */
+    afs_int32 cellNum;         /* semi-permanent cell number */
+    struct server *cellHosts[MAXCELLHOSTS];    /* volume *location* hosts */
+    struct cell *lcellp;       /* Associated linked cell */
+    u_short fsport;            /* file server port */
+    u_short vlport;            /* volume server port */
+    short states;              /* state flags */
+    time_t timeout;            /* data expire time, if non-zero */
+    struct cell_name *cnamep;  /* pointer to our cell_name */
+    afs_rwlock_t lock;         /* protects cell data */
 };
 
 struct cell_name {
@@ -237,11 +243,11 @@ struct cell_alias {
 #define        afs_PutCell(cellp, locktype)
 
 /* the unixuser flag bit definitions */
-#define        UHasTokens      1           /* are the st and ct fields valid (ever set)? */
-#define        UTokensBad      2           /* are tokens bad? */
-#define UPrimary        4           /* on iff primary identity */
-#define UNeedsReset    8           /* needs afs_ResetAccessCache call done */
-#define UPAGCounted    16          /* entry seen during PAG search (for stats) */
+#define        UHasTokens      1       /* are the st and ct fields valid (ever set)? */
+#define        UTokensBad      2       /* are tokens bad? */
+#define UPrimary        4      /* on iff primary identity */
+#define UNeedsReset    8       /* needs afs_ResetAccessCache call done */
+#define UPAGCounted    16      /* entry seen during PAG search (for stats) */
 /* A flag used by afs_GCPAGs to keep track of
  * which entries in afs_users need to be deleted.
  * The lifetime of its presence in the table is the
@@ -250,47 +256,40 @@ struct cell_alias {
 #define TMP_UPAGNotReferenced  128
 
 /* values for afs_gcpags */
-enum
-{ AFS_GCPAGS_NOTCOMPILED = 0
-, AFS_GCPAGS_OK = 1
-, AFS_GCPAGS_USERDISABLED
-, AFS_GCPAGS_EPROC0
-, AFS_GCPAGS_EPROCN
-, AFS_GCPAGS_EEQPID
-, AFS_GCPAGS_EINEXACT
-, AFS_GCPAGS_EPROCEND
-, AFS_GCPAGS_EPROCWALK
-, AFS_GCPAGS_ECREDWALK
-, AFS_GCPAGS_EPIDCHECK
-, AFS_GCPAGS_ENICECHECK
+enum { AFS_GCPAGS_NOTCOMPILED = 0, AFS_GCPAGS_OK =
+       1, AFS_GCPAGS_USERDISABLED, AFS_GCPAGS_EPROC0, AFS_GCPAGS_EPROCN,
+    AFS_GCPAGS_EEQPID, AFS_GCPAGS_EINEXACT, AFS_GCPAGS_EPROCEND,
+    AFS_GCPAGS_EPROCWALK, AFS_GCPAGS_ECREDWALK, AFS_GCPAGS_EPIDCHECK,
+    AFS_GCPAGS_ENICECHECK
 };
 
 extern afs_int32 afs_gcpags;
 extern afs_int32 afs_gcpags_procsize;
+extern afs_int32 afs_bkvolpref;
 
 struct unixuser {
-    struct unixuser *next;         /* next hash pointer */
-    afs_int32 uid;                         /* search based on uid and cell */
+    struct unixuser *next;     /* next hash pointer */
+    afs_int32 uid;             /* search based on uid and cell */
     afs_int32 cell;
-    afs_int32 vid;                         /* corresponding vice id in specified cell */
-    short refCount;                /* reference count for allocation */
-    char states;                   /* flag info */
-    afs_int32 tokenTime;                   /* last time tokens were set, used for timing out conn data */
-    afs_int32 stLen;                       /* ticket length (if kerberos, includes kvno at head) */
-    char *stp;                     /* pointer to ticket itself */
+    afs_int32 vid;             /* corresponding vice id in specified cell */
+    short refCount;            /* reference count for allocation */
+    char states;               /* flag info */
+    afs_int32 tokenTime;       /* last time tokens were set, used for timing out conn data */
+    afs_int32 stLen;           /* ticket length (if kerberos, includes kvno at head) */
+    char *stp;                 /* pointer to ticket itself */
     struct ClearToken ct;
-    struct afs_exporter        *exporter;  /* more info about the exporter for the remote user */
+    struct afs_exporter *exporter;     /* more info about the exporter for the remote user */
 };
 
 struct conn {
     /* Per-connection block. */
-    struct conn        *next;              /* Next dude same server. */
-    struct unixuser *user;         /* user validated with respect to. */
-    struct rx_connection *id;      /* RPC connid. */
-    struct srvAddr *srvr;          /* server associated with this conn */
-    short refCount;                /* reference count for allocation */
-    unsigned short port;           /* port associated with this connection */
-    char forceConnectFS;           /* Should we try again with these tokens? */
+    struct conn *next;         /* Next dude same server. */
+    struct unixuser *user;     /* user validated with respect to. */
+    struct rx_connection *id;  /* RPC connid. */
+    struct srvAddr *srvr;      /* server associated with this conn */
+    short refCount;            /* reference count for allocation */
+    unsigned short port;       /* port associated with this connection */
+    char forceConnectFS;       /* Should we try again with these tokens? */
 };
 
 
@@ -333,13 +332,13 @@ struct conn {
 
 #define        SRVADDR_MH      1
 #define        SRVADDR_ISDOWN  0x20    /* same as SRVR_ISDOWN */
-#define  SRVADDR_NOUSE    0x40    /* Don't use this srvAddr */
+#define  SRVADDR_NOUSE    0x40 /* Don't use this srvAddr */
 struct srvAddr {
-    struct srvAddr *next_bkt;   /* next item in hash bucket */
-    struct srvAddr *next_sa;    /* another interface on same host */
+    struct srvAddr *next_bkt;  /* next item in hash bucket */
+    struct srvAddr *next_sa;   /* another interface on same host */
     struct server *server;     /* back to parent */
-    struct conn        *conns;         /* All user connections to this server */
-    afs_int32 sa_ip;           /* Host addr in network byte order */
+    struct conn *conns;                /* All user connections to this server */
+    afs_int32 sa_ip;           /* Host addr in network byte order */
     u_short sa_iprank;         /* indiv ip address priority */
     u_short sa_portal;         /* port addr in network byte order */
     u_char sa_flags;
@@ -359,7 +358,7 @@ struct srvAddr {
 #define        SRVR_MULTIHOMED                 0x40
 #define        SRVR_ISGONE                     0x80
 #define        SNO_INLINEBULK                  0x100
-#define SNO_64BIT                       0x200 
+#define SNO_64BIT                       0x200
 
 #define afs_serverSetNo64Bit(s) ((s)->srvr->server->flags |= SNO_64BIT)
 #define afs_serverHasNo64Bit(s) ((s)->srvr->server->flags & SNO_64BIT)
@@ -371,9 +370,9 @@ struct server {
            afs_int32 addr_uniquifier;
            afs_int32 spares[2];
        } _srvUuid;
-        struct {
+       struct {
            struct srvAddr haddr;
-       } _srvId;       
+       } _srvId;
     } _suid;
 #define sr_uuid                _suid._srvUuid.suuid
 #define sr_addr_uniquifier     _suid._srvUuid.addr_uniquifier
@@ -383,112 +382,109 @@ struct server {
 #define sr_flags       _suid._srvId.haddr.flags
 #define sr_conns       _suid._srvId.haddr.conns
     struct server *next;       /* Ptr to next server in hash chain */
-    struct cell        *cell;          /* Cell in which this host resides */
+    struct cell *cell;         /* Cell in which this host resides */
     struct afs_cbr *cbrs;      /* Return list of callbacks */
     afs_int32 activationTime;  /* Time when this record was first activated */
     afs_int32 lastDowntimeStart;       /* Time when last downtime incident began */
     afs_int32 numDowntimeIncidents;    /* # (completed) downtime incidents */
     afs_int32 sumOfDowntimes;  /* Total downtime experienced, in seconds */
     struct srvAddr *addr;
-    afs_uint32 flags;                  /* Misc flags*/
+    afs_uint32 flags;          /* Misc flags */
 };
 
-#define        afs_PutServer(servp, locktype)  
+#define        afs_PutServer(servp, locktype)
 
 /* structs for some pioctls  - these are (or should be) 
  * also in venus.h
  */
 struct spref {
-       struct in_addr host;
-       unsigned short rank;
+    struct in_addr host;
+    unsigned short rank;
 };
 
 struct sprefrequest_33 {
-       unsigned short offset;
-       unsigned short num_servers;
+    unsigned short offset;
+    unsigned short num_servers;
 };
 
 
-struct sprefrequest {             /* new struct for 3.4 */
-       unsigned short offset;
-       unsigned short num_servers;
-       unsigned short flags;
+struct sprefrequest {          /* new struct for 3.4 */
+    unsigned short offset;
+    unsigned short num_servers;
+    unsigned short flags;
 };
 #define DBservers 1
 
 struct sprefinfo {
-       unsigned short next_offset;
-       unsigned short num_servers;
-       struct spref servers[1];                /* we overrun this array intentionally...*/
+    unsigned short next_offset;
+    unsigned short num_servers;
+    struct spref servers[1];   /* we overrun this array intentionally... */
 };
 
 struct setspref {
-       unsigned short flags;
-       unsigned short num_servers;
-       struct spref servers[1];                /* we overrun this array intentionally...*/
+    unsigned short flags;
+    unsigned short num_servers;
+    struct spref servers[1];   /* we overrun this array intentionally... */
 };
 /* struct for GAG pioctl
  */
 struct gaginfo {
-       afs_uint32 showflags, logflags, logwritethruflag, spare[3];
-       unsigned char spare2[128];
+    afs_uint32 showflags, logflags, logwritethruflag, spare[3];
+    unsigned char spare2[128];
 };
 #define GAGUSER    1
 #define GAGCONSOLE 2
 #define logwritethruON 1
 
 struct rxparams {
-       afs_int32 rx_initReceiveWindow, rx_maxReceiveWindow,
-             rx_initSendWindow, rx_maxSendWindow, rxi_nSendFrags,
-             rxi_nRecvFrags, rxi_OrphanFragSize;
-       afs_int32 rx_maxReceiveSize, rx_MyMaxSendSize;
-       afs_uint32 spare[21];
-      };
+    afs_int32 rx_initReceiveWindow, rx_maxReceiveWindow, rx_initSendWindow,
+       rx_maxSendWindow, rxi_nSendFrags, rxi_nRecvFrags, rxi_OrphanFragSize;
+    afs_int32 rx_maxReceiveSize, rx_MyMaxSendSize;
+    afs_uint32 spare[21];
+};
 
 /* struct for checkservers */
 
-struct chservinfo
-{
-        int magic;
-       char tbuffer[128];
-       int tsize;
-       afs_int32 tinterval;
-       afs_int32 tflags;
-}
-;
+struct chservinfo {
+    int magic;
+    char tbuffer[128];
+    int tsize;
+    afs_int32 tinterval;
+    afs_int32 tflags;
+};
 
 
 /* state bits for volume */
-#define VRO                    1               /* volume is readonly */
-#define VRecheck               2               /* recheck volume info with server */
-#define        VBackup                 4               /* is this a backup volume? */
-#define        VForeign                8               /* this is a non-afs volume */
-#define VResort         16   /* server order was rearranged, sort when able */
-#define VMoreReps       32   /* This volume has more replicas than we are   */
-                             /* keeping track of now -- check with VLDB     */
+#define VRO                    1       /* volume is readonly */
+#define VRecheck               2       /* recheck volume info with server */
+#define        VBackup                 4       /* is this a backup volume? */
+#define        VForeign                8       /* this is a non-afs volume */
+#define VResort         16     /* server order was rearranged, sort when able */
+#define VMoreReps       32     /* This volume has more replicas than we are   */
+                            /* keeping track of now -- check with VLDB     */
 
- enum repstate { not_busy, end_not_busy = 6, rd_busy, rdwr_busy, offline };
+enum repstate { not_busy, end_not_busy = 6, rd_busy, rdwr_busy, offline };
 
 struct volume {
     /* One structure per volume, describing where the volume is located
-         and where its mount points are. */
+     * and where its mount points are. */
     struct volume *next;       /* Next volume in hash list. */
-    afs_int32 cell;                    /* the cell in which the volume resides */
+    afs_int32 cell;            /* the cell in which the volume resides */
     afs_rwlock_t lock;         /* the lock for this structure */
     afs_int32 volume;          /* This volume's ID number. */
     char *name;                        /* This volume's name, or 0 if unknown */
-    struct server *serverHost[MAXHOSTS];    /* servers serving this volume */
-    enum repstate status[MAXHOSTS]; /* busy, offline, etc */
+    struct server *serverHost[MAXHOSTS];       /* servers serving this volume */
+    enum repstate status[MAXHOSTS];    /* busy, offline, etc */
     struct VenusFid dotdot;    /* dir to access as .. */
     struct VenusFid mtpoint;   /* The mount point for this volume. */
     afs_int32 rootVnode, rootUnique;   /* Volume's root fid */
     afs_int32 roVol;
     afs_int32 backVol;
-    afs_int32 rwVol;                   /* For r/o vols, original read/write volume. */
-    afs_int32 accessTime;              /* last time we used it */
-    afs_int32 vtix;                    /* volume table index */
+    afs_int32 rwVol;           /* For r/o vols, original read/write volume. */
+    afs_int32 accessTime;      /* last time we used it */
+    afs_int32 vtix;            /* volume table index */
     afs_int32 copyDate;                /* copyDate field, for tracking vol releases */
-    afs_int32 expireTime;            /* for per-volume callbacks... */
+    afs_int32 expireTime;      /* for per-volume callbacks... */
     short refCount;            /* reference count for allocation */
     char states;               /* here for alignment reasons */
 };
@@ -497,9 +493,9 @@ struct volume {
 
 /* format of an entry in volume info file */
 struct fvolume {
-    afs_int32 cell;                    /* cell for this entry */
+    afs_int32 cell;            /* cell for this entry */
     afs_int32 volume;          /* volume */
-    afs_int32 next;                    /* has index */
+    afs_int32 next;            /* has index */
     struct VenusFid dotdot;    /* .. value */
     struct VenusFid mtpoint;   /* mt point's fid */
     afs_int32 rootVnode, rootUnique;   /* Volume's root fid */
@@ -555,60 +551,50 @@ struct SimpleLocks {
 #define VPageCleaning 0x2      /* Solaris - Cache Trunc Daemon sez keep out */
 
 #define        CPSIZE      2
-#if defined(AFS_FBSD_ENV)
-#define vrefCount   v.v_usecount
-#else
-#if defined(AFS_OBSD_ENV)
+#if defined(AFS_XBSD_ENV)
 #define vrefCount   v->v_usecount
 #else
 #define vrefCount   v.v_count
-#endif /* AFS_OBSD_ENV */
-#endif /* AFS_FBSD_ENV */
+#endif /* AFS_XBSD_ENV */
 
-#ifdef AFS_LINUX24_ENV
+#if defined(AFS_LINUX24_ENV)
 #define VREFCOUNT(v)           atomic_read(&((vnode_t *) v)->v_count)
 #define VREFCOUNT_SET(v, c)    atomic_set(&((vnode_t *) v)->v_count, c)
 #define VREFCOUNT_DEC(v)       atomic_dec(&((vnode_t *) v)->v_count)
 #define VREFCOUNT_INC(v)       atomic_inc(&((vnode_t *) v)->v_count)
-#define DLOCK()      spin_lock(&dcache_lock)
-#define DUNLOCK()    spin_unlock(&dcache_lock)
-#define DGET(d)      dget_locked(d)
-#define DCOUNT(d)    atomic_read(&(d)->d_count)
 #else
 #define VREFCOUNT(v)           ((v)->vrefCount)
 #define VREFCOUNT_SET(v, c)    (v)->vrefCount = c;
 #define VREFCOUNT_DEC(v)       (v)->vrefCount--;
 #define VREFCOUNT_INC(v)       (v)->vrefCount++;
-#define DLOCK()
-#define DUNLOCK()
-#define DGET(d)      dget(d)
-#define DCOUNT(d)    ((d)->d_count)
+#define d_unhash(d) list_empty(&(d)->d_hash)
+#define dget_locked(d) dget(d)
 #endif
 
-#define        AFS_MAXDV   0x7fffffff      /* largest dataversion number */
+#define        AFS_MAXDV   0x7fffffff  /* largest dataversion number */
 #ifdef AFS_64BIT_CLIENT
-#define AFS_NOTRUNC 0x7fffffffffffffffLL  /* largest positive int64 number */
+#define AFS_NOTRUNC 0x7fffffffffffffffLL       /* largest positive int64 number */
 #else /* AFS_64BIT_CLIENT */
-#define        AFS_NOTRUNC 0x7fffffff      /* largest dataversion number */
+#define        AFS_NOTRUNC 0x7fffffff  /* largest dataversion number */
 #endif /* AFS_64BIT_CLIENT */
 
-extern afs_int32 vmPageHog; /* counter for # of vnodes which are page hogs. */
+extern afs_int32 vmPageHog;    /* counter for # of vnodes which are page hogs. */
 
 /*
  * Fast map from vcache to dcache
  */
 struct vtodc {
-    struct dcache *    dc;
-    afs_uint32         stamp;
-    struct osi_file *  f;
-    afs_offs_t         minLoc; /* smallest offset into dc. */
-    afs_offs_t         len;    /* largest offset into dc. */
+    struct dcache *dc;
+    afs_uint32 stamp;
+    struct osi_file *f;
+    afs_offs_t minLoc;         /* smallest offset into dc. */
+    afs_offs_t len;            /* largest offset into dc. */
 };
 
-extern afs_uint32 afs_stampValue;              /* stamp for pair's usage */
+extern afs_uint32 afs_stampValue;      /* stamp for pair's usage */
 #define        MakeStamp()     (++afs_stampValue)
 
-#if defined(AFS_OBSD_ENV)
+#if defined(AFS_XBSD_ENV)
 #define VTOAFS(v) ((struct vcache *)(v)->v_data)
 #define AFSTOV(vc) ((vc)->v)
 #else
@@ -626,31 +612,31 @@ extern afs_uint32 afs_stampValue;         /* stamp for pair's usage */
  * !(avc->nextfree) && !avc->vlruq.next => (FreeVCList == avc->nextfree)
  */
 struct vcache {
-#if defined(AFS_OBSD_ENV)
+#if defined(AFS_XBSD_ENV)
     struct vnode *v;
 #else
-    struct vnode v;                    /* Has reference count in v.v_count */
+    struct vnode v;            /* Has reference count in v.v_count */
 #endif
-    struct afs_q vlruq;                        /* lru q next and prev */
-    struct vcache *nextfree;           /* next on free list (if free) */
-    struct vcache *hnext;              /* Hash next */
+    struct afs_q vlruq;                /* lru q next and prev */
+    struct vcache *nextfree;   /* next on free list (if free) */
+    struct vcache *hnext;      /* Hash next */
     struct VenusFid fid;
     struct mstat {
-        afs_size_t Length;
-        afs_hyper_t DataVersion;
-        afs_uint32 Date;
-        afs_uint32 Owner;
+       afs_size_t Length;
+       afs_hyper_t DataVersion;
+       afs_uint32 Date;
+       afs_uint32 Owner;
        afs_uint32 Group;
-        ushort Mode;                   /* XXXX Should be afs_int32 XXXX */
-        ushort LinkCount;
+       afs_uint16 Mode;        /* XXXX Should be afs_int32 XXXX */
+       afs_uint16 LinkCount;
        /* vnode type is in v.v_type */
     } m;
-    afs_rwlock_t lock;                 /* The lock on the vcache contents. */
+    afs_rwlock_t lock;         /* The lock on the vcache contents. */
 #if    defined(AFS_SUN5_ENV)
     /* Lock used to protect the activeV, multipage, and vstates fields.
      * Do not try to get the vcache lock when the vlock is held */
     afs_rwlock_t vlock;
-#endif /* defined(AFS_SUN5_ENV) */
+#endif                         /* defined(AFS_SUN5_ENV) */
 #if    defined(AFS_SUN5_ENV)
     krwlock_t rwlock;
     struct cred *credp;
@@ -664,76 +650,76 @@ struct vcache {
 #if defined(AFS_AIX51_ENV)
     vmid_t segid;
 #else
-    int  segid;
+    int segid;
 #endif
     struct ucred *credp;
 #endif
 #ifdef AFS_AIX_ENV
-    int ownslock;      /* pid of owner of excl lock, else 0 - defect 3083 */
+    int ownslock;              /* pid of owner of excl lock, else 0 - defect 3083 */
 #endif
 #ifdef AFS_DARWIN_ENV
-    struct lock__bsd__      rwlock;
+    struct lock__bsd__ rwlock;
 #endif
 #ifdef AFS_XBSD_ENV
-    struct lock      rwlock;
+    struct lock rwlock;
 #endif
-    afs_int32 parentVnode;             /* Parent dir, if a file. */
+    afs_int32 parentVnode;     /* Parent dir, if a file. */
     afs_int32 parentUnique;
-    struct VenusFid *mvid;             /* Either parent dir (if root) or root (if mt pt) */
-    char *linkData;                    /* Link data if a symlink. */
-    afs_hyper_t flushDV;               /* data version last flushed from text */
-    afs_hyper_t mapDV;                 /* data version last flushed from map */
-    afs_size_t truncPos;               /* truncate file to this position at next store */
-    struct server *callback;           /* The callback host, if any */
-    afs_uint32 cbExpires;              /* time the callback expires */
-    struct afs_q callsort;              /* queue in expiry order, sort of */
-    struct axscache *Access;            /* a list of cached access bits */
-    afs_int32 anyAccess;               /* System:AnyUser's access to this. */
-    afs_int32 last_looker;              /* pag/uid from last lookup here */
+    struct VenusFid *mvid;     /* Either parent dir (if root) or root (if mt pt) */
+    char *linkData;            /* Link data if a symlink. */
+    afs_hyper_t flushDV;       /* data version last flushed from text */
+    afs_hyper_t mapDV;         /* data version last flushed from map */
+    afs_size_t truncPos;       /* truncate file to this position at next store */
+    struct server *callback;   /* The callback host, if any */
+    afs_uint32 cbExpires;      /* time the callback expires */
+    struct afs_q callsort;     /* queue in expiry order, sort of */
+    struct axscache *Access;   /* a list of cached access bits */
+    afs_int32 anyAccess;       /* System:AnyUser's access to this. */
+    afs_int32 last_looker;     /* pag/uid from last lookup here */
 #if    defined(AFS_SUN5_ENV)
     afs_int32 activeV;
-#endif /* defined(AFS_SUN5_ENV) */
+#endif                         /* defined(AFS_SUN5_ENV) */
     struct SimpleLocks *slocks;
-    short opens;                       /* The numbers of opens, read or write, on this file. */
-    short execsOrWriters;              /* The number of execs (if < 0) or writers (if > 0) of
-                                          this file. */
-    short flockCount;                  /* count of flock readers, or -1 if writer */
-    char mvstat;                       /* 0->normal, 1->mt pt, 2->root. */
-    afs_uint32 states;                 /* state bits */
+    short opens;               /* The numbers of opens, read or write, on this file. */
+    short execsOrWriters;      /* The number of execs (if < 0) or writers (if > 0) of
+                                * this file. */
+    short flockCount;          /* count of flock readers, or -1 if writer */
+    char mvstat;               /* 0->normal, 1->mt pt, 2->root. */
+    afs_uint32 states;         /* state bits */
 #if    defined(AFS_SUN5_ENV)
-    afs_uint32 vstates;                        /* vstate bits */
-#endif /* defined(AFS_SUN5_ENV) */
+    afs_uint32 vstates;                /* vstate bits */
+#endif                         /* defined(AFS_SUN5_ENV) */
     struct vtodc quick;
     afs_uint32 symhintstamp;
     union {
-      struct vcache *symhint;
-      struct dcache *dchint;
+       struct vcache *symhint;
+       struct dcache *dchint;
     } h1;
 #ifdef AFS_LINUX22_ENV
-    u_short flushcnt; /* Number of flushes which haven't released yet. */
-    u_short mapcnt; /* Number of mappings of this file. */
+    u_short flushcnt;          /* Number of flushes which haven't released yet. */
+    u_short mapcnt;            /* Number of mappings of this file. */
 #endif
 #if defined(AFS_SGI_ENV)
-    daddr_t lastr;                     /* for read-ahead */
+    daddr_t lastr;             /* for read-ahead */
 #ifdef AFS_SGI64_ENV
-    uint64_t vc_rwlockid;              /* kthread owning rwlock */
+    uint64_t vc_rwlockid;      /* kthread owning rwlock */
 #else
-    short vc_rwlockid;                 /* pid of process owning rwlock */
+    short vc_rwlockid;         /* pid of process owning rwlock */
 #endif
-    short vc_locktrips;                        /* # of rwlock reacquisitions */
-    sema_t vc_rwlock;                  /* vop_rwlock for afs */
-    pgno_t mapcnt;                     /* # of pages mapped */
-    struct cred *cred;                 /* last writer's cred */
+    short vc_locktrips;                /* # of rwlock reacquisitions */
+    sema_t vc_rwlock;          /* vop_rwlock for afs */
+    pgno_t mapcnt;             /* # of pages mapped */
+    struct cred *cred;         /* last writer's cred */
 #ifdef AFS_SGI64_ENV
     struct bhv_desc vc_bhv_desc;       /* vnode's behavior data. */
 #endif
-#endif /* AFS_SGI_ENV */
-    afs_int32 vc_error;                        /* stash write error for this vnode. */
-    int xlatordv;                      /* Used by nfs xlator */
+#endif                         /* AFS_SGI_ENV */
+    afs_int32 vc_error;                /* stash write error for this vnode. */
+    int xlatordv;              /* Used by nfs xlator */
     struct AFS_UCRED *uncred;
-    int asynchrony;                     /* num kbytes to store behind */
+    int asynchrony;            /* num kbytes to store behind */
 #ifdef AFS_SUN5_ENV
-    short multiPage;                   /* count of multi-page getpages in progress */
+    short multiPage;           /* count of multi-page getpages in progress */
 #endif
 };
 
@@ -742,7 +728,7 @@ struct vcache {
 
 #define        DONT_CHECK_MODE_BITS    0
 #define        CHECK_MODE_BITS         1
-#define CMB_ALLOW_EXEC_AS_READ  2 /* For the NFS xlator */
+#define CMB_ALLOW_EXEC_AS_READ  2      /* For the NFS xlator */
 
 #if defined(AFS_SGI_ENV)
 #define AVCRWLOCK(avc)         (valusema(&(avc)->vc_rwlock) <= 0)
@@ -758,7 +744,7 @@ struct vcache {
 #ifdef AFS_SGI53_ENV
 #ifdef AFS_SGI62_ENV
 #define AFS_RWLOCK_T vrwlock_t
-#else 
+#else
 #define AFS_RWLOCK_T int
 #endif /* AFS_SGI62_ENV */
 #ifdef AFS_SGI64_ENV
@@ -782,7 +768,7 @@ struct vcxstat {
     struct VenusFid fid;
     afs_hyper_t DataVersion;
     afs_rwlock_t lock;
-    afs_int32 parentVnode;     
+    afs_int32 parentVnode;
     afs_int32 parentUnique;
     afs_hyper_t flushDV;
     afs_hyper_t mapDV;
@@ -800,14 +786,14 @@ struct vcxstat {
 };
 
 struct sbstruct {
-  int sb_thisfile;
-  int sb_default;
+    int sb_thisfile;
+    int sb_default;
 };
 
 /* CM inititialization parameters. What CM actually used after calculations
  * based on passed in arguments.
  */
-#define CMI_VERSION 1 /* increment when adding new fields. */
+#define CMI_VERSION 1          /* increment when adding new fields. */
 struct cm_initparams {
     int cmi_version;
     int cmi_nChunkFiles;
@@ -816,10 +802,10 @@ struct cm_initparams {
     int cmi_nVolumeCaches;
     int cmi_firstChunkSize;
     int cmi_otherChunkSize;
-    int cmi_cacheSize;  /* The original cache size, in 1K blocks. */
+    int cmi_cacheSize;         /* The original cache size, in 1K blocks. */
     unsigned cmi_setTime:1;
     unsigned cmi_memCache:1;
-    int spare[16-9]; /* size of struct is 16 * 4 = 64 bytes */
+    int spare[16 - 9];         /* size of struct is 16 * 4 = 64 bytes */
 };
 
 
@@ -855,19 +841,19 @@ struct cm_initparams {
 
 
 /* flags in afs_indexFlags array */
-#define        IFEverUsed      1               /* index entry has >= 1 byte of data */
-#define        IFFree          2               /* index entry in freeDCList */
-#define        IFDataMod       4               /* file needs to be written out */
-#define        IFFlag          8               /* utility flag */
+#define        IFEverUsed      1       /* index entry has >= 1 byte of data */
+#define        IFFree          2       /* index entry in freeDCList */
+#define        IFDataMod       4       /* file needs to be written out */
+#define        IFFlag          8       /* utility flag */
 #define        IFDirtyPages    16
 #define        IFAnyPages      32
-#define        IFDiscarded     64              /* index entry in discardDCList */
+#define        IFDiscarded     64      /* index entry in discardDCList */
 
 struct afs_ioctl {
-       char *in;               /* input buffer */
-       char *out;              /* output buffer */
-       short in_size;          /* Size of input buffer <= 2K */
-       short out_size;         /* Maximum size of output buffer, <= 2K */
+    char *in;                  /* input buffer */
+    char *out;                 /* output buffer */
+    short in_size;             /* Size of input buffer <= 2K */
+    short out_size;            /* Maximum size of output buffer, <= 2K */
 };
 
 /*
@@ -890,7 +876,7 @@ struct afs_ioctl32 {
  * instead of using it.
  */
 struct afs_fheader {
-#define AFS_FHMAGIC        0x7635abaf /* uses version number */
+#define AFS_FHMAGIC        0x7635abaf  /* uses version number */
     afs_int32 magic;
 #if defined(AFS_SUN57_64BIT_ENV)
 #define AFS_CI_VERSION 3
@@ -908,10 +894,10 @@ struct afs_fheader {
  */
 #define afs_inode_t ino64_t
 #else
-#if defined(AFS_LINUX_64BIT_KERNEL)
+#if defined(AFS_LINUX_64BIT_KERNEL) && !defined(AFS_S390X_LINUX24_ENV)
 #define afs_inode_t long
 #else
-#if defined(AFS_AIX51_ENV)
+#if defined(AFS_AIX51_ENV) || defined(AFS_HPUX1123_ENV)
 #define afs_inode_t ino_t
 #else
 #define afs_inode_t afs_int32
@@ -940,16 +926,18 @@ struct fcache {
 /* kept in memory */
 struct dcache {
     struct afs_q lruq;         /* Free queue for in-memory images */
+    struct afs_q dirty;                /* Queue of dirty entries that need written */
     afs_rwlock_t lock;         /* Protects validPos, some f */
     afs_rwlock_t tlock;                /* Atomizes updates to refCount */
     afs_rwlock_t mflock;       /* Atomizes accesses/updates to mflags */
     afs_size_t validPos;       /* number of valid bytes during fetch */
-    afs_int32 index;           /* The index in the CacheInfo file*/
+    afs_int32 index;           /* The index in the CacheInfo file */
     short refCount;            /* Associated reference count. */
     char dflags;               /* Data flags */
     char mflags;               /* Meta flags */
     struct fcache f;           /* disk image */
     afs_int32 stamp;           /* used with vtodc struct for hints */
+    afs_hyper_t atime;         /* access time */
 
     /*
      * Locking rules:
@@ -983,7 +971,7 @@ struct dcache {
      */
 };
 /* this is obsolete and should be removed */
-#define ihint stamp 
+#define ihint stamp
 
 /* macro to mark a dcache entry as bad */
 #define ZapDCE(x) \
@@ -1025,9 +1013,9 @@ struct dcache {
        avc->opens--;                                                         \
        avc->execsOrWriters--;                                                \
     }                                                                         \
-}                                                                             
+}
 
-#define        AFS_ZEROS   64      /* zero buffer */
+#define        AFS_ZEROS   64          /* zero buffer */
 
 /*#define afs_DirtyPages(avc)  (((avc)->states & CDirty) || osi_VMDirty_p((avc)))*/
 #define        afs_DirtyPages(avc)     ((avc)->states & CDirty)
@@ -1038,31 +1026,31 @@ struct dcache {
 */
 /* extern int afs_dhashsize; */
 #define        DCHash(v, c)    ((((v)->Fid.Vnode + (v)->Fid.Volume + (c))) & (afs_dhashsize-1))
-       /*Vnode, Chunk -> Hash table index*/
+       /*Vnode, Chunk -> Hash table index */
 #define        DVHash(v)       ((((v)->Fid.Vnode + (v)->Fid.Volume )) & (afs_dhashsize-1))
-       /*Vnode -> Other hash table index*/
+       /*Vnode -> Other hash table index */
 /* don't hash on the cell, our callback-breaking code sometimes fails to compute
     the cell correctly, and only scans one hash bucket */
 #define        VCHash(fid)     (((fid)->Fid.Volume + (fid)->Fid.Vnode) & (VCSIZE-1))
 
-extern struct dcache **afs_indexTable;         /*Pointers to in-memory dcache entries*/
-extern afs_int32 *afs_indexUnique;                     /*dcache entry Fid.Unique */
-extern afs_int32 *afs_dvnextTbl;                       /*Dcache hash table links */
-extern afs_int32 *afs_dcnextTbl;                       /*Dcache hash table links */
-extern afs_int32 afs_cacheFiles;                       /*Size of afs_indexTable*/
-extern afs_int32 afs_cacheBlocks;                      /*1K blocks in cache*/
-extern afs_int32 afs_cacheStats;                       /*Stat entries in cache*/
-extern struct vcache *afs_vhashT[VCSIZE];      /*Stat cache hash table*/
-extern afs_int32 afs_initState;                        /*Initialization state*/
-extern afs_int32 afs_termState;                        /* Termination state */
-extern struct VenusFid afs_rootFid;            /*Root for whole file system*/
-extern afs_int32 afs_allCBs;                           /* Count of callbacks*/
-extern afs_int32 afs_oddCBs;                           /* Count of odd callbacks*/
-extern afs_int32 afs_evenCBs;                  /* Count of even callbacks*/
-extern afs_int32 afs_allZaps;                  /* Count of fid deletes */
-extern afs_int32 afs_oddZaps;                  /* Count of odd fid deletes */
-extern afs_int32 afs_evenZaps;                 /* Count of even fid deletes */
-extern struct brequest afs_brs[NBRS];          /* request structures */
+extern struct dcache **afs_indexTable; /*Pointers to in-memory dcache entries */
+extern afs_int32 *afs_indexUnique;     /*dcache entry Fid.Unique */
+extern afs_int32 *afs_dvnextTbl;       /*Dcache hash table links */
+extern afs_int32 *afs_dcnextTbl;       /*Dcache hash table links */
+extern afs_int32 afs_cacheFiles;       /*Size of afs_indexTable */
+extern afs_int32 afs_cacheBlocks;      /*1K blocks in cache */
+extern afs_int32 afs_cacheStats;       /*Stat entries in cache */
+extern struct vcache *afs_vhashT[VCSIZE];      /*Stat cache hash table */
+extern afs_int32 afs_initState;        /*Initialization state */
+extern afs_int32 afs_termState;        /* Termination state */
+extern struct VenusFid afs_rootFid;    /*Root for whole file system */
+extern afs_int32 afs_allCBs;   /* Count of callbacks */
+extern afs_int32 afs_oddCBs;   /* Count of odd callbacks */
+extern afs_int32 afs_evenCBs;  /* Count of even callbacks */
+extern afs_int32 afs_allZaps;  /* Count of fid deletes */
+extern afs_int32 afs_oddZaps;  /* Count of odd fid deletes */
+extern afs_int32 afs_evenZaps; /* Count of even fid deletes */
+extern struct brequest afs_brs[NBRS];  /* request structures */
 
 #define        UHash(auid)     ((auid) & (NUSERS-1))
 #define        VHash(avol)     ((avol)&(NVOLS-1))
@@ -1088,7 +1076,7 @@ extern struct brequest afs_brs[NBRS];             /* request structures */
 #endif
 #endif
 
-#define DO_STATS 1  /* bits used by FindVCache */
+#define DO_STATS 1             /* bits used by FindVCache */
 #define DO_VLRU 2
 
 /* values for flag param of afs_CheckVolumeNames */
@@ -1121,12 +1109,12 @@ extern struct brequest afs_brs[NBRS];           /* request structures */
  * afs_GetDownD wakes those processes once the cache is 95% full
  * (CM_CACHESIZEDRAINEDPCT).
  */
-#define CM_MAXDISCARDEDCHUNKS  16      /* # of chunks */
-#define CM_DCACHECOUNTFREEPCT  95      /* max pct of chunks in use */
-#define CM_DCACHESPACEFREEPCT  90      /* max pct of space in use */
-#define CM_DCACHEEXTRAPCT       5      /* extra to get when freeing */
-#define CM_CACHESIZEDRAINEDPCT 95      /* wakeup processes when down to here.*/
-#define CM_WAITFORDRAINPCT     98      /* sleep if cache is this full. */
+#define CM_MAXDISCARDEDCHUNKS  16      /* # of chunks */
+#define CM_DCACHECOUNTFREEPCT  95      /* max pct of chunks in use */
+#define CM_DCACHESPACEFREEPCT  90      /* max pct of space in use */
+#define CM_DCACHEEXTRAPCT       5      /* extra to get when freeing */
+#define CM_CACHESIZEDRAINEDPCT 95      /* wakeup processes when down to here. */
+#define CM_WAITFORDRAINPCT     98      /* sleep if cache is this full. */
 
 #define afs_CacheIsTooFull() \
     (afs_blocksUsed - afs_blocksDiscarded > \
@@ -1135,7 +1123,7 @@ extern struct brequest afs_brs[NBRS];             /* request structures */
        ((100-CM_DCACHECOUNTFREEPCT)*afs_cacheFiles)/100)
 
 /* Handy max length of a numeric string. */
-#define        CVBS    12  /* max afs_int32 is 2^32 ~ 4*10^9, +1 for NULL, +luck */
+#define        CVBS    12              /* max afs_int32 is 2^32 ~ 4*10^9, +1 for NULL, +luck */
 
 #define refpanic(foo) if (afs_norefpanic) \
         { printf( foo ); afs_norefpanic++;} else osi_Panic( foo )
@@ -1166,13 +1154,11 @@ extern struct brequest afs_brs[NBRS];           /* request structures */
 #ifndef afs_vnodeToDev
 #if defined(AFS_SGI62_ENV) || defined(AFS_HAVE_VXFS) || defined(AFS_DARWIN_ENV)
 #define afs_vnodeToDev(V) VnodeToDev(V)
-#else
-#ifdef AFS_DECOSF_ENV
+#elif defined(AFS_DECOSF_ENV)
 #define afs_vnodeToDev(V) osi_vnodeToDev(V)
 #else
 #define afs_vnodeToDev(V) (VTOI(V)->i_dev)
-#endif /* AFS_DECOSF_ENV */
-#endif /* AFS_SGI62_ENV */
+#endif
 #endif
 
 
@@ -1204,7 +1190,8 @@ struct afs_fakestat_state {
 extern int afs_fakestat_enable;
 
 struct buffer {
-    ino_t fid[1];       /* Unique cache key + i/o addressing */
+    afs_int32 fid;             /* is adc->index, the cache file number */
+    afs_inode_t inode;         /* is adc->f.inode, the inode number of the cache file */
     afs_int32 page;
     afs_int32 accesstime;
     struct buffer *hashNext;
@@ -1215,15 +1202,15 @@ struct buffer {
 #if AFS_USEBUFFERS
     struct buf *bufp;
 #endif
-    afs_rwlock_t lock;          /* the lock for this structure */
+    afs_rwlock_t lock;         /* the lock for this structure */
 };
 
 /* afs_memcache.c */
 struct memCacheEntry {
-    int size;      /* # of valid bytes in this entry */
-    int dataSize;  /* size of allocated data area */
+    int size;                  /* # of valid bytes in this entry */
+    int dataSize;              /* size of allocated data area */
     afs_lock_t afs_memLock;
-    char *data;    /* bytes */
+    char *data;                        /* bytes */
 };
 
 /* First 32 bits of capabilities */
@@ -1231,5 +1218,4 @@ struct memCacheEntry {
 
 #define CAPABILITY_BITS 1
 
-#endif /* _AFS_H_ */
-
+#endif /* _AFS_H_ */