vol: allow non-dafs volume utils to attach with V_READONLY again
authorMichael Meffie <mmeffie@sinenomine.net>
Tue, 30 Oct 2012 14:22:40 +0000 (10:22 -0400)
committerDerrick Brashear <shadow@your-file-system.com>
Mon, 12 Nov 2012 18:31:42 +0000 (10:31 -0800)
commit0eaa0d1baa8b8fe115301f188ce32176acc7b065
treedbe88b170ff040551c34164352b0d1aa6d2e6b6d
parentd2d3c51a7d76c41b154105c5295eeee172c573ae
vol: allow non-dafs volume utils to attach with V_READONLY again

Allow non-fileserver, non-dafs, programs to attach volumes with the
V_READONLY mode again. This was lost during the code changes for
dafs.

The caller sends a fssync request to the fileserver, which updates the
on-disk contents of the volume headers, before the caller reads the
volume headers, allowing the caller to have the most recent info about
the volume. The fileserver still has the volume in use.

Later in the attachment process, the inUse check is skipped for the case
of a non-fileserver process which is attaching the volume using the
V_READONLY mode, otherwise the attachment would incorrectly mark the
volume as needing to be salvaged.

Note: The mode checks in VMustCheckOutVolume() are correct. We must
checkout the volume when attaching with the V_READONLY mode. This
fix updates the VShouldCheckInUse(), in which an additional
exception was added to cover the case for V_READONLY mode from a non-
fileserver process.

Note: A check is added in the dafs version of attach to avoid overwriting the
inUse field when a volume utility is attaching a volume in V_READONLY mode.
Currently, V_READONLY is not used by dafs, but this was done to avoid future
errors.

Change-Id: I09d3af1e74087d0627399392e662e5075d41cdeb
Reviewed-on: http://gerrit.openafs.org/8339
Reviewed-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
src/vol/volume.c
src/vol/volume_inline.h