]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
vol AttachByName should mimic other volpkg errors
authorDerrick Brashear <shadow@dementia.org>
Thu, 22 Jul 2010 04:39:31 +0000 (00:39 -0400)
committerRuss Allbery <rra@debian.org>
Wed, 11 Aug 2010 04:46:48 +0000 (21:46 -0700)
if later callers will deem a volume offline, note it at attach time.
additionally, log the cause.

(cherry picked from commit 939382c5c1622750665a9f543168bd3b8044583f)

Change-Id: Ie5d4a6339749c4f1920a78722966b013e78ffd98
Reviewed-on: http://gerrit.openafs.org/2465
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Jason Edgecombe <jason@rampaginggeek.com>
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jason Edgecombe <jason@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit fd19dd095a52be4a685ac80e8533b7a4388e145c)

src/vol/volume.c

index 503dda23118d0dff74ca6d4fb757689b9d212a4f..8af3c66d9f629aadde91e964d28647d4e8aeec44 100644 (file)
@@ -979,6 +979,20 @@ attach2(Error * ec, char *path, register struct VolumeHeader * header,
            V_inUse(vp) = 1;
            V_offlineMessage(vp)[0] = '\0';
        }
+       if (!V_inUse(vp)) {
+           *ec = VNOVOL;
+           /* mimic e.g. GetVolume errors */
+           if (!V_blessed(vp))
+               Log("Volume %u offline: not blessed\n", V_id(vp));
+           else if (!V_inService(vp))
+               Log("Volume %u offline: not in service\n", V_id(vp));
+           else {
+               Log("Volume %u offline: needs salvage\n", V_id(vp));
+               *ec = VOFFLINE;
+           }
+           VPutVolume_r(vp);
+           vp = NULL;
+       }
     }
 
     return vp;