ctdbd: Remove duplicate database directory setting logic
authorMartin Schwenke <martin@meltin.net>
Mon, 21 Oct 2013 08:36:36 +0000 (19:36 +1100)
committerAmitay Isaacs <amitay@gmail.com>
Fri, 25 Oct 2013 01:06:06 +0000 (12:06 +1100)
Defaults for ctdb->db_directory and similar variables are currently
set in 2 places.

Change this to set them in only 1 place and make the directories at
initialisation time instead of waiting until later.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Pair-programmed-with: Amitay Isaacs <amitay@gmail.com>

server/ctdb_ltdb_server.c
server/ctdbd.c

index db9bc01295a818510f8f28d4a3ceca49c23906de..234ecac5fcd624123d34f636acf0385587355b1c 100644 (file)
@@ -1235,40 +1235,6 @@ int ctdb_attach_databases(struct ctdb_context *ctdb)
        char *unhealthy_reason = NULL;
        bool first_try = true;
 
-       if (ctdb->db_directory == NULL) {
-               ctdb->db_directory = VARDIR "/ctdb";
-       }
-       if (ctdb->db_directory_persistent == NULL) {
-               ctdb->db_directory_persistent = VARDIR "/ctdb/persistent";
-       }
-       if (ctdb->db_directory_state == NULL) {
-               ctdb->db_directory_state = VARDIR "/ctdb/state";
-       }
-
-       /* make sure the db directory exists */
-       ret = mkdir(ctdb->db_directory, 0700);
-       if (ret == -1 && errno != EEXIST) {
-               DEBUG(DEBUG_CRIT,(__location__ " Unable to create ctdb directory '%s'\n",
-                        ctdb->db_directory));
-               return -1;
-       }
-
-       /* make sure the persistent db directory exists */
-       ret = mkdir(ctdb->db_directory_persistent, 0700);
-       if (ret == -1 && errno != EEXIST) {
-               DEBUG(DEBUG_CRIT,(__location__ " Unable to create ctdb persistent directory '%s'\n",
-                        ctdb->db_directory_persistent));
-               return -1;
-       }
-
-       /* make sure the internal state db directory exists */
-       ret = mkdir(ctdb->db_directory_state, 0700);
-       if (ret == -1 && errno != EEXIST) {
-               DEBUG(DEBUG_CRIT,(__location__ " Unable to create ctdb state directory '%s'\n",
-                        ctdb->db_directory_state));
-               return -1;
-       }
-
        persistent_health_path = talloc_asprintf(ctdb, "%s/%s.%u",
                                                 ctdb->db_directory_state,
                                                 PERSISTENT_HEALTH_TDB,
index f3cb9d3e95fd38180178a97fb2dcbcd1754adef8..f9e83f8c3f8d826a21306ef887b0df24ff36e14f 100644 (file)
@@ -263,6 +263,8 @@ int main(int argc, const char *argv[])
                        exit(1);
                }
        }
+       ctdb_mkdir_p_or_die(ctdb, ctdb->db_directory, 0700);
+
        if (options.db_dir_persistent) {
                ret = ctdb_set_tdb_dir_persistent(ctdb, options.db_dir_persistent);
                if (ret == -1) {
@@ -270,6 +272,8 @@ int main(int argc, const char *argv[])
                        exit(1);
                }
        }
+       ctdb_mkdir_p_or_die(ctdb, ctdb->db_directory_persistent, 0700);
+
        if (options.db_dir_state) {
                ret = ctdb_set_tdb_dir_state(ctdb, options.db_dir_state);
                if (ret == -1) {
@@ -277,6 +281,7 @@ int main(int argc, const char *argv[])
                        exit(1);
                }
        }
+       ctdb_mkdir_p_or_die(ctdb, ctdb->db_directory_state, 0700);
 
        if (options.public_interface) {
                ctdb->default_public_interface = talloc_strdup(ctdb, options.public_interface);