summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ctdb/common/ctdb_util.c14
-rw-r--r--ctdb/include/ctdb_private.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/ctdb/common/ctdb_util.c b/ctdb/common/ctdb_util.c
index d4f85416c0c..7a70fea9cd7 100644
--- a/ctdb/common/ctdb_util.c
+++ b/ctdb/common/ctdb_util.c
@@ -811,3 +811,17 @@ void ctdb_set_runstate(struct ctdb_context *ctdb, enum ctdb_runstate runstate)
runstate_to_string(runstate), runstate));
ctdb->runstate = runstate;
}
+
+void ctdb_mkdir_p_or_die(struct ctdb_context *ctdb, const char *dir, int mode)
+{
+ int ret;
+
+ ret = mkdir_p(dir, mode);
+ if (ret != 0) {
+ DEBUG(DEBUG_ALERT,
+ ("ctdb exiting with error: "
+ "failed to create directory \"%s\" (%s)\n",
+ dir, strerror(ret)));
+ exit(1);
+ }
+}
diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h
index bc0b8d52d83..e961b9310a1 100644
--- a/ctdb/include/ctdb_private.h
+++ b/ctdb/include/ctdb_private.h
@@ -1589,5 +1589,6 @@ struct lock_request *ctdb_lock_alldb(struct ctdb_context *ctdb,
void *private_data);
int mkdir_p(const char *dir, int mode);
+void ctdb_mkdir_p_or_die(struct ctdb_context *ctdb, const char *dir, int mode);
#endif