From 90d106ef19662fbbb686dfacf051a83e243390cd Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Sun, 25 Sep 2011 19:37:00 +0000 Subject: Restart CLVMD with same cluster manager Add named cluster_ops to easily learn the name of the active cluster manager, so we are able to restart singlenode manager in testing. Add simple test for clvmd -S (restart) and -R (refresh) (though it needs some extensions). --- daemons/clvmd/clvmd-cman.c | 1 + daemons/clvmd/clvmd-command.c | 10 ++++------ daemons/clvmd/clvmd-comms.h | 3 ++- daemons/clvmd/clvmd-corosync.c | 1 + daemons/clvmd/clvmd-openais.c | 1 + daemons/clvmd/clvmd-singlenode.c | 1 + 6 files changed, 10 insertions(+), 7 deletions(-) (limited to 'daemons/clvmd') diff --git a/daemons/clvmd/clvmd-cman.c b/daemons/clvmd/clvmd-cman.c index c7a2b2d7..7e76dc44 100644 --- a/daemons/clvmd/clvmd-cman.c +++ b/daemons/clvmd/clvmd-cman.c @@ -479,6 +479,7 @@ static int _get_cluster_name(char *buf, int buflen) } static struct cluster_ops _cluster_cman_ops = { + .name = "cman", .cluster_init_completed = _cluster_init_completed, .cluster_send_message = _cluster_send_message, .name_from_csid = _name_from_csid, diff --git a/daemons/clvmd/clvmd-command.c b/daemons/clvmd/clvmd-command.c index 5857a30f..c1ee673f 100644 --- a/daemons/clvmd/clvmd-command.c +++ b/daemons/clvmd/clvmd-command.c @@ -1,6 +1,6 @@ /* * Copyright (C) 2002-2004 Sistina Software, Inc. All rights reserved. - * Copyright (C) 2004 Red Hat, Inc. All rights reserved. + * Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved. * * This file is part of LVM2. * @@ -381,7 +381,7 @@ static int restart_clvmd(void) } while (hn); /* clvmd + locks (-E uuid) + debug (-d X) + NULL */ - if (!(argv = malloc((max_locks * 2 + 4) * sizeof(*argv)))) + if (!(argv = malloc((max_locks * 2 + 5) * sizeof(*argv)))) goto_out; /* @@ -396,10 +396,8 @@ static int restart_clvmd(void) argv[argc++] = debug_arg; } - /* - * FIXME: specify used cluster backend - * argv[argc++] = strdup("-Isinglenode"); - */ + argv[argc++] = "-I"; + argv[argc++] = clops->name; /* Now add the exclusively-open LVs */ hn = NULL; diff --git a/daemons/clvmd/clvmd-comms.h b/daemons/clvmd/clvmd-comms.h index 500bd575..7207334e 100644 --- a/daemons/clvmd/clvmd-comms.h +++ b/daemons/clvmd/clvmd-comms.h @@ -1,6 +1,6 @@ /* * Copyright (C) 2002-2004 Sistina Software, Inc. All rights reserved. - * Copyright (C) 2004-2009 Red Hat, Inc. All rights reserved. + * Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved. * * This file is part of LVM2. * @@ -23,6 +23,7 @@ struct local_client; struct cluster_ops { + const char *name; void (*cluster_init_completed) (void); int (*cluster_send_message) (const void *buf, int msglen, diff --git a/daemons/clvmd/clvmd-corosync.c b/daemons/clvmd/clvmd-corosync.c index 01ee09ff..e929681c 100644 --- a/daemons/clvmd/clvmd-corosync.c +++ b/daemons/clvmd/clvmd-corosync.c @@ -598,6 +598,7 @@ out: } static struct cluster_ops _cluster_corosync_ops = { + .name = "corosync", .cluster_init_completed = NULL, .cluster_send_message = _cluster_send_message, .name_from_csid = _name_from_csid, diff --git a/daemons/clvmd/clvmd-openais.c b/daemons/clvmd/clvmd-openais.c index 0cfb6375..a2fe69e2 100644 --- a/daemons/clvmd/clvmd-openais.c +++ b/daemons/clvmd/clvmd-openais.c @@ -667,6 +667,7 @@ static int _get_cluster_name(char *buf, int buflen) } static struct cluster_ops _cluster_openais_ops = { + .name = "openais", .cluster_init_completed = NULL, .cluster_send_message = _cluster_send_message, .name_from_csid = _name_from_csid, diff --git a/daemons/clvmd/clvmd-singlenode.c b/daemons/clvmd/clvmd-singlenode.c index 3a46fb60..0aa894e3 100644 --- a/daemons/clvmd/clvmd-singlenode.c +++ b/daemons/clvmd/clvmd-singlenode.c @@ -267,6 +267,7 @@ static int _get_cluster_name(char *buf, int buflen) } static struct cluster_ops _cluster_singlenode_ops = { + .name = "singlenode", .cluster_init_completed = NULL, .cluster_send_message = _cluster_send_message, .name_from_csid = _name_from_csid, -- cgit