afs: Move SetupVolume tv initialization after loop
[openafs.git] / src / afs / afs_volume.c
index 3cf7a2e..9953f5a 100644 (file)
@@ -584,12 +584,8 @@ afs_SetupVolume(afs_int32 volid, char *aname, void *ve, struct cell *tcell,
            return NULL;
        }
        memset(tv, 0, sizeof(struct volume));
-       tv->cell = tcell->cellNum;
-       AFS_RWLOCK_INIT(&tv->lock, "volume lock");
-       tv->next = afs_volumes[i];      /* thread into list */
-       afs_volumes[i] = tv;
-       tv->volume = volid;
-       for (j = fvTable[FVHash(tv->cell, volid)]; j != 0; j = tf->next) {
+
+       for (j = fvTable[FVHash(tcell->cellNum, volid)]; j != 0; j = tf->next) {
            if (afs_FVIndex != j) {
                struct osi_file *tfile;
                tfile = osi_UFSOpen(&volumeInode);
@@ -602,9 +598,16 @@ afs_SetupVolume(afs_int32 volid, char *aname, void *ve, struct cell *tcell,
                afs_FVIndex = j;
            }
            tf = &staticFVolume;
-           if (tf->cell == tv->cell && tf->volume == volid)
+           if (tf->cell == tcell->cellNum && tf->volume == volid)
                break;
        }
+
+       tv->cell = tcell->cellNum;
+       AFS_RWLOCK_INIT(&tv->lock, "volume lock");
+       tv->next = afs_volumes[i];      /* thread into list */
+       afs_volumes[i] = tv;
+       tv->volume = volid;
+
        if (tf && (j != 0)) {
            tv->vtix = afs_FVIndex;
            tv->mtpoint = tf->mtpoint;