From 87e959e87df52e026ffcb2de8ecfcbf4889f7bd8 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Thu, 27 Mar 2008 18:39:57 +0000 Subject: [PATCH] ptutil-swap-epoch-version-as-needed-20080327 LICENSE IPL10 FIXES 90869 do byteswapping of epoch and version so we print and compare sensibly --- src/ptserver/pt_util.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ptserver/pt_util.c b/src/ptserver/pt_util.c index e0c01b457b..15694e2f03 100644 --- a/src/ptserver/pt_util.c +++ b/src/ptserver/pt_util.c @@ -196,8 +196,9 @@ CommandProc(register struct cmd_syndesc *a_as, void *arock) fprintf(stderr, "pt_util: %s: Bad UBIK_MAGIC. Is %x should be %x\n", pfile, ntohl(uh->magic), UBIK_MAGIC); memcpy(&uv, &uh->version, sizeof(struct ubik_version)); - if (wflag && uv.epoch == 0 && uv.counter == 0) { - uv.epoch = 2; /* a ubik version of 0 or 1 has special meaning */ + + if (wflag && ntohl(uv.epoch) == 0 && ntohl(uv.counter) == 0) { + uv.epoch = htonl(2); /* a ubik version of 0 or 1 has special meaning */ memcpy(&uh->version, &uv, sizeof(struct ubik_version)); lseek(dbase_fd, 0, SEEK_SET); if (write(dbase_fd, buffer, HDRSIZE) < 0) { @@ -206,6 +207,11 @@ CommandProc(register struct cmd_syndesc *a_as, void *arock) exit(1); } } + + /* Now that any writeback is done, swap these */ + uv.epoch = ntohl(uv.epoch); + uv.counter = ntohl(uv.counter); + fprintf(stderr, "Ubik Version is: %d.%d\n", uv.epoch, uv.counter); if (read(dbase_fd, &prh, sizeof(struct prheader)) < 0) { fprintf(stderr, "pt_util: error reading %s: %s\n", pfile, @@ -329,6 +335,10 @@ CommandProc(register struct cmd_syndesc *a_as, void *arock) exit(1); } uh = (struct ubik_hdr *)buffer; + + uh->version.epoch = ntohl(uh->version.epoch); + uh->version.counter = ntohl(uh->version.counter); + if ((uh->version.epoch != uv.epoch) || (uh->version.counter != uv.counter)) { fprintf(stderr,