bool ctdb_db_persistent(struct ctdb_db_context *ctdb_db);
bool ctdb_db_volatile(struct ctdb_db_context *ctdb_db);
+bool ctdb_db_readonly(struct ctdb_db_context *ctdb_db);
+void ctdb_db_set_readonly(struct ctdb_db_context *ctdb_db);
+void ctdb_db_reset_readonly(struct ctdb_db_context *ctdb_db);
+
uint32_t ctdb_lmaster(struct ctdb_context *ctdb, const TDB_DATA *key);
int ctdb_ltdb_fetch(struct ctdb_db_context *ctdb_db,
return !ctdb_db->persistent;
}
+bool ctdb_db_readonly(struct ctdb_db_context *ctdb_db)
+{
+ return ctdb_db->readonly;
+}
+
+void ctdb_db_set_readonly(struct ctdb_db_context *ctdb_db)
+{
+ ctdb_db->readonly = true;
+}
+
+void ctdb_db_reset_readonly(struct ctdb_db_context *ctdb_db)
+{
+ ctdb_db->readonly = false;
+}
+
/*
return the lmaster given a key
*/
{
char *ropath;
- if (ctdb_db->readonly) {
+ if (ctdb_db_readonly(ctdb_db)) {
return 0;
}
DEBUG(DEBUG_NOTICE,("OPENED tracking database : '%s'\n", ropath));
- ctdb_db->readonly = true;
+ ctdb_db_set_readonly(ctdb_db);
DEBUG(DEBUG_NOTICE, ("Readonly property set on DB %s\n", ctdb_db->db_name));
}
/* Free readonly tracking database */
- if (ctdb_db->readonly) {
+ if (ctdb_db_readonly(ctdb_db)) {
talloc_free(ctdb_db->rottdb);
}
if (ctdb_db_persistent(ctdb_db)) {
dbid_map->dbs[i].flags |= CTDB_DB_FLAGS_PERSISTENT;
}
- if (ctdb_db->readonly != 0) {
+ if (ctdb_db_readonly(ctdb_db)) {
dbid_map->dbs[i].flags |= CTDB_DB_FLAGS_READONLY;
}
if (ctdb_db->sticky != 0) {
DEBUG(DEBUG_DEBUG,("finished push of %u records for dbid 0x%x\n",
reply->count, reply->db_id));
- if (ctdb_db->readonly) {
+ if (ctdb_db_readonly(ctdb_db)) {
DEBUG(DEBUG_CRIT,("Clearing the tracking database for dbid 0x%x\n",
ctdb_db->db_id));
if (tdb_wipe_all(ctdb_db->rottdb) != 0) {
DEBUG(DEBUG_ERR,("Failed to wipe tracking database for 0x%x. Dropping read-only delegation support\n", ctdb_db->db_id));
- ctdb_db->readonly = false;
tdb_close(ctdb_db->rottdb);
ctdb_db->rottdb = NULL;
- ctdb_db->readonly = false;
+ ctdb_db_reset_readonly(ctdb_db);
}
while (ctdb_db->revokechild_active != NULL) {
talloc_free(ctdb_db->revokechild_active);
return -1;
}
- if (ctdb_db->readonly) {
+ if (ctdb_db_readonly(ctdb_db)) {
DEBUG(DEBUG_ERR,
("Clearing the tracking database for dbid 0x%x\n",
ctdb_db->db_id));
("Failed to wipe tracking database for 0x%x."
" Dropping read-only delegation support\n",
ctdb_db->db_id));
- ctdb_db->readonly = false;
tdb_close(ctdb_db->rottdb);
ctdb_db->rottdb = NULL;
- ctdb_db->readonly = false;
+ ctdb_db_reset_readonly(ctdb_db);
}
while (ctdb_db->revokechild_active != NULL) {