From: Andrew Deason Date: Fri, 11 Jun 2010 22:39:32 +0000 (-0500) Subject: salvaged: Break volume callbacks on vol change X-Git-Tag: openafs-devel-1_5_75~99 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=9bb0274398a0e9f6aff7714014e3eefbd77df827;p=packages%2Fo%2Fopenafs.git salvaged: Break volume callbacks on vol change The salvager code can change a volume in many ways as it fixes errors. We should break callbacks on the volume whenever we change it, as clients may have callbacks on whatever we changed. So, for the salvageserver, send an FSSYNC command to the fileserver to tell it to break callbacks for that volume. FIXES 127030 Change-Id: I1cd869371167df7d4e55ac14400865fb0a9c5154 Reviewed-on: http://gerrit.openafs.org/2210 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- diff --git a/src/vol/vol-salvage.c b/src/vol/vol-salvage.c index e3b89c936..41febd4d0 100644 --- a/src/vol/vol-salvage.c +++ b/src/vol/vol-salvage.c @@ -4029,6 +4029,22 @@ SalvageVolume(register struct InodeSummary *rwIsp, IHandle_t * alinkH) afs_printable_uint32_lu(vid)); } +#ifdef FSSYNC_BUILD_CLIENT + if (!Testing && VolumeChanged) { + afs_int32 fsync_code; + + fsync_code = FSYNC_VolOp(vid, NULL, FSYNC_VOL_BREAKCBKS, FSYNC_SALVAGE, NULL); + if (fsync_code) { + Log("Error trying to tell the fileserver to break callbacks for " + "changed volume %lu; error code %ld\n", + afs_printable_uint32_lu(vid), + afs_printable_int32_ld(fsync_code)); + } else { + VolumeChanged = 0; + } + } +#endif /* FSSYNC_BUILD_CLIENT */ + /* Turn off the inUse bit; the volume's been salvaged! */ volHeader.inUse = 0; /* clear flag indicating inUse@last crash */ volHeader.needsSalvaged = 0; /* clear 'damaged' flag */