DAFS: Fix VOL_QUERY_VOP error codes
authorAndrew Deason <adeason@sinenomine.net>
Wed, 8 Dec 2010 18:41:44 +0000 (12:41 -0600)
committerDerrick Brashear <shadow@dementia.org>
Fri, 10 Dec 2010 21:01:52 +0000 (13:01 -0800)
commit95fc9ece507d3c5bd7914afadaaae9456eea9b7a
treefe12c3ec6846aa351d6146957cb3b62ef15d7be2
parent9da7f3cc73bf990427a9dd80ba2bbbb618383ea3
DAFS: Fix VOL_QUERY_VOP error codes

Volumes in the VOL_STATE_DELETED state effectively do not exist. So,
when receiving an FSYNC_VOL_QUERY_VOP request for a volume, report
FSYNC_UNKNOWN_VOLID for a volume in the VOL_STATE_DELETED state.
Similarly, if the volume exists but on a different partition, we
should return the FSYNC_WRONG_PART reason code.

This allows volumes to be usable by the volume server in some corner
cases. For example, when a volume X exists on partitions A and B, and
the volserver deletes X on B. The fileserver then puts volume X in the
DELETED state, allowing checkouts over fsync, but FSYNC_VOL_QUERY_VOP
reports that no vop exists.

With this change, FSYNC_VOL_QUERY_VOP will instead report that the
volume does not exist, and so FSYNC_VerifyCheckout can succeed for
such volumes.

Change-Id: I6c4f7deead745ddba44963a9f66a9f2ef25686a5
Reviewed-on: http://gerrit.openafs.org/3493
Reviewed-by: Tom Keiser <tkeiser@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
src/vol/fssync-client.c
src/vol/fssync-server.c