Some programs were not checking the return code of VInitVolumePackage2.
Although some programs do not care so much if we fail to properly init
the volume package (SYNC debug tools), at the very least log/print an
error, so it doesn't silently fail.
Other programs are changed to exit when VInitVolumePackage2 fail, so
e.g. salvages don't accidentally cause corruption on 'logging'-mounted
UFS partitions.
In any case, ensure the return code is always checked anywhere it is
called.
Change-Id: I164d5920a5ea2dd7e5ed9ad4ccc578e9bdf0db0b
Reviewed-on: http://gerrit.openafs.org/1090
Tested-by: Andrew Deason <adeason@sinenomine.net>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
#endif
VOptDefaults(debugUtility, &opts);
- VInitVolumePackage2(debugUtility, &opts);
+ if (VInitVolumePackage2(debugUtility, &opts)) {
+ /* VInitVolumePackage2 can fail on e.g. partition attachment errors,
+ * but we don't really care, since all we're doing is trying to use
+ * SALVSYNC */
+ fprintf(stderr, "errors encountered initializing volume package, but "
+ "trying to continue anyway\n");
+ }
DInit(1);
if ((ti = as->parms[COMMON_PARMS_OFFSET].items)) { /* -reason */
#endif
VOptDefaults(debugUtility, &opts);
- VInitVolumePackage2(debugUtility, &opts);
+ if (VInitVolumePackage2(debugUtility, &opts)) {
+ /* VInitVolumePackage2 can fail on e.g. partition attachment errors,
+ * but we don't really care, since all we're doing is trying to use
+ * FSSYNC */
+ fprintf(stderr, "errors encountered initializing volume package, but "
+ "trying to continue anyway\n");
+ }
DInit(1);
if ((ti = as->parms[COMMON_PARMS_OFFSET].items)) { /* -reason */
VolumePackageOptions opts;
VOptDefaults(volumeUtility, &opts);
- VInitVolumePackage2(volumeUtility, &opts);
+ if (VInitVolumePackage2(volumeUtility, &opts)) {
+ /* VInitVolumePackage2 can fail on e.g. partition attachment errors,
+ * but we don't really care, since all we're doing is trying to use
+ * SALVSYNC */
+ fprintf(stderr, "errors encountered initializing volume package, but "
+ "trying to continue anyway\n");
+ }
SALVSYNC_clientInit();
code = SALVSYNC_SalvageVolume(vid, pname, SALVSYNC_SALVAGE, SALVSYNC_OPERATOR, 0, NULL);
/* initialize things */
VOptDefaults(salvageServer, &opts);
- VInitVolumePackage2(salvageServer, &opts);
+ if (VInitVolumePackage2(salvageServer, &opts)) {
+ Log("Shutting down: errors encountered initializing volume package\n");
+ Exit(1);
+ }
DInit(10);
queue_Init(&pending_q);
queue_Init(&log_cleanup_queue);
}
VOptDefaults(pt, &opts);
- VInitVolumePackage2(pt, &opts);
+ if (VInitVolumePackage2(pt, &opts)) {
+ Log("errors encountered initializing volume package; salvage aborted\n");
+ Exit(1);
+ }
DInit(10);
#ifdef AFS_NT40_ENV
if (myjob.cj_number != NOT_CHILD) {
VolumePackageOptions opts;
VOptDefaults(1, &opts);
- VInitVolumePackage2(1, &opts);
+ if (VInitVolumePackage2(1, &opts)) {
+ printf("errors encountered initializing volume package\n");
+ exit(-1);
+ }
VPrintDiskStats();
}
VolumePackageOptions opts;
VOptDefaults(volumeUtility, &opts);
- VInitVolumePackage2(volumeUtility, &opts);
+ if (VInitVolumePackage2(volumeUtility, &opts)) {
+ fprintf(stderr, "errors encountered initializing volume package, but "
+ "trying to continue anyway\n");
+ }
ts = cmd_CreateSyntax(NULL, handleit, NULL,
"Dump a volume to a 'vos dump' format file without using volserver");
OpenLog(AFSDIR_SERVER_VOLSERLOG_FILEPATH);
VOptDefaults(volumeServer, &opts);
- VInitVolumePackage2(volumeServer, &opts);
+ if (VInitVolumePackage2(volumeServer, &opts)) {
+ Log("Shutting down: errors encountered initializing volume package\n");
+ exit(1);
+ }
/* For nuke() */
Lock_Init(&localLock);
DInit(40);