fix-indent-bug-with-lock-macros-part-two-20040818
[openafs.git] / src / vol / vnode.c
index ee3e663..51568e1 100644 (file)
@@ -16,7 +16,8 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-RCSID("$Header$");
+RCSID
+    ("$Header$");
 
 #include <errno.h>
 #include <stdio.h>
@@ -42,8 +43,8 @@ RCSID("$Header$");
 #include <afs/afssyscalls.h>
 #include "ihandle.h"
 #include "vnode.h"
-#include "partition.h"
 #include "volume.h"
+#include "partition.h"
 #if defined(AFS_SGI_ENV)
 #include "sys/types.h"
 #include "fcntl.h"
@@ -63,12 +64,16 @@ RCSID("$Header$");
 #endif /* AFS_NT40_ENV */
 #include <sys/stat.h>
 
+/*@printflike@*/ extern void Log(const char *format, ...);
+
+/*@printflike@*/ extern void Abort(const char *format, ...);
+
 
 struct VnodeClassInfo VnodeClassInfo[nVNODECLASSES];
 
-private int moveHash();
-void StickOnLruChain_r();
-void VPutVnode_r();
+private int moveHash(register Vnode * vnp, bit32 newHash);
+void StickOnLruChain_r(register Vnode * vnp,
+                      register struct VnodeClassInfo *vcp);
 
 #define BAD_IGET       -1000
 
@@ -97,10 +102,12 @@ void VPutVnode_r();
 /* logging stuff for finding bugs */
 #define        THELOGSIZE      5120
 static afs_int32 theLog[THELOGSIZE];
-static afs_int32 vnLogPtr=0;
+static afs_int32 vnLogPtr = 0;
+void
 VNLog(aop, anparms, av1, av2, av3, av4)
