From 199cfb4a885b98b583f538ed14dff7ec5c9f9990 Mon Sep 17 00:00:00 2001 From: Andrew Deason Date: Tue, 26 Mar 2013 17:50:31 -0500 Subject: [PATCH] volser: Make VolListOneVolume errors consistent Currently, VolXListOneVolume errors out with ENODEV if any attachment error occurs with the specified volume. But VolListOneVolume always returns success if it can find the indicated volume, and any attachment errors and such are reported in the 'status' field of the volume info structure. These two functions do pretty much the same thing; VolXListOneVolume just provides more info than VolListOneVolume. So make them behave the same way, and provide more specific information, whether or not somebody ran 'vos examine' or 'vos examine -extended'. The 'vos' binary has always handled errors in the 'status' volume info structure for both "extended" and non-"extended" queries. This difference appears to just have been a mistake from OpenAFS 1.0. Change-Id: Iab16ef6a25487d492fdb046db93973a1e64ca70a Reviewed-on: http://gerrit.openafs.org/9680 Tested-by: BuildBot Reviewed-by: Mark Vitale Reviewed-by: Derrick Brashear --- src/volser/volprocs.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/volser/volprocs.c b/src/volser/volprocs.c index 3c7cfbde5..4c01848ae 100644 --- a/src/volser/volprocs.c +++ b/src/volser/volprocs.c @@ -2428,7 +2428,6 @@ VolXListOneVolume(struct rx_call *a_rxCidP, afs_int32 a_partID, DIR *dirp; /*Partition directory ptr */ VolumeId currVolID; /*Current volume ID */ int found = 0; /*Did we find the volume we need? */ - int code; volint_info_handle_t handle; /* @@ -2440,7 +2439,6 @@ VolXListOneVolume(struct rx_call *a_rxCidP, afs_int32 a_partID, return ENOMEM; a_volumeXInfoP->volXEntries_len = 1; - code = ENODEV; /* * If the partition name we've been given is bad, bogue out. @@ -2477,7 +2475,6 @@ VolXListOneVolume(struct rx_call *a_rxCidP, afs_int32 a_partID, } if (found) { - int error; #ifndef AFS_PTHREAD_ENV IOMGR_Poll(); #endif @@ -2485,15 +2482,16 @@ VolXListOneVolume(struct rx_call *a_rxCidP, afs_int32 a_partID, handle.volinfo_type = VOLINT_INFO_TYPE_EXT; handle.volinfo_ptr.ext = a_volumeXInfoP->volXEntries_val; - error = GetVolInfo(a_partID, - a_volID, - pname, - volname, - &handle, - VOL_INFO_LIST_SINGLE); - if (!error) { - code = 0; - } + /* The return code from GetVolInfo is ignored; there is no error from + * it that results in the whole call being aborted. Any volume + * attachment failures are reported in 'status' field in the + * volumeInfo payload. */ + GetVolInfo(a_partID, + a_volID, + pname, + volname, + &handle, + VOL_INFO_LIST_SINGLE); } /* @@ -2501,7 +2499,7 @@ VolXListOneVolume(struct rx_call *a_rxCidP, afs_int32 a_partID, * return the proper value. */ closedir(dirp); - return code; + return (found) ? 0 : ENODEV; } /*SAFSVolXListOneVolume */ /*returns all the volumes on partition partid. If flags = 1 then all the -- 2.39.5