]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
afs: Move SetupVolume tv initialization after loop
authorAndrew Deason <adeason@sinenomine.net>
Fri, 8 Feb 2013 23:26:32 +0000 (17:26 -0600)
committerDerrick Brashear <shadow@your-file-system.com>
Tue, 12 Feb 2013 19:38:53 +0000 (11:38 -0800)
The fields in tv are not used by the loop looking for the given volume
on disk. If we wait until after that loop to initialize the fields in
tv, it is easier to handle errors encountered in the loop.

This should incur no functional change.

Change-Id: Ib678542bfebaa89ecfa4aad39230fc502ec83edb
Reviewed-on: http://gerrit.openafs.org/9093
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Chas Williams - CONTRACTOR <chas@cmf.nrl.navy.mil>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
src/afs/afs_volume.c

index 3cf7a2e8789011b39f7ba9d06e1172f8e7a28e77..9953f5a15e1bd7af473619c9963f6dd1b2849acd 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;