[SCM] Samba Shared Repository - branch master updated

Anoop C S anoopcs at samba.org
Fri Jun 14 07:43:01 UTC 2024


The branch, master has been updated
       via  35f6c3f3d4a ctdb/docs: Include ceph rados namespace support in man page
       via  d8c52995f68 ctdb/ceph: Add optional namespace support for mutex helper
      from  9242f1e0ddb gitlab-ci: Update image to Fedora 40

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 35f6c3f3d4a5521e6576fcc0dd7dd3bbcea041b2
Author: Günther Deschner <gd at samba.org>
Date:   Fri Jun 7 14:40:07 2024 +0530

    ctdb/docs: Include ceph rados namespace support in man page
    
    Document the new optional argument to specify the namespace to be
    associated with RADOS objects in a pool.
    
    Pair-Programmed-With: Anoop C S <anoopcs at samba.org>
    Signed-off-by: Günther Deschner <gd at samba.org>
    Reviewed-by: Günther Deschner <gd at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>
    
    Autobuild-User(master): Anoop C S <anoopcs at samba.org>
    Autobuild-Date(master): Fri Jun 14 07:42:25 UTC 2024 on atb-devel-224

commit d8c52995f68fe088dd2174562faee69ed1c95edd
Author: Günther Deschner <gd at samba.org>
Date:   Fri Jun 7 14:39:37 2024 +0530

    ctdb/ceph: Add optional namespace support for mutex helper
    
    RADOS objects within a pool can be associated to a namespace for
    logical separation. librados already provides an API to configure
    such a namespace with respect to a context. Make use of it as an
    optional argument to the helper binary.
    
    Pair-Programmed-With: Anoop C S <anoopcs at samba.org>
    Signed-off-by: Günther Deschner <gd at samba.org>
    Reviewed-by: Günther Deschner <gd at samba.org>
    Reviewed-by: David Disseldorp <ddiss at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 ctdb/doc/ctdb_mutex_ceph_rados_helper.7.xml    |  4 ++-
 ctdb/utils/ceph/ctdb_mutex_ceph_rados_helper.c | 50 +++++++++++++++++++++-----
 2 files changed, 45 insertions(+), 9 deletions(-)


Changeset truncated at 500 lines:

diff --git a/ctdb/doc/ctdb_mutex_ceph_rados_helper.7.xml b/ctdb/doc/ctdb_mutex_ceph_rados_helper.7.xml
index f558f873d9a..93d79cea5dc 100644
--- a/ctdb/doc/ctdb_mutex_ceph_rados_helper.7.xml
+++ b/ctdb/doc/ctdb_mutex_ceph_rados_helper.7.xml
@@ -29,12 +29,14 @@
       <manvolnum>5</manvolnum></citerefentry>:
     </para>
     <screen format="linespecific">
-cluster lock = !ctdb_mutex_ceph_rados_helper [Cluster] [User] [Pool] [Object]
+cluster lock = !ctdb_mutex_ceph_rados_helper [Cluster] [User] [Pool] [Object] [Timeout] [-n Namespace]
 
 Cluster: Ceph cluster name (e.g. ceph)
 User: Ceph cluster user name (e.g. client.admin)
 Pool: Ceph RADOS pool name
 Object: Ceph RADOS object name
+Timeout: Ceph RADOS lock duration in seconds (optional)
+Namespace: Ceph RADOS pool namespace (optional)
     </screen>
     <para>
       The Ceph cluster <parameter>Cluster</parameter> must be up and running,
diff --git a/ctdb/utils/ceph/ctdb_mutex_ceph_rados_helper.c b/ctdb/utils/ceph/ctdb_mutex_ceph_rados_helper.c
index 7d868a38b23..46566c97a83 100644
--- a/ctdb/utils/ceph/ctdb_mutex_ceph_rados_helper.c
+++ b/ctdb/utils/ceph/ctdb_mutex_ceph_rados_helper.c
@@ -42,9 +42,18 @@
 
 static char *progname = NULL;
 
