summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2017-03-02 15:53:17 +1100
committerMartin Schwenke <martins@samba.org>2017-06-29 10:34:27 +0200
commit7c462b0df873a42a5f0a19887c0a3d7f12993ddd (patch)
tree4bc8c390136c4b7767355fc213ba69375970f14a /ctdb
parent4e43a344cc30679d8326ba1b2c6ddf459ac6d0bb (diff)
downloadsamba-7c462b0df873a42a5f0a19887c0a3d7f12993ddd.tar.gz
ctdb-daemon: Store db_flags instead of individual boolean flags
Signed-off-by: Amitay Isaacs <amitay@gmail.com> Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb')
-rw-r--r--ctdb/client/ctdb_client.c4
-rw-r--r--ctdb/common/ctdb_ltdb.c26
-rw-r--r--ctdb/include/ctdb_private.h4
-rw-r--r--ctdb/server/ctdb_ltdb_server.c4
-rw-r--r--ctdb/server/ctdb_recover.c10
5 files changed, 27 insertions, 21 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c
index b1087c498f9..5ec3d0043f3 100644
--- a/ctdb/client/ctdb_client.c
+++ b/ctdb/client/ctdb_client.c
@@ -2176,7 +2176,9 @@ struct ctdb_db_context *ctdb_attach(struct ctdb_context *ctdb,
return NULL;
}
- ctdb_db->persistent = persistent;
+ if (persistent) {
+ ctdb_db->db_flags = CTDB_DB_FLAGS_PERSISTENT;
+ }
DLIST_ADD(ctdb->db_list, ctdb_db);
diff --git a/ctdb/common/ctdb_ltdb.c b/ctdb/common/ctdb_ltdb.c
index aa1db9de6ea..c36b440a714 100644
--- a/ctdb/common/ctdb_ltdb.c
+++ b/ctdb/common/ctdb_ltdb.c
@@ -80,37 +80,49 @@ struct ctdb_db_context *ctdb_db_handle(struct ctdb_context *ctdb, const char *na
bool ctdb_db_persistent(struct ctdb_db_context *ctdb_db)
{
- return ctdb_db->persistent;
+ if (ctdb_db->db_flags & CTDB_DB_FLAGS_PERSISTENT) {
+ return true;
+ }
+ return false;
}
bool ctdb_db_volatile(struct ctdb_db_context *ctdb_db)
{
- return !ctdb_db->persistent;
+ if (ctdb_db->db_flags & CTDB_DB_FLAGS_PERSISTENT) {
+ return false;
+ }
+ return true;
}
bool ctdb_db_readonly(struct ctdb_db_context *ctdb_db)
{
- return ctdb_db->readonly;
+ if (ctdb_db->db_flags & CTDB_DB_FLAGS_READONLY) {
+ return true;
+ }
+ return false;
}
void ctdb_db_set_readonly(struct ctdb_db_context *ctdb_db)
{
- ctdb_db->readonly = true;
+ ctdb_db->db_flags |= CTDB_DB_FLAGS_READONLY;
}
void ctdb_db_reset_readonly(struct ctdb_db_context *ctdb_db)
{
- ctdb_db->readonly = false;
+ ctdb_db->db_flags &= ~CTDB_DB_FLAGS_READONLY;
}
bool ctdb_db_sticky(struct ctdb_db_context *ctdb_db)
{
- return ctdb_db->sticky;
+ if (ctdb_db->db_flags & CTDB_DB_FLAGS_STICKY) {
+ return true;
+ }
+ return false;
}
void ctdb_db_set_sticky(struct ctdb_db_context *ctdb_db)
{
- ctdb_db->sticky = true;
+ ctdb_db->db_flags |= CTDB_DB_FLAGS_STICKY;
}
/*
diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h
index 8cdb4d8f0fa..4b0805bd1a6 100644
--- a/ctdb/include/ctdb_private.h
+++ b/ctdb/include/ctdb_private.h
@@ -344,9 +344,7 @@ struct ctdb_db_context {
struct ctdb_db_context *next, *prev;
struct ctdb_context *ctdb;
uint32_t db_id;
- bool persistent;
- bool readonly; /* Do we support read-only delegations ? */
- bool sticky; /* Do we support sticky records ? */
+ uint8_t db_flags;
const char *db_name;
const char *db_path;
struct tdb_wrap *ltdb;
diff --git a/ctdb/server/ctdb_ltdb_server.c b/ctdb/server/ctdb_ltdb_server.c
index 57611e29fbc..769d7c39dda 100644
--- a/ctdb/server/ctdb_ltdb_server.c
+++ b/ctdb/server/ctdb_ltdb_server.c
@@ -778,7 +778,9 @@ static int ctdb_local_attach(struct ctdb_context *ctdb, const char *db_name,
key.dsize = strlen(db_name)+1;
key.dptr = discard_const(db_name);
ctdb_db->db_id = ctdb_hash(&key);
- ctdb_db->persistent = persistent;
+ if (persistent) {
+ ctdb_db->db_flags = CTDB_DB_FLAGS_PERSISTENT;
+ }
if (ctdb_db_volatile(ctdb_db)) {
ctdb_db->delete_queue = trbt_create(ctdb_db, 0);
diff --git a/ctdb/server/ctdb_recover.c b/ctdb/server/ctdb_recover.c
index 0af6309c28e..9c8bf6b5fdf 100644
--- a/ctdb/server/ctdb_recover.c
+++ b/ctdb/server/ctdb_recover.c
@@ -115,15 +115,7 @@ ctdb_control_getdbmap(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indat
dbid_map->num = len;
for (i=0,ctdb_db=ctdb->db_list;ctdb_db;i++,ctdb_db=ctdb_db->next){
dbid_map->dbs[i].db_id = ctdb_db->db_id;
- if (ctdb_db_persistent(ctdb_db)) {
- dbid_map->dbs[i].flags |= CTDB_DB_FLAGS_PERSISTENT;
- }
- if (ctdb_db_readonly(ctdb_db)) {
- dbid_map->dbs[i].flags |= CTDB_DB_FLAGS_READONLY;
- }
- if (ctdb_db_sticky(ctdb_db)) {
- dbid_map->dbs[i].flags |= CTDB_DB_FLAGS_STICKY;
- }
+ dbid_map->dbs[i].flags = ctdb_db->db_flags;
}
return 0;