(Illustration by Gaich Muramatsu)
On Thu, Aug 24, 2006 at 10:53:56PM -0400, Sean Caron wrote: > 22:43:18 VLDBLookup: VLDB_size unset. Calling VCheckVLDB() > 22:43:18 VLDB_Lookup: cannot find "01000001" > 22:43:18 Volume replica 1000001 doesn't exist! I wouldn't be totally surprised if this isn't indirectly related to the following code in venus, #if 1 /* XXX change this to hex after 5.3.9 servers are deployed */ /* doesn't work as VLDB entries are still hashed by the old * volume-id representation */ sprintf(volname, "%u", volid->Volume); #else sprintf(volname, "%08x", volid->Volume); #endif The backup program uses, int getReplica(repinfo_t *rep) { ... sprintf(volIdstr, "%08x", volId); I guess the idea was to change the indexing from a decimal to a hexadecimal representation. The initial sweep probably did %u -> %08x, but then the Coda client broke and the change was reverted in the client, but not in backup.cc. The following patch should fix that. > and that's it. But yet, I created backup volumes, and they show up the VLDB: You shouldn't have to create the backup volumes I think backup.cc already does the equivalent 'volutil lock ; volutil backup'. In fact it prefers to do it that way because then it can lock all replicas simultaneously and really get a consistent snapshot of the state of all replicas of a volume. Jan diff --git a/coda-src/volutil/backup.cc b/coda-src/volutil/backup.cc index 01a5537..b94f79a 100644 --- a/coda-src/volutil/backup.cc +++ b/coda-src/volutil/backup.cc @@ -287,7 +287,7 @@ int getReplica(repinfo_t *rep) { VolumeId volId = rep->repvolId; rep->serverNum = 0; - sprintf(volIdstr, "%08x", volId); + sprintf(volIdstr, "%u", volId); vldbp = VLDBLookup(volIdstr); if (vldbp == NULL) { LogMsg(0, 0, stdout, "Volume replica %x doesn't exist!\n", volId);Received on 2006-08-25 12:19:57