-afs_int32 aop, anparms;
-afs_int32 av1, av2, av3,av4; {
+     afs_int32 aop, anparms;
+     afs_int32 av1, av2, av3, av4;
+{
     register afs_int32 temp;
     afs_int32 data[4];
 
@@ -109,14 +116,17 @@ afs_int32 av1, av2, av3,av4; {
     data[1] = av2;
     data[2] = av3;
     data[3] = av4;
-    if (anparms>4) anparms = 4;        /* do bounds checking */
+    if (anparms > 4)
+       anparms = 4;            /* do bounds checking */
 
-    temp = (aop<<16) | anparms;
+    temp = (aop << 16) | anparms;
     theLog[vnLogPtr++] = temp;
-    if (vnLogPtr >= THELOGSIZE) vnLogPtr = 0;
-    for(temp=0;temp<anparms;temp++) {
+    if (vnLogPtr >= THELOGSIZE)
+       vnLogPtr = 0;
+    for (temp = 0; temp < anparms; temp++) {
        theLog[vnLogPtr++] = data[temp];
-       if (vnLogPtr >= THELOGSIZE) vnLogPtr = 0;
+       if (vnLogPtr >= THELOGSIZE)
+           vnLogPtr = 0;
     }
 }
 
@@ -129,15 +139,18 @@ afs_int32 av1, av2, av3,av4; {
  * when there are not many volumes represented), and spread
  * equally amongst vnodes within a single volume.
  */
-int VolumeHashOffset_r() {
+int
+VolumeHashOffset_r(void)
+{
     static int nextVolumeHashOffset = 0;
     /* hashindex Must be power of two in size */
 #   define hashShift 3
 #   define hashMask ((1<<hashShift)-1)
-    static byte hashindex[1<<hashShift] = {0,128,64,192,32,160,96,224};
+    static byte hashindex[1 << hashShift] =
+       { 0, 128, 64, 192, 32, 160, 96, 224 };
     int offset;
-    offset = hashindex[nextVolumeHashOffset&hashMask]
-           + (nextVolumeHashOffset>>hashShift);
+    offset = hashindex[nextVolumeHashOffset & hashMask]
+       + (nextVolumeHashOffset >> hashShift);
     nextVolumeHashOffset++;
     return offset;
 }
@@ -151,40 +164,41 @@ private Vnode *VnodeHashTable[VNODE_HASH_TABLE_SIZE];
 /* Code to invalidate a vnode entry.  Called when we've damaged a vnode, and want
     to prevent future VGetVnode's from applying to it.  Leaves it in the same hash bucket
     but that shouldn't be important.  */
-VInvalidateVnode_r(avnode)
-register struct Vnode *avnode; {
-    avnode->changed_newTime = 0;    /* don't let it get flushed out again */
+void
+VInvalidateVnode_r(register struct Vnode *avnode)
+{
+    avnode->changed_newTime = 0;       /* don't let it get flushed out again */
     avnode->changed_oldTime = 0;
-    avnode->delete = 0;            /* it isn't deleted, erally */
-    avnode->cacheCheck = 0; /* invalid: prevents future vnode searches from working */
+    avnode->delete = 0;                /* it isn't deleted, erally */
+    avnode->cacheCheck = 0;    /* invalid: prevents future vnode searches from working */
 }
 
 /* Not normally called by general client; called by volume.c */
-VInitVnodes(class,nVnodes)
-    VnodeClass class;
-    int nVnodes;
+int
+VInitVnodes(VnodeClass class, int nVnodes)
 {
     byte *va;
     register struct VnodeClassInfo *vcp = &VnodeClassInfo[class];
 
     vcp->allocs = vcp->gets = vcp->reads = vcp->writes = 0;
     vcp->cacheSize = nVnodes;
-    switch(class) {
-      case vSmall:
-       assert(CHECKSIZE_SMALLVNODE);
+    switch (class) {
+    case vSmall:
+       assert(CHECKSIZE_SMALLVNODE);
        vcp->lruHead = NULL;
-        vcp->residentSize = SIZEOF_SMALLVNODE;
+       vcp->residentSize = SIZEOF_SMALLVNODE;
        vcp->diskSize = SIZEOF_SMALLDISKVNODE;
        vcp->magic = SMALLVNODEMAGIC;
        break;
-      case vLarge:
+    case vLarge:
        vcp->lruHead = NULL;
        vcp->residentSize = SIZEOF_LARGEVNODE;
        vcp->diskSize = SIZEOF_LARGEDISKVNODE;
        vcp->magic = LARGEVNODEMAGIC;
-        break;
+       break;
     }
-    {  int s = vcp->diskSize-1;
+    {
+       int s = vcp->diskSize - 1;
        int n = 0;
        while (s)
            s >>= 1, n++;
@@ -192,13 +206,13 @@ VInitVnodes(class,nVnodes)
     }
 
     if (nVnodes == 0)
-           return 0;
+       return 0;
 
-    va = (byte *) calloc(nVnodes,vcp->residentSize);
-    assert (va != NULL);
+    va = (byte *) calloc(nVnodes, vcp->residentSize);
+    assert(va != NULL);
     while (nVnodes--) {
        Vnode *vnp = (Vnode *) va;
-       vnp->nUsers = 0;    /* no context switches */
+       vnp->nUsers = 0;        /* no context switches */
        Lock_Init(&vnp->lock);
        vnp->changed_oldTime = 0;
        vnp->changed_newTime = 0;
@@ -210,7 +224,7 @@ VInitVnodes(class,nVnodes)
 #else /* AFS_PTHREAD_ENV */
        vnp->writer = (PROCESS) 0;
 #endif /* AFS_PTHREAD_ENV */
-       vnp->hashIndex = 0;
+       vnp->hashIndex = 0;
        vnp->handle = NULL;
        if (vcp->lruHead == NULL)
            vcp->lruHead = vnp->lruNext = vnp->lruPrev = vnp;
@@ -230,8 +244,9 @@ VInitVnodes(class,nVnodes)
 /* allocate an *unused* vnode from the LRU chain, going backwards of course.  It shouldn't
     be necessary to specify that nUsers == 0 since if it is in the list, nUsers
     should be 0.  Things shouldn't be in lruq unless no one is using them.  */
-Vnode *VGetFreeVnode_r(vcp)
-struct VnodeClassInfo *vcp; {
+Vnode *
+VGetFreeVnode_r(struct VnodeClassInfo * vcp)
+{
     register Vnode *vnp;
 
     vnp = vcp->lruHead->lruPrev;
@@ -242,27 +257,23 @@ struct VnodeClassInfo *vcp; {
     return vnp;
 }
 
-static mlkReason=0;
+static mlkReason = 0;
 static mlkLastAlloc = 0;
 static mlkLastOver = 0;
 static mlkLastDelete = 0;
 
-Vnode *VAllocVnode(ec,vp,type)
-    Error *ec;
-    Volume *vp;
-    VnodeType type;
+Vnode *
+VAllocVnode(Error * ec, Volume * vp, VnodeType type)
 {
     Vnode *retVal;
-    VOL_LOCK
+    VOL_LOCK;
     retVal = VAllocVnode_r(ec, vp, type);
-    VOL_UNLOCK
+    VOL_UNLOCK;
     return retVal;
 }
 
-Vnode *VAllocVnode_r(ec,vp,type)
-    Error *ec;
-    Volume *vp;
-    VnodeType type;
+Vnode *
+VAllocVnode_r(Error * ec, Volume * vp, VnodeType type)
 {
     register Vnode *vnp;
     VnodeId vnodeNumber;
@@ -284,16 +295,16 @@ Vnode *VAllocVnode_r(ec,vp,type)
     vcp = &VnodeClassInfo[class];
 
     if (!VolumeWriteable(vp)) {
-       *ec = VREADONLY;
+       *ec = (bit32) VREADONLY;
        return NULL;
     }
 
     unique = vp->nextVnodeUnique++;
     if (!unique)
-       unique = vp->nextVnodeUnique++;
+       unique = vp->nextVnodeUnique++;
 
     if (vp->nextVnodeUnique > V_uniquifier(vp)) {
-       VUpdateVolume_r(ec,vp);
+       VUpdateVolume_r(ec, vp);
        if (*ec)
            return NULL;
     }
@@ -305,26 +316,25 @@ Vnode *VAllocVnode_r(ec,vp,type)
     }
 
     /* Find a slot in the bit map */
-    bitNumber = VAllocBitmapEntry_r(ec,vp,&vp->vnodeIndex[class]);
+    bitNumber = VAllocBitmapEntry_r(ec, vp, &vp->vnodeIndex[class]);
     if (*ec)
-       return NULL;
-    vnodeNumber = bitNumberToVnodeNumber(bitNumber,class);
+       return NULL;
+    vnodeNumber = bitNumberToVnodeNumber(bitNumber, class);
 
     VNLog(2, 1, vnodeNumber);
     /* Prepare to move it to the new hash chain */
     newHash = VNODE_HASH(vp, vnodeNumber);
     for (vnp = VnodeHashTable[newHash];
-         vnp && (vnp->vnodeNumber!=vnodeNumber || vnp->volumePtr!=vp
-                || vnp->volumePtr->cacheCheck!=vnp->cacheCheck);
-         vnp = vnp->hashNext
-       );
+        vnp && (vnp->vnodeNumber != vnodeNumber || vnp->volumePtr != vp
+                || vnp->volumePtr->cacheCheck != vnp->cacheCheck);
+        vnp = vnp->hashNext);
     if (vnp) {
        /* slot already exists.  May even not be in lruq (consider store file locking a file being deleted)
-           so we may have to wait for it below */
+        * so we may have to wait for it below */
        VNLog(3, 2, vnodeNumber, (afs_int32) vnp);
 
        /* If first user, remove it from the LRU chain.  We can assume that
-          there is at least one item in the queue */
+        * there is at least one item in the queue */
        if (++vnp->nUsers == 1) {
            if (vnp == vcp->lruHead)
                vcp->lruHead = vcp->lruHead->lruNext;
@@ -336,17 +346,16 @@ Vnode *VAllocVnode_r(ec,vp,type)
            ObtainWriteLock(&vnp->lock);
        } else {
            /* follow locking hierarchy */
-           VOL_UNLOCK
+           VOL_UNLOCK;
            ObtainWriteLock(&vnp->lock);
-           VOL_LOCK
+           VOL_LOCK;
        }
 #ifdef AFS_PTHREAD_ENV
        vnp->writer = pthread_self();
 #else /* AFS_PTHREAD_ENV */
        LWP_CurrentProcess(&vnp->writer);
 #endif /* AFS_PTHREAD_ENV */
-    }
-    else {
+    } else {
        vnp = VGetFreeVnode_r(vcp);
        /* Remove vnode from LRU chain and grab a write lock */
        if (vnp == vcp->lruHead)
@@ -356,7 +365,7 @@ Vnode *VAllocVnode_r(ec,vp,type)
        if (vnp == vcp->lruHead || vcp->lruHead == NULL)
            Abort("VGetVnode: lru chain addled!\n");
        /* Initialize the header fields so noone allocates another
-          vnode with the same number */
+        * vnode with the same number */
        vnp->vnodeNumber = vnodeNumber;
        vnp->volumePtr = vp;
        vnp->cacheCheck = vp->cacheCheck;
@@ -370,35 +379,37 @@ Vnode *VAllocVnode_r(ec,vp,type)
        LWP_CurrentProcess(&vnp->writer);
 #endif /* AFS_PTHREAD_ENV */
        /* Sanity check:  is this vnode really not in use? */
-        { 
-         int size;
-         IHandle_t *ihP = vp->vnodeIndex[class].handle;
-         FdHandle_t *fdP;
-         off_t off = vnodeIndexOffset(vcp, vnodeNumber);
-
-         VOL_UNLOCK
-         fdP = IH_OPEN(ihP);
-         if (fdP == NULL)
-             Abort("VAllocVnode: can't open index file!\n");
-         if ((size = FDH_SIZE(fdP)) < 0)
-             Abort("VAllocVnode: can't stat index file!\n");
-         if (FDH_SEEK(fdP, off, SEEK_SET) < 0)
-             Abort("VAllocVnode: can't seek on index file!\n");
-         if (off < size) {
-             if (FDH_READ(fdP, &vnp->disk, vcp->diskSize) == vcp->diskSize) {
-                 if (vnp->disk.type != vNull)
-                     Abort("VAllocVnode:  addled bitmap or index!\n");
-             }
-         } else {
-             /* growing file - grow in a reasonable increment */
-             char *buf = (char *)malloc(16*1024);
-             memset(buf, 0, 16*1024);
-             FDH_WRITE(fdP, buf, 16*1024);
-             free(buf);
-         }
-         FDH_CLOSE(fdP);
-         VOL_LOCK
-      }
+       {
+           int size;
+           IHandle_t *ihP = vp->vnodeIndex[class].handle;
+           FdHandle_t *fdP;
+           off_t off = vnodeIndexOffset(vcp, vnodeNumber);
+
+           VOL_UNLOCK;
+           fdP = IH_OPEN(ihP);
+           if (fdP == NULL)
+               Abort("VAllocVnode: can't open index file!\n");
+           if ((size = FDH_SIZE(fdP)) < 0)
+               Abort("VAllocVnode: can't stat index file!\n");
+           if (FDH_SEEK(fdP, off, SEEK_SET) < 0)
+               Abort("VAllocVnode: can't seek on index file!\n");
+           if (off < size) {
+               if (FDH_READ(fdP, &vnp->disk, vcp->diskSize) == vcp->diskSize) {
+                   if (vnp->disk.type != vNull)
+                       Abort("VAllocVnode:  addled bitmap or index!\n");
+               }
+           } else {
+               /* growing file - grow in a reasonable increment */
+               char *buf = (char *)malloc(16 * 1024);
+               if (!buf)
+                   Abort("VAllocVnode: malloc failed\n");
+               memset(buf, 0, 16 * 1024);
+               (void)FDH_WRITE(fdP, buf, 16 * 1024);
+               free(buf);
+           }
+           FDH_CLOSE(fdP);
+           VOL_LOCK;
+       }
        VNLog(4, 2, vnodeNumber, (afs_int32) vnp);
     }
 
@@ -409,8 +420,8 @@ Vnode *VAllocVnode_r(ec,vp,type)
     LWP_CurrentProcess(&vnp->writer);
 #endif /* AFS_PTHREAD_ENV */
     memset(&vnp->disk, 0, sizeof(vnp->disk));
-    vnp->changed_newTime = 0; /* set this bit when vnode is updated */
-    vnp->changed_oldTime = 0; /* set this on CopyOnWrite. */
+    vnp->changed_newTime = 0;  /* set this bit when vnode is updated */
+    vnp->changed_oldTime = 0;  /* set this on CopyOnWrite. */
     vnp->delete = 0;
     vnp->disk.vnodeMagic = vcp->magic;
     vnp->disk.type = type;
@@ -419,33 +430,27 @@ Vnode *VAllocVnode_r(ec,vp,type)
     vcp->allocs++;
     return vnp;
 }
-    
-Vnode *VGetVnode(ec,vp,vnodeNumber,locktype)
-    Error *ec;
-    Volume *vp;
-    VnodeId vnodeNumber;
-    int locktype;      /* READ_LOCK or WRITE_LOCK, as defined in lock.h */
-{
+
+Vnode *
+VGetVnode(Error * ec, Volume * vp, VnodeId vnodeNumber, int locktype)
+{                              /* READ_LOCK or WRITE_LOCK, as defined in lock.h */
     Vnode *retVal;
-    VOL_LOCK
+    VOL_LOCK;
     retVal = VGetVnode_r(ec, vp, vnodeNumber, locktype);
-    VOL_UNLOCK
+    VOL_UNLOCK;
     return retVal;
 }
 
-Vnode *VGetVnode_r(ec,vp,vnodeNumber,locktype)
-    Error *ec;
-    Volume *vp;
-    VnodeId vnodeNumber;
-    int locktype;      /* READ_LOCK or WRITE_LOCK, as defined in lock.h */
-{
+Vnode *
+VGetVnode_r(Error * ec, Volume * vp, VnodeId vnodeNumber, int locktype)
+{                              /* READ_LOCK or WRITE_LOCK, as defined in lock.h */
     register Vnode *vnp;
     int newHash;
     VnodeClass class;
     struct VnodeClassInfo *vcp;
 
     *ec = 0;
-    mlkReason =        0;  /* last call didn't fail */
+    mlkReason = 0;             /* last call didn't fail */
 
     if (vnodeNumber == 0) {
        *ec = VNOVNODE;
@@ -455,21 +460,21 @@ Vnode *VGetVnode_r(ec,vp,vnodeNumber,locktype)
 
     VNLog(100, 1, vnodeNumber);
     if (programType == fileServer && !V_inUse(vp)) {
-        *ec = (vp->specialStatus ? vp->specialStatus : VOFFLINE);
+       *ec = (vp->specialStatus ? vp->specialStatus : VOFFLINE);
 
        /* If the volume is VBUSY (being cloned or dumped) and this is
         * a READ operation, then don't fail.
         */
        if ((*ec != VBUSY) || (locktype != READ_LOCK)) {
-          mlkReason = 2;
-          return NULL;
+           mlkReason = 2;
+           return NULL;
        }
        *ec = 0;
     }
     class = vnodeIdToClass(vnodeNumber);
     vcp = &VnodeClassInfo[class];
     if (locktype == WRITE_LOCK && !VolumeWriteable(vp)) {
-       *ec = VREADONLY;
+       *ec = (bit32) VREADONLY;
        mlkReason = 3;
        return NULL;
     }
@@ -485,20 +490,19 @@ Vnode *VGetVnode_r(ec,vp,vnodeNumber,locktype)
     /* See whether the vnode is in the cache. */
     newHash = VNODE_HASH(vp, vnodeNumber);
     for (vnp = VnodeHashTable[newHash];
-         vnp && (vnp->vnodeNumber!=vnodeNumber || vnp->volumePtr!=vp
-                || vnp->volumePtr->cacheCheck!=vnp->cacheCheck);
-         vnp = vnp->hashNext
-       );
+        vnp && (vnp->vnodeNumber != vnodeNumber || vnp->volumePtr != vp
+                || vnp->volumePtr->cacheCheck != vnp->cacheCheck);
+        vnp = vnp->hashNext);
     vcp->gets++;
     if (vnp == NULL) {
-       int     n;
+       int n;
        IHandle_t *ihP = vp->vnodeIndex[class].handle;
        FdHandle_t *fdP;
-        /* Not in cache; tentatively grab most distantly used one from the LRU
-           chain */
+       /* Not in cache; tentatively grab most distantly used one from the LRU
+        * chain */
        vcp->reads++;
        vnp = VGetFreeVnode_r(vcp);
-        /* Remove it from the old hash chain */
+       /* Remove it from the old hash chain */
        moveHash(vnp, newHash);
        /* Remove it from the LRU chain */
        if (vnp == vcp->lruHead)
@@ -520,43 +524,39 @@ Vnode *VGetVnode_r(ec,vp,vnodeNumber,locktype)
 #ifdef AFS_PTHREAD_ENV
        vnp->writer = pthread_self();
 #else /* AFS_PTHREAD_ENV */
-         LWP_CurrentProcess(&vnp->writer);
+       LWP_CurrentProcess(&vnp->writer);
 #endif /* AFS_PTHREAD_ENV */
 
-        /* Read vnode from volume index */
-       VOL_UNLOCK
+       /* Read vnode from volume index */
+       VOL_UNLOCK;
        fdP = IH_OPEN(ihP);
        if (fdP == NULL) {
-           Log("VGetVnode: can't open index dev=%d, i=%s\n",
-               vp->device, PrintInode(NULL,
-                                      vp->vnodeIndex[class].handle->ih_ino));
+           Log("VGetVnode: can't open index dev=%u, i=%s\n", vp->device,
+               PrintInode(NULL, vp->vnodeIndex[class].handle->ih_ino));
            *ec = VIO;
-           mlkReason=9;
-       }
-       else if (FDH_SEEK(fdP, vnodeIndexOffset(vcp, vnodeNumber),
-                        SEEK_SET) < 0) {
-           Log ("VGetVnode: can't seek on index file vn=%d\n",vnodeNumber);
+           mlkReason = 9;
+       } else if (FDH_SEEK(fdP, vnodeIndexOffset(vcp, vnodeNumber), SEEK_SET)
+                  < 0) {
+           Log("VGetVnode: can't seek on index file vn=%u\n", vnodeNumber);
            *ec = VIO;
-           mlkReason=10;
+           mlkReason = 10;
            FDH_REALLYCLOSE(fdP);
-       }
-       else if ((n = FDH_READ(fdP, (char*)&vnp->disk, vcp->diskSize))
-                != vcp->diskSize) {
+       } else if ((n = FDH_READ(fdP, (char *)&vnp->disk, vcp->diskSize))
+                  != vcp->diskSize) {
            /* Don't take volume off line if the inumber is out of range
-              or the inode table is full. */
+            * or the inode table is full. */
            FDH_REALLYCLOSE(fdP);
-           VOL_LOCK
-           if(n == BAD_IGET) {
+           VOL_LOCK;
+           if (n == BAD_IGET) {
                Log("VGetVnode: bad inumber %s\n",
                    PrintInode(NULL, vp->vnodeIndex[class].handle->ih_ino));
                *ec = VIO;
                mlkReason = 4;
            }
            /* Check for disk errors.  Anything else just means that the vnode
-              is not allocated */
+            * is not allocated */
            if (n == -1 && errno == EIO) {
-               Log("VGetVnode: Couldn't read vnode %d, volume %u (%s); volume needs salvage\n",  
-                   vnodeNumber, V_id(vp), V_name(vp));
+               Log("VGetVnode: Couldn't read vnode %u, volume %u (%s); volume needs salvage\n", vnodeNumber, V_id(vp), V_name(vp));
                VForceOffline_r(vp);
                *ec = VSALVAGE;
                mlkReason = 4;
@@ -566,47 +566,44 @@ Vnode *VGetVnode_r(ec,vp,vnodeNumber,locktype)
            }
            VInvalidateVnode_r(vnp);
            if (vnp->nUsers-- == 1)
-               StickOnLruChain_r(vnp,vcp);
+               StickOnLruChain_r(vnp, vcp);
            ReleaseWriteLock(&vnp->lock);
            return NULL;
        }
        FDH_CLOSE(fdP);
-       VOL_LOCK
-        /* Quick check to see that the data is reasonable */
+       VOL_LOCK;
+       /* Quick check to see that the data is reasonable */
        if (vnp->disk.vnodeMagic != vcp->magic || vnp->disk.type == vNull) {
            if (vnp->disk.type == vNull) {
                *ec = VNOVNODE;
                mlkReason = 6;
                VInvalidateVnode_r(vnp);
                if (vnp->nUsers-- == 1)
-                   StickOnLruChain_r(vnp,vcp);
+                   StickOnLruChain_r(vnp, vcp);
                ReleaseWriteLock(&vnp->lock);
                return NULL;    /* The vnode is not allocated */
-           }
-           else {
+           } else {
                struct vnodeIndex *index = &vp->vnodeIndex[class];
-               int bitNumber = vnodeIdToBitNumber(vnodeNumber);
-               int offset = bitNumber >> 3;
+               unsigned int bitNumber = vnodeIdToBitNumber(vnodeNumber);
+               unsigned int offset = bitNumber >> 3;
 
                /* Test to see if vnode number is valid. */
-               if ((offset >= index->bitmapSize) ||
-                   ((*(index->bitmap+offset) & (1<<(bitNumber&0x7))) == 0)) {
-                   Log("VGetVnode: Request for unallocated vnode %u, volume %u (%s) denied.\n",
-                       vnodeNumber, V_id(vp), V_name(vp));
+               if ((offset >= index->bitmapSize)
+                   || ((*(index->bitmap + offset) & (1 << (bitNumber & 0x7)))
+                       == 0)) {
+                   Log("VGetVnode: Request for unallocated vnode %u, volume %u (%s) denied.\n", vnodeNumber, V_id(vp), V_name(vp));
                    mlkReason = 11;
                    *ec = VNOVNODE;
-               }
-               else {
-                   Log("VGetVnode: Bad magic number, vnode %d, volume %u (%s); volume needs salvage\n",  
-               vnodeNumber, V_id(vp), V_name(vp));
+               } else {
+                   Log("VGetVnode: Bad magic number, vnode %u, volume %u (%s); volume needs salvage\n", vnodeNumber, V_id(vp), V_name(vp));
                    vp->goingOffline = 1;       /* used to call VOffline, but that would mess
-                                                  up the volume ref count if called here */
+                                                * up the volume ref count if called here */
                    *ec = VSALVAGE;
                    mlkReason = 7;
                }
                VInvalidateVnode_r(vnp);
                if (vnp->nUsers-- == 1)
-                   StickOnLruChain_r(vnp,vcp);
+                   StickOnLruChain_r(vnp, vcp);
                ReleaseWriteLock(&vnp->lock);
                return NULL;
            }
@@ -616,8 +613,8 @@ Vnode *VGetVnode_r(ec,vp,vnodeNumber,locktype)
     } else {
        VNLog(101, 2, vnodeNumber, (afs_int32) vnp);
        if (++vnp->nUsers == 1) {
-       /* First user.  Remove it from the LRU chain.  We can assume that
-          there is at least one item in the queue */
+           /* First user.  Remove it from the LRU chain.  We can assume that
+            * there is at least one item in the queue */
            if (vnp == vcp->lruHead)
                vcp->lruHead = vcp->lruHead->lruNext;
            if (vnp == vcp->lruHead || vcp->lruHead == NULL)
@@ -626,7 +623,7 @@ Vnode *VGetVnode_r(ec,vp,vnodeNumber,locktype)
            vnp->lruNext->lruPrev = vnp->lruPrev;
        }
     }
-    VOL_UNLOCK
+    VOL_UNLOCK;
     if (locktype == READ_LOCK)
        ObtainReadLock(&vnp->lock);
     else {
@@ -634,16 +631,16 @@ Vnode *VGetVnode_r(ec,vp,vnodeNumber,locktype)
 #ifdef AFS_PTHREAD_ENV
        vnp->writer = pthread_self();
 #else /* AFS_PTHREAD_ENV */
-        LWP_CurrentProcess(&vnp->writer);
+       LWP_CurrentProcess(&vnp->writer);
 #endif /* AFS_PTHREAD_ENV */
     }
-    VOL_LOCK
+    VOL_LOCK;
     /* Check that the vnode hasn't been removed while we were obtaining
-       the lock */
+     * the lock */
     VNLog(102, 2, vnodeNumber, (afs_int32) vnp);
-    if ((vnp->disk.type == vNull) || (vnp->cacheCheck == 0)){
+    if ((vnp->disk.type == vNull) || (vnp->cacheCheck == 0)) {
        if (vnp->nUsers-- == 1)
-           StickOnLruChain_r(vnp,vcp);
+           StickOnLruChain_r(vnp, vcp);
        if (locktype == READ_LOCK)
            ReleaseReadLock(&vnp->lock);
        else
@@ -654,29 +651,25 @@ Vnode *VGetVnode_r(ec,vp,vnodeNumber,locktype)
        return NULL;
     }
     if (programType == fileServer)
-        VBumpVolumeUsage_r(vnp->volumePtr);/* Hack; don't know where it should be
-                                             called from.  Maybe VGetVolume */
+       VBumpVolumeUsage_r(vnp->volumePtr);     /* Hack; don't know where it should be
+                                                * called from.  Maybe VGetVolume */
     return vnp;
 }
 
 
-int  TrustVnodeCacheEntry = 1;
+int TrustVnodeCacheEntry = 1;
 /* This variable is bogus--when it's set to 0, the hash chains fill
    up with multiple versions of the same vnode.  Should fix this!! */
 void
-VPutVnode(ec,vnp)
-    Error *ec;
-    register Vnode *vnp;
+VPutVnode(Error * ec, register Vnode * vnp)
 {
-    VOL_LOCK
-    VPutVnode_r(ec,vnp);
-    VOL_UNLOCK
+    VOL_LOCK;
+    VPutVnode_r(ec, vnp);
+    VOL_UNLOCK;
 }
 
 void
-VPutVnode_r(ec,vnp)
-    Error *ec;
-    register Vnode *vnp;
+VPutVnode_r(Error * ec, register Vnode * vnp)
 {
     int writeLocked, offset;
     VnodeClass class;
@@ -684,7 +677,7 @@ VPutVnode_r(ec,vnp)
     int code;
 
     *ec = 0;
-    assert (vnp->nUsers != 0);
+    assert(vnp->nUsers != 0);
     class = vnodeIdToClass(vnp->vnodeNumber);
     vcp = &VnodeClassInfo[class];
     assert(vnp->disk.vnodeMagic == vcp->magic);
@@ -699,40 +692,44 @@ VPutVnode_r(ec,vnp)
        LWP_CurrentProcess(&thisProcess);
 #endif /* AFS_PTHREAD_ENV */
        VNLog(201, 2, (afs_int32) vnp,
-             ((vnp->changed_newTime) << 1) | ((vnp->changed_oldTime) << 1) | vnp->delete);
+             ((vnp->changed_newTime) << 1) | ((vnp->
+                                               changed_oldTime) << 1) | vnp->
+             delete);
        if (thisProcess != vnp->writer)
-           Abort("VPutVnode: Vnode at 0x%x locked by another process!\n",vnp);
+           Abort("VPutVnode: Vnode at 0x%x locked by another process!\n",
+                 vnp);
        if (vnp->changed_oldTime || vnp->changed_newTime || vnp->delete) {
            Volume *vp = vnp->volumePtr;
-           afs_int32 now = FT_ApproxTime();
+           afs_uint32 now = FT_ApproxTime();
            assert(vnp->cacheCheck == vp->cacheCheck);
 
            if (vnp->delete) {
-               /* No longer any directory entries for this vnode. Free the Vnode */
-               memset(&vnp->disk, 0, sizeof (vnp->disk));
+               /* No longer any directory entries for this vnode. Free the Vnode */
+               memset(&vnp->disk, 0, sizeof(vnp->disk));
                mlkLastDelete = vnp->vnodeNumber;
                /* delete flag turned off further down */
                VNLog(202, 2, vnp->vnodeNumber, (afs_int32) vnp);
            } else if (vnp->changed_newTime) {
-               vnp->disk.serverModifyTime = now;
+               vnp->disk.serverModifyTime = now;
            }
            if (vnp->changed_newTime)
                V_updateDate(vp) = vp->updateTime = now;
 
            /* The vnode has been changed. Write it out to disk */
-           if (!V_inUse(vp)) {
+           if (!V_inUse(vp)) {
                assert(V_needsSalvaged(vp));
                *ec = VSALVAGE;
            } else {
                IHandle_t *ihP = vp->vnodeIndex[class].handle;
                FdHandle_t *fdP;
-               VOL_UNLOCK
+               VOL_UNLOCK;
                fdP = IH_OPEN(ihP);
                if (fdP == NULL)
                    Abort("VPutVnode: can't open index file!\n");
                offset = vnodeIndexOffset(vcp, vnp->vnodeNumber);
                if (FDH_SEEK(fdP, offset, SEEK_SET) < 0) {
-                  Abort("VPutVnode: can't seek on index file! fdp=0x%x offset=%d, errno=%d\n",
+                   Abort
+                       ("VPutVnode: can't seek on index file! fdp=0x%x offset=%d, errno=%d\n",
                         fdP, offset, errno);
                }
                code = FDH_WRITE(fdP, &vnp->disk, vcp->diskSize);
@@ -740,25 +737,23 @@ VPutVnode_r(ec,vnp)
                    /* Don't force volume offline if the inumber is out of
                     * range or the inode table is full.
                     */
-                   VOL_LOCK
+                   VOL_LOCK;
                    if (code == BAD_IGET) {
                        Log("VPutVnode: bad inumber %s\n",
-                           PrintInode(NULL, vp->vnodeIndex[class].handle->ih_ino));
+                           PrintInode(NULL,
+                                      vp->vnodeIndex[class].handle->ih_ino));
                        *ec = VIO;
                    } else {
-                       Log("VPutVnode: Couldn't write vnode %d, volume %u (%s) (error %d)\n",
-                           vnp->vnodeNumber, V_id(vnp->volumePtr),
-                           V_name(vnp->volumePtr), code);
+                       Log("VPutVnode: Couldn't write vnode %u, volume %u (%s) (error %d)\n", vnp->vnodeNumber, V_id(vnp->volumePtr), V_name(vnp->volumePtr), code);
                        VForceOffline_r(vp);
                        *ec = VSALVAGE;
                    }
-                   VOL_UNLOCK
+                   VOL_UNLOCK;
                    FDH_REALLYCLOSE(fdP);
                } else {
                    FDH_CLOSE(fdP);
                }
-               VOL_LOCK
-
+               VOL_LOCK;
                /* If the vnode is to be deleted, and we wrote the vnode out,
                 * free its bitmap entry. Do after the vnode is written so we
                 * don't allocate from bitmap before the vnode is written
@@ -772,21 +767,23 @@ VPutVnode_r(ec,vnp)
            vcp->writes++;
            vnp->changed_newTime = vnp->changed_oldTime = 0;
        }
-    } else { /* Not write locked */
+    } else {                   /* Not write locked */
        if (vnp->changed_newTime || vnp->changed_oldTime || vnp->delete)
-           Abort("VPutVnode: Change or delete flag for vnode 0x%x is set but vnode is not write locked!\n", vnp);
+           Abort
+               ("VPutVnode: Change or delete flag for vnode 0x%x is set but vnode is not write locked!\n",
+                vnp);
     }
 
     /* Do not look at disk portion of vnode after this point; it may
-       have been deleted above */
+     * have been deleted above */
     if (vnp->nUsers-- == 1)
-       StickOnLruChain_r(vnp,vcp);
+       StickOnLruChain_r(vnp, vcp);
     vnp->delete = 0;
 
     if (writeLocked)
-        ReleaseWriteLock(&vnp->lock);
+       ReleaseWriteLock(&vnp->lock);
     else
-        ReleaseReadLock(&vnp->lock);
+       ReleaseReadLock(&vnp->lock);
 }
 
 /*
@@ -794,20 +791,18 @@ VPutVnode_r(ec,vnp)
  * Do nothing if the vnode isn't write locked or the vnode has
  * been deleted.
  */
-int VVnodeWriteToRead(ec,vnp)
-    Error *ec;
-    register Vnode *vnp;
+int
+VVnodeWriteToRead(Error * ec, register Vnode * vnp)
 {
     int retVal;
-    VOL_LOCK
+    VOL_LOCK;
     retVal = VVnodeWriteToRead_r(ec, vnp);
-    VOL_UNLOCK
+    VOL_UNLOCK;
     return retVal;
 }
 
-int VVnodeWriteToRead_r(ec,vnp)
-    Error *ec;
-    register Vnode *vnp;
+int
+VVnodeWriteToRead_r(Error * ec, register Vnode * vnp)
 {
     int writeLocked;
     VnodeClass class;
@@ -820,7 +815,7 @@ int VVnodeWriteToRead_r(ec,vnp)
 #endif /* AFS_PTHREAD_ENV */
 
     *ec = 0;
-    assert (vnp->nUsers != 0);
+    assert(vnp->nUsers != 0);
     class = vnodeIdToClass(vnp->vnodeNumber);
     vcp = &VnodeClassInfo[class];
     assert(vnp->disk.vnodeMagic == vcp->magic);
@@ -830,7 +825,6 @@ int VVnodeWriteToRead_r(ec,vnp)
     if (!writeLocked) {
        return 0;
     }
-
 #ifdef AFS_PTHREAD_ENV
     thisProcess = pthread_self();
 #else /* AFS_PTHREAD_ENV */
@@ -838,16 +832,18 @@ int VVnodeWriteToRead_r(ec,vnp)
 #endif /* AFS_PTHREAD_ENV */
 
     VNLog(301, 2, (afs_int32) vnp,
-         ((vnp->changed_newTime) << 1) | ((vnp->changed_oldTime) << 1) |
-         vnp->delete);
+         ((vnp->changed_newTime) << 1) | ((vnp->
+                                           changed_oldTime) << 1) | vnp->
+         delete);
     if (thisProcess != vnp->writer)
-       Abort("VPutVnode: Vnode at 0x%x locked by another process!\n",vnp);
+       Abort("VPutVnode: Vnode at 0x%x locked by another process!\n",
+             (int)vnp);
     if (vnp->delete) {
        return 0;
     }
     if (vnp->changed_oldTime || vnp->changed_newTime) {
        Volume *vp = vnp->volumePtr;
-       afs_int32 now = FT_ApproxTime();
+       afs_uint32 now = FT_ApproxTime();
        assert(vnp->cacheCheck == vp->cacheCheck);
        if (vnp->changed_newTime)
            vnp->disk.serverModifyTime = now;
@@ -862,7 +858,7 @@ int VVnodeWriteToRead_r(ec,vnp)
            IHandle_t *ihP = vp->vnodeIndex[class].handle;
            FdHandle_t *fdP;
            off_t off = vnodeIndexOffset(vcp, vnp->vnodeNumber);
-           VOL_UNLOCK
+           VOL_UNLOCK;
            fdP = IH_OPEN(ihP);
            if (fdP == NULL)
                Abort("VPutVnode: can't open index file!\n");
@@ -875,23 +871,21 @@ int VVnodeWriteToRead_r(ec,vnp)
                 * Don't force volume offline if the inumber is out of
                 * range or the inode table is full.
                 */
-               VOL_LOCK
-               if(code == BAD_IGET)
-               {
-                           Log("VPutVnode: bad inumber %d\n",
-                                   vp->vnodeIndex[class].handle->ih_ino);
-                           *ec = VIO;
+               VOL_LOCK;
+               if (code == BAD_IGET) {
+                   Log("VPutVnode: bad inumber %s\n",
+                       PrintInode(NULL,
+                                  vp->vnodeIndex[class].handle->ih_ino));
+                   *ec = VIO;
                } else {
-                   Log("VPutVnode: Couldn't write vnode %d, volume %u (%s)\n",
-                       vnp->vnodeNumber, V_id(vnp->volumePtr),
-                       V_name(vnp->volumePtr));
-                       VForceOffline_r(vp);
+                   Log("VPutVnode: Couldn't write vnode %u, volume %u (%s)\n", vnp->vnodeNumber, V_id(vnp->volumePtr), V_name(vnp->volumePtr));
+                   VForceOffline_r(vp);
                    *ec = VSALVAGE;
                }
-               VOL_UNLOCK
+               VOL_UNLOCK;
            }
            FDH_CLOSE(fdP);
-           VOL_LOCK
+           VOL_LOCK;
        }
        vcp->writes++;
        vnp->changed_newTime = vnp->changed_oldTime = 0;
@@ -903,12 +897,11 @@ int VVnodeWriteToRead_r(ec,vnp)
 
 /* Move the vnode, vnp, to the new hash table given by the
    hash table index, newHash */
-static int moveHash(vnp, newHash)
-    register Vnode *vnp;
-    bit32 newHash;
+static int
+moveHash(register Vnode * vnp, bit32 newHash)
 {
     Vnode *tvnp;
- /* Remove it from the old hash chain */
+    /* Remove it from the old hash chain */
     tvnp = VnodeHashTable[vnp->hashIndex];
     if (tvnp == vnp)
        VnodeHashTable[vnp->hashIndex] = vnp->hashNext;
@@ -918,7 +911,7 @@ static int moveHash(vnp, newHash)
        if (tvnp)
            tvnp->hashNext = vnp->hashNext;
     }
- /* Add it to the new hash chain */
+    /* Add it to the new hash chain */
     vnp->hashNext = VnodeHashTable[newHash];
     VnodeHashTable[newHash] = vnp;
     vnp->hashIndex = newHash;
@@ -926,11 +919,9 @@ static int moveHash(vnp, newHash)
 }
 
 void
-StickOnLruChain_r(vnp,vcp)
-    register Vnode *vnp;
-    register struct VnodeClassInfo *vcp;
+StickOnLruChain_r(register Vnode * vnp, register struct VnodeClassInfo *vcp)
 {
- /* Add it to the circular LRU list */
+    /* Add it to the circular LRU list */
     if (vcp->lruHead == NULL)
        Abort("VPutVnode: vcp->lruHead==NULL");
     else {
@@ -940,12 +931,12 @@ StickOnLruChain_r(vnp,vcp)
        vnp->lruPrev->lruNext = vnp;
        vcp->lruHead = vnp;
     }
- /* If the vnode was just deleted, put it at the end of the chain so it
-    will be reused immediately */
+    /* If the vnode was just deleted, put it at the end of the chain so it
+     * will be reused immediately */
     if (vnp->delete)
        vcp->lruHead = vnp->lruNext;
- /* If caching is turned off, set volumeptr to NULL to invalidate the
-    entry */
+    /* If caching is turned off, set volumeptr to NULL to invalidate the
+     * entry */
     if (!TrustVnodeCacheEntry)
        vnp->volumePtr = NULL;
 }
@@ -954,12 +945,13 @@ StickOnLruChain_r(vnp,vcp)
  * files for vnodes in that volume are closed. This might be excessive,
  * since we may only be taking one volume of a volume group offline.
  */
-void VCloseVnodeFiles_r(Volume *vp)
+void
+VCloseVnodeFiles_r(Volume * vp)
 {
     int i;
     Vnode *vnp;
 
-    for (i=0; i<VNODE_HASH_TABLE_SIZE; i++) {
+    for (i = 0; i < VNODE_HASH_TABLE_SIZE; i++) {
        for (vnp = VnodeHashTable[i]; vnp; vnp = vnp->hashNext) {
            if (vnp->volumePtr == vp) {
                IH_REALLYCLOSE(vnp->handle);
@@ -972,12 +964,13 @@ void VCloseVnodeFiles_r(Volume *vp)
  * files for vnodes in that volume are closed and all inode handles
  * for vnodes in that volume are released.
  */
-void VReleaseVnodeFiles_r(Volume *vp)
+void
+VReleaseVnodeFiles_r(Volume * vp)
 {
     int i;
     Vnode *vnp;
 
-    for (i=0; i<VNODE_HASH_TABLE_SIZE; i++) {
+    for (i = 0; i < VNODE_HASH_TABLE_SIZE; i++) {
        for (vnp = VnodeHashTable[i]; vnp; vnp = vnp->hashNext) {
            if (vnp->volumePtr == vp) {
                IH_RELEASE(vnp->handle);