ctdb-client: Ask daemon for db open flags
authorAmitay Isaacs <amitay@gmail.com>
Fri, 23 Jun 2017 06:15:57 +0000 (16:15 +1000)
committerMartin Schwenke <martins@samba.org>
Mon, 26 Jun 2017 13:47:24 +0000 (15:47 +0200)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Martin Schwenke <martin@meltin.net>
ctdb/client/ctdb_client.c

index d80a04d33c70188e4962e0bfbdf95752cc795a08..cc23b0508257374b7d79ec9be28b447ddfd50fca 100644 (file)
@@ -2123,9 +2123,7 @@ struct ctdb_db_context *ctdb_attach(struct ctdb_context *ctdb,
        TDB_DATA data;
        int ret;
        int32_t res;
-       uint8_t db_flags = 0;
        int tdb_flags;
-       bool with_mutex = false;
 
        ctdb_db = ctdb_db_handle(ctdb, name);
        if (ctdb_db) {
@@ -2142,29 +2140,6 @@ struct ctdb_db_context *ctdb_attach(struct ctdb_context *ctdb,
        data.dptr = discard_const(name);
        data.dsize = strlen(name)+1;
 
-#ifdef TDB_MUTEX_LOCKING
-       if (!persistent) {
-               uint32_t mutex_enabled = 0;
-
-               ret = ctdb_ctrl_get_tunable(ctdb, timeval_current_ofs(3,0),
-                                           CTDB_CURRENT_NODE,
-                                           "TDBMutexEnabled",
-                                           &mutex_enabled);
-               if (ret != 0) {
-                       DEBUG(DEBUG_WARNING, ("Assuming no mutex support.\n"));
-               }
-
-               if (mutex_enabled == 1) {
-                       with_mutex = true;
-               }
-       }
-#endif
-
-       if (persistent) {
-               db_flags = CTDB_DB_FLAGS_PERSISTENT;
-       }
-       tdb_flags = ctdb_db_tdb_flags(db_flags, ctdb->valgrinding, with_mutex);
-
        /* tell ctdb daemon to attach */
        ret = ctdb_control(ctdb, CTDB_CURRENT_NODE, 0,
                           persistent?CTDB_CONTROL_DB_ATTACH_PERSISTENT:CTDB_CONTROL_DB_ATTACH,
@@ -2185,6 +2160,13 @@ struct ctdb_db_context *ctdb_attach(struct ctdb_context *ctdb,
                return NULL;
        }
 
+       ret = ctdb_ctrl_db_open_flags(ctdb, ctdb_db->db_id, &tdb_flags);
+       if (ret != 0) {
+               D_ERR("Failed to get tdb_flags for database '%s'\n", name);
+               talloc_free(ctdb_db);
+               return NULL;
+       }
+
        ctdb_db->ltdb = tdb_wrap_open(ctdb_db, ctdb_db->db_path, 0, tdb_flags,
                                      O_RDWR, 0);
        if (ctdb_db->ltdb == NULL) {