From: Andrew Deason Date: Wed, 29 Sep 2010 16:48:44 +0000 (-0500) Subject: salvager: Do not break cbks when salvaging parts X-Git-Tag: upstream/1.8.0_pre1^2~4535 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=fabd590cc4b0142fe97c4ffa6a4669fe5d44c359;p=packages%2Fo%2Fopenafs.git salvager: Do not break cbks when salvaging parts When salvaging whole partitions / whole servers, the fileserver is assumed to not be running. So only break callbacks if we are salvaging a single volume. If we are salvaging a whole partition, do not tell the fileserver to break callbacks on changed volumes, since the fileserver will not be around and we will just hang. Change-Id: Ia158d5a00574a6907b9b040510ef7d827a2ee05d Reviewed-on: http://gerrit.openafs.org/2865 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- diff --git a/src/vol/vol-salvage.c b/src/vol/vol-salvage.c index 84efe4e65..1fc0a1283 100644 --- a/src/vol/vol-salvage.c +++ b/src/vol/vol-salvage.c @@ -306,6 +306,8 @@ struct SalvInfo { * vnodes in the volume that * we are currently looking * at */ + int useFSYNC; /**< 0 if the fileserver is unavailable; 1 if we should try + * to contact the fileserver over FSYNC */ }; char *tmpdir = NULL; @@ -790,6 +792,7 @@ SalvageFileSys1(struct DiskPartition64 *partP, VolumeId singleVolumeNumber) Abort("Couldn't connect to file server\n"); } + salvinfo->useFSYNC = 1; AskOffline(salvinfo, singleVolumeNumber); #ifdef AFS_DEMAND_ATTACH_FS if (LockVolume(salvinfo, singleVolumeNumber)) { @@ -798,6 +801,7 @@ SalvageFileSys1(struct DiskPartition64 *partP, VolumeId singleVolumeNumber) #endif /* AFS_DEMAND_ATTACH_FS */ } else { + salvinfo->useFSYNC = 0; VLockPartition(partP->name); if (ForceSalvage) { ForceSalvage = 1; @@ -4084,7 +4088,7 @@ SalvageVolume(struct SalvInfo *salvinfo, struct InodeSummary *rwIsp, IHandle_t * } #ifdef FSSYNC_BUILD_CLIENT - if (!Testing && salvinfo->VolumeChanged) { + if (!Testing && salvinfo->VolumeChanged && salvinfo->useFSYNC) { afs_int32 fsync_code; fsync_code = FSYNC_VolOp(vid, NULL, FSYNC_VOL_BREAKCBKS, FSYNC_SALVAGE, NULL);