vol: Avoid getting stuck in ATTACHING in attach2
authorAndrew Deason <adeason@sinenomine.net>
Thu, 31 May 2012 22:45:56 +0000 (17:45 -0500)
committerDerrick Brashear <shadow@dementix.org>
Mon, 11 Jun 2012 22:26:53 +0000 (15:26 -0700)
commit4f9c3f2be9abd5548dd52888b49c407d574b6557
tree37461213a11c0f9f4bb9b65d550d6a8030609c5b
parenta43f0e4717fd72727ae325eb4437cef065419cdd
vol: Avoid getting stuck in ATTACHING in attach2

Since commit 5fc2365f, a VNOVOL error early in attach2 meant that we
skipped changing the volume state to anything, and just returned
instead. When we do this, the volume is in VOL_STATE_ATTACHING for
DAFS, and so if we return, the volume will forever be in
VOL_STATE_ATTACHING. The next thing that tries to access the volume
will wait forever for the volume to come out of that state.

So, revert half of 5fc2365f, and transition to ERROR state instead.
This code path should not be hit during normal usage, since a
nonexistant volume access for the fileserver will be detected earlier.
If the volume does not appear to exist at this stage of attachment,
something is wrong with the volume, so this warrants the ERROR state.

For the volserver and other volume utilities, we may hit this when a
request just plain references a nonexistant volume for whatever
reason, but in that case the vp should go away soon. For non-DAFS,
this commit does not change much, since the difference between
error_notbroken and unlocked_error is very small.

The other half of 5fc2365f is not changed, since it is correct. For
VOFFLINE errors at this point, the volume has already been
transitioned to VOL_STATE_UNATTACHED, so it is okay to return. Add a
comment to help make this more explicit.

Change-Id: I63853f6e1721020cd204639c6e3ce4b59de08f75
Reviewed-on: http://gerrit.openafs.org/7516
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
src/vol/volume.c