initialize_U_error_table();
- tdb = malloc(sizeof(struct ubik_dbase));
+ tdb = calloc(1, sizeof(*tdb));
tdb->pathName = strdup(pathName);
- tdb->activeTrans = (struct ubik_trans *)0;
- memset(&tdb->version, 0, sizeof(struct ubik_version));
- memset(&tdb->cachedVersion, 0, sizeof(struct ubik_version));
#ifdef AFS_PTHREAD_ENV
opr_mutex_init(&tdb->versionLock);
opr_mutex_init(&beacon_globals.beacon_lock);
Lock_Init(&tdb->versionLock);
#endif
Lock_Init(&tdb->cache_lock);
- tdb->flags = 0;
tdb->read = uphys_read;
tdb->write = uphys_write;
tdb->truncate = uphys_truncate;
tdb->getlabel = uphys_getlabel;
tdb->setlabel = uphys_setlabel;
tdb->getnfiles = uphys_getnfiles;
- tdb->readers = 0;
- tdb->tidCounter = tdb->writeTidCounter = 0;
+ tdb->buffered_append = uphys_buf_append;
*dbase = tdb;
ubik_dbase = tdb; /* for now, only one db per server; can fix later when we have names for the other dbases */
#ifdef AFS_PTHREAD_ENV
- opr_cv_init(&tdb->version_cond);
opr_cv_init(&tdb->flags_cond);
#endif /* AFS_PTHREAD_ENV */
rx_NewService(0, VOTE_SERVICE_ID, "VOTE", ubik_sc, numClasses,
VOTE_ExecuteRequest);
if (tservice == (struct rx_service *)0) {
- ViceLog(5, ("Could not create VOTE rx service!\n"));
+ ViceLog(0, ("Could not create VOTE rx service!\n"));
return -1;
}
rx_SetMinProcs(tservice, 2);
rx_NewService(0, DISK_SERVICE_ID, "DISK", ubik_sc, numClasses,
DISK_ExecuteRequest);
if (tservice == (struct rx_service *)0) {
- ViceLog(5, ("Could not create DISK rx service!\n"));
+ ViceLog(0, ("Could not create DISK rx service!\n"));
return -1;
}
rx_SetMinProcs(tservice, 2);
* don't know how to restore one without possibly picking up some data from the other. */
if (transMode == UBIK_WRITETRANS) {
/* if we're writing already, wait */
- while (dbase->flags & DBWRITING) {
+ while (dbase->dbFlags & DBWRITING) {
#ifdef AFS_PTHREAD_ENV
opr_cv_wait(&dbase->flags_cond, &dbase->versionLock);
#else
DBRELE(dbase);
- LWP_WaitProcess(&dbase->flags);
+ LWP_WaitProcess(&dbase->dbFlags);
DBHOLD(dbase);
#endif
}
}
/*!
- * \brief utility to wait for a version # to change
- */
-int
-ubik_WaitVersion(struct ubik_dbase *adatabase,
- struct ubik_version *aversion)
-{
- DBHOLD(adatabase);
- while (1) {
- /* wait until version # changes, and then return */
- if (vcmp(*aversion, adatabase->version) != 0) {
- DBRELE(adatabase);
- return 0;
- }
-#ifdef AFS_PTHREAD_ENV
- opr_cv_wait(&adatabase->version_cond, &adatabase->versionLock);
-#else
- DBRELE(adatabase);
- LWP_WaitProcess(&adatabase->version); /* same vers, just wait */
- DBHOLD(adatabase);
-#endif
- }
-}
-
-/*!
- * \brief utility to get the version of the dbase a transaction is dealing with
- */
-int
-ubik_GetVersion(struct ubik_trans *atrans,
- struct ubik_version *avers)
-{
- DBHOLD(atrans->dbase);
- *avers = atrans->dbase->version;
- DBRELE(atrans->dbase);
- return 0;
-}
-
-/*!
* \brief Facility to simplify database caching.
* \return zero if last trans was done on the local server and was successful.
* \return -1 means bad (NULL) argument.
va_end(ap);
abort();
- ViceLog(0, ("BACK FROM ABORT\n")); /* shouldn't come back */
- exit(1); /* never know, though */
+ AFS_UNREACHED(ViceLog(0, ("BACK FROM ABORT\n")));
+ AFS_UNREACHED(exit(1));
}
/*!