+static void usage(void)
+{
+	fprintf(stderr, "Usage: %s <Ceph Cluster> <Ceph user> "
+			"<RADOS pool> <RADOS object> "
+			"[lock duration secs] [-n RADOS namespace]\n",
+			progname);
+}
+
 static int ctdb_mutex_rados_ctx_create(const char *ceph_cluster_name,
 				       const char *ceph_auth_name,
 				       const char *pool_name,
+				       const char *namespace,
 				       rados_t *_ceph_cluster,
 				       rados_ioctx_t *_ioctx)
 {
@@ -87,6 +96,10 @@ static int ctdb_mutex_rados_ctx_create(const char *ceph_cluster_name,
 		return ret;
 	}
 
+	if (namespace != NULL) {
+		rados_ioctx_set_namespace(ioctx, namespace);
+	}
+
 	*_ceph_cluster = ceph_cluster;
 	*_ioctx = ioctx;
 
@@ -145,6 +158,7 @@ struct ctdb_mutex_rados_state {
 	const char *ceph_cluster_name;
 	const char *ceph_auth_name;
 	const char *pool_name;
+	const char *namespace;
 	const char *object;
 	uint64_t lock_duration_s;
 	int ppid;
@@ -295,15 +309,13 @@ static int ctdb_mutex_rados_mgr_reg(rados_t ceph_cluster)
 int main(int argc, char *argv[])
 {
 	int ret;
+	int opt;
 	struct ctdb_mutex_rados_state *cmr_state;
 
 	progname = argv[0];
 
-	if ((argc != 5) && (argc != 6)) {
-		fprintf(stderr, "Usage: %s <Ceph Cluster> <Ceph user> "
-				"<RADOS pool> <RADOS object> "
-				"[lock duration secs]\n",
-			progname);
+	if (argc < 5) {
+		usage();
 		ret = -EINVAL;
 		goto err_out;
 	}
@@ -325,15 +337,36 @@ int main(int argc, char *argv[])
 	cmr_state->ceph_auth_name = argv[2];
 	cmr_state->pool_name = argv[3];
 	cmr_state->object = argv[4];
-	if (argc == 6) {
+
+	optind = 5;
+	while ((opt = getopt(argc, argv, "n:")) != -1) {
+		switch(opt) {
+		case 'n':
+			cmr_state->namespace = optarg;
+			break;
+		default:
+			usage();
+			ret = -EINVAL;
+			goto err_ctx_cleanup;
+		}
+	}
+
+	if (argv[optind] != NULL) {
 		/* optional lock duration provided */
 		char *endptr = NULL;
-		cmr_state->lock_duration_s = strtoull(argv[5], &endptr, 0);
-		if ((endptr == argv[5]) || (*endptr != '\0')) {
+		cmr_state->lock_duration_s = strtoull(argv[optind], &endptr, 0);
+		if ((endptr == argv[optind]) || (*endptr != '\0')) {
 			fprintf(stdout, CTDB_MUTEX_STATUS_ERROR);
 			ret = -EINVAL;
 			goto err_ctx_cleanup;
 		}
+		if (argv[++optind] != NULL) {
+			/* incorrect count or format for optional arguments */
+			usage();
+			ret = -EINVAL;
+			goto err_ctx_cleanup;
+		}
+
 	} else {
 		cmr_state->lock_duration_s
 			= CTDB_MUTEX_CEPH_LOCK_DURATION_SECS_DEFAULT;
@@ -398,6 +431,7 @@ int main(int argc, char *argv[])
 	ret = ctdb_mutex_rados_ctx_create(cmr_state->ceph_cluster_name,
 					  cmr_state->ceph_auth_name,
 					  cmr_state->pool_name,
+					  cmr_state->namespace,
 					  &cmr_state->ceph_cluster,
 					  &cmr_state->ioctx);
 	if (ret < 0) {


-- 
Samba Shared Repository



More information about the samba-cvs mailing list