UBIK_ADDR_LOCK;
rxcall = rx_NewCall(bestServer->disk_rxcid);
- ViceLog(0, ("Ubik: Synchronize database via DISK_GetFile to server %s\n",
+ ViceLog(0, ("Ubik: Synchronize database: receive (via GetFile) "
+ "from server %s begin\n",
afs_inet_ntoa_r(bestServer->addr[0], hoststr)));
UBIK_ADDR_UNLOCK;
ubik_dbase->version.epoch = 0;
ubik_dbase->version.counter = 0;
UBIK_VERSION_UNLOCK;
- ViceLog(0, ("Ubik: Synchronize database failed (error = %d)\n",
- code));
+ ViceLog(0,
+ ("Ubik: Synchronize database: receive (via GetFile) "
+ "from server %s failed (error = %d)\n",
+ afs_inet_ntoa_r(bestServer->addr[0], hoststr), code));
} else {
- ViceLog(0, ("Ubik: Synchronize database completed\n"));
+ ViceLog(0,
+ ("Ubik: Synchronize database: receive (via GetFile) "
+ "from server %s complete, version: %d.%d\n",
+ afs_inet_ntoa_r(bestServer->addr[0], hoststr),
+ ubik_dbase->version.epoch, ubik_dbase->version.counter));
+
urecovery_state |= UBIK_RECHAVEDB;
}
udisk_Invalidate(ubik_dbase, 0); /* data has changed */
continue;
}
UBIK_BEACON_UNLOCK;
- ViceLog(5, ("recovery sending version to %s\n",
- afs_inet_ntoa_r(inAddr.s_addr, hoststr)));
+
if (vcmp(ts->version, ubik_dbase->version) != 0) {
- ViceLog(5, ("recovery stating local database\n"));
+ ViceLog(0, ("Synchronize database: send (via SendFile) "
+ "to server %s begin\n",
+ afs_inet_ntoa_r(inAddr.s_addr, hoststr)));
/* Rx code to do the Bulk Store */
code = (*ubik_dbase->stat) (ubik_dbase, 0, &ubikstat);
StoreEndCall:
code = rx_EndCall(rxcall, code);
}
+
if (code == 0) {
/* we set a new file, process its header */
ts->version = ubik_dbase->version;
ts->currentDB = 1;
- } else
+ ViceLog(0,
+ ("Ubik: Synchronize database: send (via SendFile) "
+ "to server %s complete, version: %d.%d\n",
+ afs_inet_ntoa_r(inAddr.s_addr, hoststr),
+ ts->version.epoch, ts->version.counter));
+
+ } else {
dbok = 0;
+ ViceLog(0,
+ ("Ubik: Synchronize database: send (via SendFile) "
+ "to server %s failed (error = %d)\n",
+ afs_inet_ntoa_r(inAddr.s_addr, hoststr), code));
+ }
} else {
/* mark file up to date */
ts->currentDB = 1;
char tbuffer[256];
afs_int32 tlen;
afs_int32 length;
+ struct rx_peer *tpeer;
+ struct rx_connection *tconn;
+ afs_uint32 otherHost = 0;
+ char hoststr[16];
if ((code = ubik_CheckAuth(rxcall))) {
return code;
}
+
+ tconn = rx_ConnectionOf(rxcall);
+ tpeer = rx_PeerOf(tconn);
+ otherHost = ubikGetPrimaryInterfaceAddr(rx_HostOf(tpeer));
+ ViceLog(0, ("Ubik: Synchronize database: send (via GetFile) "
+ "to server %s begin\n",
+ afs_inet_ntoa_r(otherHost, hoststr)));
+
dbase = ubik_dbase;
DBHOLD(dbase);
code = (*dbase->stat) (dbase, file, &ubikstat);
if (code < 0) {
- DBRELE(dbase);
- return code;
+ ViceLog(0, ("database stat() error:%d\n", code));
+ goto failed;
}
length = ubikstat.size;
tlen = htonl(length);
code = rx_Write(rxcall, (char *)&tlen, sizeof(afs_int32));
if (code != sizeof(afs_int32)) {
- DBRELE(dbase);
ViceLog(0, ("Rx-write length error=%d\n", code));
- return BULK_ERROR;
+ code = BULK_ERROR;
+ goto failed;
}
offset = 0;
while (length > 0) {
tlen = (length > sizeof(tbuffer) ? sizeof(tbuffer) : length);
code = (*dbase->read) (dbase, file, tbuffer, offset, tlen);
if (code != tlen) {
- DBRELE(dbase);
ViceLog(0, ("read failed error=%d\n", code));
- return UIOERROR;
+ code = UIOERROR;
+ goto failed;
}
code = rx_Write(rxcall, tbuffer, tlen);
if (code != tlen) {
- DBRELE(dbase);
- ViceLog(0, ("Rx-write length error=%d\n", code));
- return BULK_ERROR;
+ ViceLog(0, ("Rx-write data error=%d\n", code));
+ code = BULK_ERROR;
+ goto failed;
}
length -= tlen;
offset += tlen;
}
code = (*dbase->getlabel) (dbase, file, version); /* return the dbase, too */
+ if (code)
+ ViceLog(0, ("getlabel error=%d\n", code));
+
+ failed:
DBRELE(dbase);
+ if (code) {
+ ViceLog(0,
+ ("Ubik: Synchronize database: send (via GetFile) to "
+ "server %s failed (error = %d)\n",
+ afs_inet_ntoa_r(otherHost, hoststr), code));
+ } else {
+ ViceLog(0,
+ ("Ubik: Synchronize database: send (via GetFile) to "
+ "server %s complete, version: %d.%d\n",
+ afs_inet_ntoa_r(otherHost, hoststr), version->epoch, version->counter));
+ }
return code;
}
/* abort any active trans that may scribble over the database */
urecovery_AbortAll(dbase);
- ViceLog(0, ("Ubik: Synchronize database via DISK_SendFile from server %s\n",
+ ViceLog(0, ("Ubik: Synchronize database: receive (via SendFile) from server %s begin\n",
afs_inet_ntoa_r(otherHost, hoststr)));
offset = 0;
(file<0)?-file:file);
fd = open(pbuffer, O_CREAT | O_RDWR | O_TRUNC, 0600);
if (fd < 0) {
+ ViceLog(0, ("Open error=%d\n", errno));
code = errno;
goto failed_locked;
}
code = lseek(fd, HDRSIZE, 0);
if (code != HDRSIZE) {
+ ViceLog(0, ("lseek error=%d\n", code));
close(fd);
goto failed_locked;
}
length -= tlen;
}
code = close(fd);
- if (code)
+ if (code) {
+ ViceLog(0, ("close failed error=%d\n", code));
goto failed;
+ }
/* sync data first, then write label and resync (resync done by setlabel call).
* This way, good label is only on good database. */
(*dbase->setlabel) (dbase, file, &tversion);
UBIK_VERSION_UNLOCK;
}
- ViceLog(0, ("Ubik: Synchronize database with server %s failed (error = %d)\n",
- afs_inet_ntoa_r(otherHost, hoststr), code));
+ ViceLog(0,
+ ("Ubik: Synchronize database: receive (via SendFile) from "
+ "server %s failed (error = %d)\n",
+ afs_inet_ntoa_r(otherHost, hoststr), code));
} else {
uvote_set_dbVersion(*avers);
- ViceLog(0, ("Ubik: Synchronize database completed\n"));
+ ViceLog(0,
+ ("Ubik: Synchronize database: receive (via SendFile) from "
+ "server %s complete, version: %d.%d\n",
+ afs_inet_ntoa_r(otherHost, hoststr), avers->epoch, avers->counter));
}
DBRELE(dbase);
return code;