mirror of
https://git.openafs.org/openafs.git
synced 2025-02-01 05:57:43 +00:00
fix stale volume info from vos examine (non-dafs)
A volume examine on a non-dafs volume server/fileserver can show old information, including old volume update time, for up to about 20 minutes. The non-dafs volume server reads the volume information from the volume headers, which are updated by the fileserver only periodically to avoid excessive i/o. Before dafs, when the volume server performed a volume examine, the volume server would send a fssync command to the fileserver with the request FSYNC_NEEDVOLUME and mode V_READONLY. The fileserver writes the current memory contents to disk on this fssync command. The volume server would then attach the volume, reading the current volume data. The dafs volume/fileserver avoids this extra i/o by using a new set of fssync commands to retrieve the volume information from the fileserver. However, the non-dafs volume server does not use the new fssync commands and reads the volume headers from disk. Revert the volume attachment processing for the non-dafs volume server to request the volume with the V_READONLY mode. This causes the fileserver to update the volume headers, allowing the volume server to read the up to date volume header data. Sadly, this adds another dafs ifdef to the already twisty maze of passages that all look alike. This changes the volserver to use the V_READONLY attachment mode only for the case of getting a single volume, as that what was done in 1.4.x. Reviewed-on: http://gerrit.openafs.org/8327 Reviewed-by: Andrew Deason <adeason@sinenomine.net> Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Derrick Brashear <shadow@your-file-system.com> (cherry picked from commit bcb077a00fb575e7beb92739646054ea67ca0b79) Change-Id: I5b5982efd5ee3aea13515add83b71d424dbd3a60 Reviewed-on: http://gerrit.openafs.org/8459 Reviewed-by: Derrick Brashear <shadow@your-file-system.com> Tested-by: BuildBot <buildbot@rampaginggeek.com> Reviewed-by: Andrew Deason <adeason@sinenomine.net>
This commit is contained in:
parent
85794b6561
commit
aecc87faf7
@ -2228,8 +2228,15 @@ GetVolInfo(afs_uint32 partId,
|
||||
/* Get volume from volserver */
|
||||
if (mode == VOL_INFO_LIST_MULTIPLE)
|
||||
tv = VAttachVolumeByName(&error, pname, volname, V_PEEK);
|
||||
else
|
||||
tv = VAttachVolumeByName_retry(&error, pname, volname, V_PEEK);
|
||||
else {
|
||||
#ifdef AFS_DEMAND_ATTACH_FS
|
||||
int mode = V_PEEK;
|
||||
#else
|
||||
int mode = V_READONLY; /* informs the fileserver to update the volume headers. */
|
||||
#endif
|
||||
tv = VAttachVolumeByName_retry(&error, pname, volname, mode);
|
||||
}
|
||||
|
||||
if (error) {
|
||||
Log("1 Volser: GetVolInfo: Could not attach volume %u (%s:%s) error=%d\n",
|
||||
volumeId, pname, volname, error);
|
||||
|
Loading…
x
Reference in New Issue
Block a user