From 4d03cfc8bd6545e60ff63d206841dc8537e9d07a Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Fri, 8 Feb 2013 17:26:32 -0600 Subject: [PATCH] afs: Move SetupVolume tv initialization after loop 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. Reviewed-on: http://gerrit.openafs.org/9093 Tested-by: BuildBot Reviewed-by: Chas Williams - CONTRACTOR Reviewed-by: Derrick Brashear (cherry picked from commit 8f95dc9eb92cb31f9d29eb87daac747f53b5a1cc) Change-Id: I65f3b647017aebacf28026a648c75b2d279c768e Reviewed-on: http://gerrit.openafs.org/9130 Tested-by: BuildBot Reviewed-by: Andrew Deason Reviewed-by: Derrick Brashear Reviewed-by: Stephan Wiesand --- src/afs/afs_volume.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/afs/afs_volume.c b/src/afs/afs_volume.c index df0e64fd1..2d9babbd2 100644 --- a/src/afs/afs_volume.c +++ b/src/afs/afs_volume.c @@ -586,12 +586,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); @@ -604,9 +600,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; -- 2.39.5