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);