ctdb-daemon: Store db_flags instead of individual boolean flags
authorAmitay Isaacs <amitay@gmail.com>
Thu, 2 Mar 2017 04:53:17 +0000 (15:53 +1100)
committerMartin Schwenke <martins@samba.org>
Thu, 29 Jun 2017 08:34:27 +0000 (10:34 +0200)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/client/ctdb_client.c
ctdb/common/ctdb_ltdb.c
ctdb/include/ctdb_private.h
ctdb/server/ctdb_ltdb_server.c
ctdb/server/ctdb_recover.c

index b1087c4..5ec3d00 100644 (file)
@@ -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);
 
index aa1db9d..c36b440 100644 (file)
@@ -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;
 }
 
 /*
index 8cdb4d8..4b0805b 100644 (file)
@@ -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;
index 57611e2..769d7c3 100644 (file)
@@ -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);
index 0af6309..9c8bf6b 100644 (file)
@@ -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;