From b8ce351d9c45d788e11b6ae7d66650484b016aeb Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Mon, 20 Oct 2008 23:52:02 +0200 Subject: [PATCH] libsmbconf: add backend_requires_messaging() method to libsmbconf. In a clustered environment, the registry backend needs messaging to be set up since ctdb requires this. Michael (cherry picked from commit 5d2255e13cf2e468887a61fb9a7e99d2ba665333) --- source/lib/smbconf/smbconf.c | 9 +++++++++ source/lib/smbconf/smbconf.h | 1 + source/lib/smbconf/smbconf_private.h | 1 + source/lib/smbconf/smbconf_reg.c | 11 +++++++++++ source/lib/smbconf/smbconf_txt.c | 6 ++++++ 5 files changed, 28 insertions(+) diff --git a/source/lib/smbconf/smbconf.c b/source/lib/smbconf/smbconf.c index 1a9b4e07f94..7911687a889 100644 --- a/source/lib/smbconf/smbconf.c +++ b/source/lib/smbconf/smbconf.c @@ -43,6 +43,15 @@ static WERROR smbconf_global_check(struct smbconf_ctx *ctx) **********************************************************************/ /** + * Tell whether the backend requires messaging to be set up + * for the backend to work correctly. + */ +bool smbconf_backend_requires_messaging(struct smbconf_ctx *ctx) +{ + return ctx->ops->requires_messaging(ctx); +} + +/** * Close the configuration. */ void smbconf_shutdown(struct smbconf_ctx *ctx) diff --git a/source/lib/smbconf/smbconf.h b/source/lib/smbconf/smbconf.h index e3374766652..3f3435ea009 100644 --- a/source/lib/smbconf/smbconf.h +++ b/source/lib/smbconf/smbconf.h @@ -56,6 +56,7 @@ WERROR smbconf_init_txt(TALLOC_CTX *mem_ctx, /* * the smbconf API functions */ +bool smbconf_backend_requires_messaging(struct smbconf_ctx *ctx); void smbconf_shutdown(struct smbconf_ctx *ctx); bool smbconf_changed(struct smbconf_ctx *ctx, struct smbconf_csn *csn, const char *service, const char *param); diff --git a/source/lib/smbconf/smbconf_private.h b/source/lib/smbconf/smbconf_private.h index 8e7d6a9983e..a47d81fa256 100644 --- a/source/lib/smbconf/smbconf_private.h +++ b/source/lib/smbconf/smbconf_private.h @@ -23,6 +23,7 @@ struct smbconf_ops { WERROR (*init)(struct smbconf_ctx *ctx, const char *path); int (*shutdown)(struct smbconf_ctx *ctx); + bool (*requires_messaging)(struct smbconf_ctx *ctx); WERROR (*open_conf)(struct smbconf_ctx *ctx); int (*close_conf)(struct smbconf_ctx *ctx); void (*get_csn)(struct smbconf_ctx *ctx, struct smbconf_csn *csn, diff --git a/source/lib/smbconf/smbconf_reg.c b/source/lib/smbconf/smbconf_reg.c index 033f800e2a3..cfe874df49d 100644 --- a/source/lib/smbconf/smbconf_reg.c +++ b/source/lib/smbconf/smbconf_reg.c @@ -642,6 +642,16 @@ static int smbconf_reg_shutdown(struct smbconf_ctx *ctx) return ctx->ops->close_conf(ctx); } +static bool smbconf_reg_requires_messaging(struct smbconf_ctx *ctx) +{ +#ifdef CLUSTER_SUPPORT + if (lp_clustering() && lp_parm_bool(-1, "ctdb", "registry.tdb", true)) { + return true; + } +#endif + return false; +} + static WERROR smbconf_reg_open(struct smbconf_ctx *ctx) { WERROR werr; @@ -1119,6 +1129,7 @@ done: struct smbconf_ops smbconf_ops_reg = { .init = smbconf_reg_init, .shutdown = smbconf_reg_shutdown, + .requires_messaging = smbconf_reg_requires_messaging, .open_conf = smbconf_reg_open, .close_conf = smbconf_reg_close, .get_csn = smbconf_reg_get_csn, diff --git a/source/lib/smbconf/smbconf_txt.c b/source/lib/smbconf/smbconf_txt.c index 1a29f401649..7a6f510d5d9 100644 --- a/source/lib/smbconf/smbconf_txt.c +++ b/source/lib/smbconf/smbconf_txt.c @@ -243,6 +243,11 @@ static int smbconf_txt_shutdown(struct smbconf_ctx *ctx) return ctx->ops->close_conf(ctx); } +static bool smbconf_txt_requires_messaging(struct smbconf_ctx *ctx) +{ + return false; +} + static WERROR smbconf_txt_open(struct smbconf_ctx *ctx) { return smbconf_txt_load_file(ctx); @@ -604,6 +609,7 @@ static WERROR smbconf_txt_delete_includes(struct smbconf_ctx *ctx, static struct smbconf_ops smbconf_ops_txt = { .init = smbconf_txt_init, .shutdown = smbconf_txt_shutdown, + .requires_messaging = smbconf_txt_requires_messaging, .open_conf = smbconf_txt_open, .close_conf = smbconf_txt_close, .get_csn = smbconf_txt_get_csn, -- 2.11.4.GIT