X-Git-Url: https://git.openafs.org/?p=openafs.git;a=blobdiff_plain;f=src%2Fvolser%2Fdumpstuff.c;h=91f725c8fd94aab539c9dc2812aa703b85ab528e;hp=3a6639ab5176910021b318aa9c72b045185b764a;hb=dfceff1d3a66e76246537738720f411330808d64;hpb=e1c6ad7d580041caf35f698c9b2241fb45f02361 diff --git a/src/volser/dumpstuff.c b/src/volser/dumpstuff.c index 3a6639a..91f725c 100644 --- a/src/volser/dumpstuff.c +++ b/src/volser/dumpstuff.c @@ -49,6 +49,7 @@ /*@printflike@*/ extern void Log(const char *format, ...); extern int DoLogging; +extern int DoPreserveVolumeStats; /* Forward Declarations */ @@ -1195,11 +1196,16 @@ RestoreVolume(struct rx_call *call, Volume * avp, int incremental, afs_foff_t *b1 = NULL, *b2 = NULL; int s1 = 0, s2 = 0, delo = 0, tdelo; int tag; + VolumeDiskData saved_header; iod_Init(iodp, call); vp = avp; + if (DoPreserveVolumeStats) { + CopyVolumeStats(&V_disk(vp), &saved_header); + } + if (!ReadDumpHeader(iodp, &header)) { Log("1 Volser: RestoreVolume: Error reading header file for dump; aborted\n"); return VOLSERREAD_DUMPERROR; @@ -1268,7 +1274,11 @@ RestoreVolume(struct rx_call *call, Volume * avp, int incremental, } clean: - ClearVolumeStats(&vol); + if (DoPreserveVolumeStats) { + CopyVolumeStats(&saved_header, &vol); + } else { + ClearVolumeStats(&vol); + } if (V_needsSalvaged(vp)) { /* needsSalvaged may have been set while we tried to write volume data. * prevent it from getting overwritten. */