summaryrefslogtreecommitdiffstats
path: root/0030-RHBZ-916528-override-queue-no-daemon.patch
diff options
context:
space:
mode:
authorBenjamin Marzinski <bmarzins@redhat.com>2013-04-26 11:43:50 -0500
committerBenjamin Marzinski <bmarzins@redhat.com>2013-04-26 11:43:50 -0500
commiteaac5636447a25b9c6dcf61c60d8a206cc23a838 (patch)
tree2139358c18b207f425f36434441c36553e4da5d2 /0030-RHBZ-916528-override-queue-no-daemon.patch
parent0b94e5c7c22f27799d350698962929750d943bd7 (diff)
downloaddevice-mapper-multipath-eaac5636447a25b9c6dcf61c60d8a206cc23a838.tar.gz
device-mapper-multipath-eaac5636447a25b9c6dcf61c60d8a206cc23a838.tar.xz
device-mapper-multipath-eaac5636447a25b9c6dcf61c60d8a206cc23a838.zip
device-mapper-multipath-0.4.9-49
Modify 0020-RHBZ-907360-static-pthread-init.patch * Don't initialize uevent list twice Add 0029-RH-no-prio-put-msg.patch Add 0030-RHBZ-916528-override-queue-no-daemon.patch * Default to "queue_without_daemon no" * Add "forcequeueing daemon" and "restorequeueing daemon" cli commands Modify spec file to force queue_without_daemon when restarting multipathd on upgrades.
Diffstat (limited to '0030-RHBZ-916528-override-queue-no-daemon.patch')
-rw-r--r--0030-RHBZ-916528-override-queue-no-daemon.patch200
1 files changed, 200 insertions, 0 deletions
diff --git a/0030-RHBZ-916528-override-queue-no-daemon.patch b/0030-RHBZ-916528-override-queue-no-daemon.patch
new file mode 100644
index 0000000..e663ded
--- /dev/null
+++ b/0030-RHBZ-916528-override-queue-no-daemon.patch
@@ -0,0 +1,200 @@
+---
+ libmultipath/dict.c | 10 ++++------
+ libmultipath/structs.h | 2 +-
+ multipathd/cli.c | 3 +++
+ multipathd/cli.h | 2 ++
+ multipathd/cli_handlers.c | 18 ++++++++++++++++++
+ multipathd/cli_handlers.h | 2 ++
+ multipathd/main.c | 2 ++
+ multipathd/multipathd.init.redhat | 14 ++++++++++----
+ 8 files changed, 42 insertions(+), 11 deletions(-)
+
+Index: multipath-tools-130222/libmultipath/dict.c
+===================================================================
+--- multipath-tools-130222.orig/libmultipath/dict.c
++++ multipath-tools-130222/libmultipath/dict.c
+@@ -438,14 +438,11 @@ def_queue_without_daemon(vector strvec)
+ if (!buff)
+ return 1;
+
+- if (!strncmp(buff, "off", 3) || !strncmp(buff, "no", 2) ||
+- !strncmp(buff, "0", 1))
+- conf->queue_without_daemon = QUE_NO_DAEMON_OFF;
+- else if (!strncmp(buff, "on", 2) || !strncmp(buff, "yes", 3) ||
++ if (!strncmp(buff, "on", 2) || !strncmp(buff, "yes", 3) ||
+ !strncmp(buff, "1", 1))
+ conf->queue_without_daemon = QUE_NO_DAEMON_ON;
+ else
+- conf->queue_without_daemon = QUE_NO_DAEMON_UNDEF;
++ conf->queue_without_daemon = QUE_NO_DAEMON_OFF;
+
+ free(buff);
+ return 0;
+@@ -2670,8 +2667,9 @@ snprint_def_queue_without_daemon (char *
+ case QUE_NO_DAEMON_OFF:
+ return snprintf(buff, len, "\"no\"");
+ case QUE_NO_DAEMON_ON:
+- case QUE_NO_DAEMON_UNDEF:
+ return snprintf(buff, len, "\"yes\"");
++ case QUE_NO_DAEMON_FORCE:
++ return snprintf(buff, len, "\"forced\"");
+ }
+ return 0;
+ }
+Index: multipath-tools-130222/libmultipath/structs.h
+===================================================================
+--- multipath-tools-130222.orig/libmultipath/structs.h
++++ multipath-tools-130222/libmultipath/structs.h
+@@ -67,9 +67,9 @@ enum pgstates {
+ };
+
+ enum queue_without_daemon_states {
+- QUE_NO_DAEMON_UNDEF,
+ QUE_NO_DAEMON_OFF,
+ QUE_NO_DAEMON_ON,
++ QUE_NO_DAEMON_FORCE,
+ };
+
+ enum pgtimeouts {
+Index: multipath-tools-130222/multipathd/cli.c
+===================================================================
+--- multipath-tools-130222.orig/multipathd/cli.c
++++ multipath-tools-130222/multipathd/cli.c
+@@ -162,6 +162,7 @@ load_keys (void)
+ r += add_key(keys, "resize", RESIZE, 0);
+ r += add_key(keys, "reset", RESET, 0);
+ r += add_key(keys, "reload", RELOAD, 0);
++ r += add_key(keys, "forcequeueing", FORCEQ, 0);
+ r += add_key(keys, "disablequeueing", DISABLEQ, 0);
+ r += add_key(keys, "restorequeueing", RESTOREQ, 0);
+ r += add_key(keys, "paths", PATHS, 0);
+@@ -459,6 +460,8 @@ cli_init (void) {
+ add_handler(GETPRSTATUS+MAP, NULL);
+ add_handler(SETPRSTATUS+MAP, NULL);
+ add_handler(UNSETPRSTATUS+MAP, NULL);
++ add_handler(FORCEQ+DAEMON, NULL);
++ add_handler(RESTOREQ+DAEMON, NULL);
+
+ return 0;
+ }
+Index: multipath-tools-130222/multipathd/cli.h
+===================================================================
+--- multipath-tools-130222.orig/multipathd/cli.h
++++ multipath-tools-130222/multipathd/cli.h
+@@ -10,6 +10,7 @@ enum {
+ __RESIZE,
+ __RESET,
+ __RELOAD,
++ __FORCEQ,
+ __DISABLEQ,
+ __RESTOREQ,
+ __PATHS,
+@@ -45,6 +46,7 @@ enum {
+ #define RESIZE (1 << __RESIZE)
+ #define RESET (1 << __RESET)
+ #define RELOAD (1 << __RELOAD)
++#define FORCEQ (1 << __FORCEQ)
+ #define DISABLEQ (1 << __DISABLEQ)
+ #define RESTOREQ (1 << __RESTOREQ)
+ #define PATHS (1 << __PATHS)
+Index: multipath-tools-130222/multipathd/cli_handlers.c
+===================================================================
+--- multipath-tools-130222.orig/multipathd/cli_handlers.c
++++ multipath-tools-130222/multipathd/cli_handlers.c
+@@ -628,6 +628,24 @@ cli_resize(void *v, char **reply, int *l
+ }
+
+ int
++cli_force_no_daemon_q(void * v, char ** reply, int * len, void * data)
++{
++ condlog(2, "force queue_without_daemon (operator)");
++ if (conf->queue_without_daemon == QUE_NO_DAEMON_OFF)
++ conf->queue_without_daemon = QUE_NO_DAEMON_FORCE;
++ return 0;
++}
++
++int
++cli_restore_no_daemon_q(void * v, char ** reply, int * len, void * data)
++{
++ condlog(2, "restore queue_without_daemon (operator)");
++ if (conf->queue_without_daemon == QUE_NO_DAEMON_FORCE)
++ conf->queue_without_daemon = QUE_NO_DAEMON_OFF;
++ return 0;
++}
++
++int
+ cli_restore_queueing(void *v, char **reply, int *len, void *data)
+ {
+ struct vectors * vecs = (struct vectors *)data;
+Index: multipath-tools-130222/multipathd/cli_handlers.h
+===================================================================
+--- multipath-tools-130222.orig/multipathd/cli_handlers.h
++++ multipath-tools-130222/multipathd/cli_handlers.h
+@@ -28,6 +28,8 @@ int cli_suspend(void * v, char ** reply,
+ int cli_resume(void * v, char ** reply, int * len, void * data);
+ int cli_reinstate(void * v, char ** reply, int * len, void * data);
+ int cli_fail(void * v, char ** reply, int * len, void * data);
++int cli_force_no_daemon_q(void * v, char ** reply, int * len, void * data);
++int cli_restore_no_daemon_q(void * v, char ** reply, int * len, void * data);
+ int cli_quit(void * v, char ** reply, int * len, void * data);
+ int cli_shutdown(void * v, char ** reply, int * len, void * data);
+ int cli_reassign (void * v, char ** reply, int * len, void * data);
+Index: multipath-tools-130222/multipathd/main.c
+===================================================================
+--- multipath-tools-130222.orig/multipathd/main.c
++++ multipath-tools-130222/multipathd/main.c
+@@ -904,6 +904,8 @@ uxlsnrloop (void * ap)
+ set_handler_callback(GETPRSTATUS+MAP, cli_getprstatus);
+ set_handler_callback(SETPRSTATUS+MAP, cli_setprstatus);
+ set_handler_callback(UNSETPRSTATUS+MAP, cli_unsetprstatus);
++ set_handler_callback(FORCEQ+DAEMON, cli_force_no_daemon_q);
++ set_handler_callback(RESTOREQ+DAEMON, cli_restore_no_daemon_q);
+
+ umask(077);
+ uxsock_listen(&uxsock_trigger, ap);
+Index: multipath-tools-130222/multipathd/multipathd.init.redhat
+===================================================================
+--- multipath-tools-130222.orig/multipathd/multipathd.init.redhat
++++ multipath-tools-130222/multipathd/multipathd.init.redhat
+@@ -81,23 +81,28 @@ force_stop() {
+ echo
+ }
+
+-stop() {
++check_root() {
+ root_dev=$(awk '{ if ($1 !~ /^[ \t]*#/ && $2 == "/") { print $1; }}' /etc/mtab)
+ dm_num=`dmsetup info -c --noheadings -o minor $root_dev 2> /dev/null`
+ if [ $? -eq 0 ]; then
+ root_dm_device="dm-$dm_num"
+ [ -d $syspath/$root_dm_device ] && teardown_slaves $syspath/$root_dm_device
+ fi
++}
+
+- force_stop
++force_queue_without_daemon() {
++ $DAEMON forcequeueing daemon
+ }
+
+ restart() {
+- stop
++ force_queue_without_daemon
++ check_root
++ force_stop
+ start
+ }
+
+ force_restart() {
++ force_queue_without_daemon
+ force_stop
+ start
+ }
+@@ -115,7 +120,8 @@ start)
+ start
+ ;;
+ stop)
+- stop
++ check_root
++ force_stop
+ ;;
+ force-stop)
+ force_stop