diff options
| author | Benjamin Marzinski <bmarzins@fedoraproject.org> | 2009-07-29 22:54:07 +0000 |
|---|---|---|
| committer | Benjamin Marzinski <bmarzins@fedoraproject.org> | 2009-07-29 22:54:07 +0000 |
| commit | c7ea1a3b8dbfdeb2020d25e5d847a1bb8513081f (patch) | |
| tree | 7b7ba020c69a2e01f3dd2a0d26911d1b18b548d0 /queue_without_daemon.patch | |
| parent | 39c08730f0e8e5f001c3f9dc3481b9f30eab24fb (diff) | |
Updated to latest upstream 0.4.9 code : multipath-tools-090729.tgz (git
commit id: d678c139719d5631194b50e49f16ca97162ecd0f) moved multipath
bindings file from /var/lib/multipath to /etc/multipath Fixed 354961,
432520
Diffstat (limited to 'queue_without_daemon.patch')
| -rw-r--r-- | queue_without_daemon.patch | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/queue_without_daemon.patch b/queue_without_daemon.patch new file mode 100644 index 0000000..209f37b --- /dev/null +++ b/queue_without_daemon.patch @@ -0,0 +1,153 @@ +--- + libmultipath/config.h | 1 + + libmultipath/dict.c | 35 +++++++++++++++++++++++++++++++++++ + libmultipath/structs.h | 6 ++++++ + multipath.conf.annotated | 9 +++++++++ + multipath.conf.synthetic | 1 + + multipathd/main.c | 5 +++++ + 6 files changed, 57 insertions(+) + +Index: multipath-tools-090724/libmultipath/config.h +=================================================================== +--- multipath-tools-090724.orig/libmultipath/config.h ++++ multipath-tools-090724/libmultipath/config.h +@@ -72,6 +72,7 @@ struct config { + int pg_timeout; + int max_fds; + int force_reload; ++ int queue_without_daemon; + int daemon; + int flush_on_last_del; + int attribute_flags; +Index: multipath-tools-090724/libmultipath/dict.c +=================================================================== +--- multipath-tools-090724.orig/libmultipath/dict.c ++++ multipath-tools-090724/libmultipath/dict.c +@@ -333,6 +333,28 @@ def_no_path_retry_handler(vector strvec) + } + + static int ++def_queue_without_daemon(vector strvec) ++{ ++ char * buff; ++ ++ buff = set_value(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) || ++ !strncmp(buff, "1", 1)) ++ conf->queue_without_daemon = QUE_NO_DAEMON_ON; ++ else ++ conf->queue_without_daemon = QUE_NO_DAEMON_UNDEF; ++ ++ free(buff); ++ return 0; ++} ++ ++static int + def_pg_timeout_handler(vector strvec) + { + int pg_timeout; +@@ -1846,6 +1868,18 @@ snprint_def_no_path_retry (char * buff, + } + + static int ++snprint_def_queue_without_daemon (char * buff, int len, void * data) ++{ ++ switch (conf->queue_without_daemon) { ++ case QUE_NO_DAEMON_OFF: ++ return snprintf(buff, len, "no"); ++ case QUE_NO_DAEMON_ON: ++ return snprintf(buff, len, "yes"); ++ } ++ return 0; ++} ++ ++static int + snprint_def_pg_timeout (char * buff, int len, void * data) + { + if (conf->pg_timeout == DEFAULT_PGTIMEOUT) +@@ -1931,6 +1965,7 @@ init_keywords(void) + install_keyword("max_fds", &max_fds_handler, &snprint_max_fds); + install_keyword("rr_weight", &def_weight_handler, &snprint_def_rr_weight); + install_keyword("no_path_retry", &def_no_path_retry_handler, &snprint_def_no_path_retry); ++ install_keyword("queue_without_daemon", &def_queue_without_daemon, &snprint_def_queue_without_daemon); + install_keyword("pg_timeout", &def_pg_timeout_handler, &snprint_def_pg_timeout); + install_keyword("flush_on_last_del", &def_flush_on_last_del_handler, &snprint_def_flush_on_last_del); + install_keyword("user_friendly_names", &names_handler, &snprint_def_user_friendly_names); +Index: multipath-tools-090724/libmultipath/structs.h +=================================================================== +--- multipath-tools-090724.orig/libmultipath/structs.h ++++ multipath-tools-090724/libmultipath/structs.h +@@ -63,6 +63,12 @@ enum pgstates { + PGSTATE_ACTIVE + }; + ++enum queue_without_daemon_states { ++ QUE_NO_DAEMON_UNDEF, ++ QUE_NO_DAEMON_OFF, ++ QUE_NO_DAEMON_ON, ++}; ++ + enum pgtimeouts { + PGTIMEOUT_UNDEF, + PGTIMEOUT_NONE +Index: multipath-tools-090724/multipath.conf.annotated +=================================================================== +--- multipath-tools-090724.orig/multipath.conf.annotated ++++ multipath-tools-090724/multipath.conf.annotated +@@ -151,6 +151,15 @@ + # no_path_retry queue + # + # # ++# # name : queue_without_daemon ++# # scope : multipathd ++# # desc : If set to "no", multipathd will disable queueing for all ++# # devices when it is shut down. ++# # values : yes|no ++# # default : yes ++# queue_without_daemon no ++# ++# # + # # name : user_friendly_names + # # scope : multipath + # # desc : If set to "yes", using the bindings file +Index: multipath-tools-090724/multipath.conf.synthetic +=================================================================== +--- multipath-tools-090724.orig/multipath.conf.synthetic ++++ multipath-tools-090724/multipath.conf.synthetic +@@ -16,6 +16,7 @@ + # rr_weight priorities + # failback immediate + # no_path_retry fail ++# queue_without_daemon no + # user_friendly_names no + # mode 644 + # uid 0 +Index: multipath-tools-090724/multipathd/main.c +=================================================================== +--- multipath-tools-090724.orig/multipathd/main.c ++++ multipath-tools-090724/multipathd/main.c +@@ -1334,6 +1334,8 @@ child (void * param) + pthread_t check_thr, uevent_thr, uxlsnr_thr; + pthread_attr_t log_attr, misc_attr; + struct vectors * vecs; ++ struct multipath * mpp; ++ int i; + + mlockall(MCL_CURRENT | MCL_FUTURE); + +@@ -1422,6 +1424,9 @@ child (void * param) + */ + block_signal(SIGHUP, NULL); + lock(vecs->lock); ++ if (conf->queue_without_daemon == QUE_NO_DAEMON_OFF) ++ vector_foreach_slot(vecs->mpvec, mpp, i) ++ dm_queue_if_no_path(mpp->alias, 0); + remove_maps_and_stop_waiters(vecs); + free_pathvec(vecs->pathvec, FREE_PATHS); + |
