diff options
author | Benjamin Marzinski <bmarzins@redhat.com> | 2018-02-15 13:17:53 -0600 |
---|---|---|
committer | Benjamin Marzinski <bmarzins@redhat.com> | 2018-02-15 13:17:53 -0600 |
commit | 5bea53fe7ed7dd7afa8e76f7f84f76fdb89d59d9 (patch) | |
tree | 9a89c87df6336311ebe30ae2c51af13f92d6a3d6 /0020-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch | |
parent | 7e8f34e1813a9ae89b5acc012fa7d45c3d7bbdb8 (diff) | |
download | device-mapper-multipath-5bea53fe7ed7dd7afa8e76f7f84f76fdb89d59d9.tar.gz device-mapper-multipath-5bea53fe7ed7dd7afa8e76f7f84f76fdb89d59d9.tar.xz device-mapper-multipath-5bea53fe7ed7dd7afa8e76f7f84f76fdb89d59d9.zip |
device-mapper-multipath-0.7.4-1.git07e7bd5master
Update Source to the latest upstream commit
* Previous patches 0001-0006 are included in this commit
* Previous patches 0007-0014 are now patches 0015-0022
Add 0001-libmultipath-fix-tur-checker-locking.patch
* Fixed spinlock bug. posted upstream
Add 0002-multipath-fix-DEF_TIMEOUT-use.patch
* Add missing sec to ms conversion. posted upstream
Add 0003-multipathd-remove-coalesce_paths-from-ev_add_map.patch
* Remove unused code. posted upstream
Add 0004-multipathd-remove-unused-configure-parameter.patch
* Remove unused code. posted upstream
Add 0005-Fix-set_no_path_retry-regression.patch
* Fix issue with queueing and path addition. posted upstream
Add 0006-multipathd-change-spurious-uevent-msg-priority.patch
* Change message priority to Notice. posted upstream
Add 0007-multipath-print-sysfs-state-in-fast-list-mode.patch
* Show sysfs state correctly in fast list mode (-l). posted upstream
Add 0008-libmultipath-move-remove_map-waiter-code-to-multipat.patch
* Move code around. posted upstream
Add 0009-move-waiter-code-from-libmultipath-to-multipathd.patch
* Move code around. posted upstream
Add 0010-call-start_waiter_thread-before-setup_multipath.patch
* Fix race on multipath device creations. posted upstream
Add 0011-libmultipath-add-helper-functions.patch
* posted upstream
Add 0012-multipathd-RFC-add-new-polling-dmevents-waiter-threa.patch
* Add alternate method of getting dmevents, that doesn't
require a thread per device. posted upstream
Add 0013-libmultipath-condlog-log-to-stderr.patch
* change condlog to log to stderr instead of stdout. posted upstream
Add 0014-multipathd-fix-compiler-warning-for-uev_pathfail_che.patch
* fix indentation issue. posted upstream
Diffstat (limited to '0020-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch')
-rw-r--r-- | 0020-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/0020-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch b/0020-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch new file mode 100644 index 0000000..d9dc69a --- /dev/null +++ b/0020-RH-add-wwids-from-kernel-cmdline-mpath.wwids-with-A.patch @@ -0,0 +1,166 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski <bmarzins@redhat.com> +Date: Fri, 17 Oct 2014 11:20:34 -0500 +Subject: [PATCH] RH: add wwids from kernel cmdline mpath.wwids with -A + +This patch adds another option to multipath, "-A", which reads +/proc/cmdline for mpath.wwid=<WWID> options, and adds any wwids it finds +to /etc/multipath/wwids. While this isn't usually important during +normal operation, since these wwids should already be added, it can be +helpful during installation, to make sure that multipath can claim +devices as its own, before LVM or something else makes use of them. The +patch also execs "/sbin/multipath -A" before running multipathd in +multipathd.service + +Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> +--- + libmultipath/wwids.c | 44 +++++++++++++++++++++++++++++++++++++++++++ + libmultipath/wwids.h | 1 + + multipath/main.c | 10 ++++++++-- + multipath/multipath.8 | 5 ++++- + multipathd/multipathd.service | 1 + + 5 files changed, 58 insertions(+), 3 deletions(-) + +diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c +index bc70a27..88bb72b 100644 +--- a/libmultipath/wwids.c ++++ b/libmultipath/wwids.c +@@ -321,3 +321,47 @@ remember_wwid(char *wwid) + condlog(4, "wwid %s already in wwids file", wwid); + return 0; + } ++ ++int remember_cmdline_wwid(void) ++{ ++ FILE *f = NULL; ++ char buf[LINE_MAX], *next, *ptr; ++ int ret = 0; ++ ++ f = fopen("/proc/cmdline", "re"); ++ if (!f) { ++ condlog(0, "can't open /proc/cmdline : %s", strerror(errno)); ++ return -1; ++ } ++ ++ if (!fgets(buf, sizeof(buf), f)) { ++ if (ferror(f)) ++ condlog(0, "read of /proc/cmdline failed : %s", ++ strerror(errno)); ++ else ++ condlog(0, "couldn't read /proc/cmdline"); ++ fclose(f); ++ return -1; ++ } ++ fclose(f); ++ next = buf; ++ while((ptr = strstr(next, "mpath.wwid="))) { ++ ptr += 11; ++ next = strpbrk(ptr, " \t\n"); ++ if (next) { ++ *next = '\0'; ++ next++; ++ } ++ if (strlen(ptr)) { ++ if (remember_wwid(ptr) != 0) ++ ret = -1; ++ } ++ else { ++ condlog(0, "empty mpath.wwid kernel command line option"); ++ ret = -1; ++ } ++ if (!next) ++ break; ++ } ++ return ret; ++} +diff --git a/libmultipath/wwids.h b/libmultipath/wwids.h +index 9527012..b665232 100644 +--- a/libmultipath/wwids.h ++++ b/libmultipath/wwids.h +@@ -17,5 +17,6 @@ int remember_wwid(char *wwid); + int check_wwids_file(char *wwid, int write_wwid); + int remove_wwid(char *wwid); + int replace_wwids(vector mp); ++int remember_cmdline_wwid(void); + + #endif /* _WWIDS_H */ +diff --git a/multipath/main.c b/multipath/main.c +index d2415a9..ff570ac 100644 +--- a/multipath/main.c ++++ b/multipath/main.c +@@ -102,7 +102,7 @@ usage (char * progname) + { + fprintf (stderr, VERSION_STRING); + fprintf (stderr, "Usage:\n"); +- fprintf (stderr, " %s [-a|-c|-w|-W] [-d] [-r] [-i] [-v lvl] [-p pol] [-b fil] [-q] [dev]\n", progname); ++ fprintf (stderr, " %s [-a|-A|-c|-w|-W] [-d] [-r] [-i] [-v lvl] [-p pol] [-b fil] [-q] [dev]\n", progname); + fprintf (stderr, " %s -l|-ll|-f [-v lvl] [-b fil] [-R num] [dev]\n", progname); + fprintf (stderr, " %s -F [-v lvl] [-R num]\n", progname); + fprintf (stderr, " %s -t\n", progname); +@@ -116,6 +116,8 @@ usage (char * progname) + " -f flush a multipath device map\n" + " -F flush all multipath device maps\n" + " -a add a device wwid to the wwids file\n" ++ " -A add devices from kernel command line mpath.wwids\n" ++ " parameters to wwids file\n" + " -c check if a device should be a path in a multipath device\n" + " -C check if a multipath device has usable paths\n" + " -q allow queue_if_no_path when multipathd is not running\n" +@@ -602,7 +604,7 @@ main (int argc, char *argv[]) + exit(1); + multipath_conf = conf; + conf->retrigger_tries = 0; +- while ((arg = getopt(argc, argv, ":adcChl::FfM:v:p:b:BrR:itquUwW")) != EOF ) { ++ while ((arg = getopt(argc, argv, ":aAdcChl::FfM:v:p:b:BrR:itquUwW")) != EOF ) { + switch(arg) { + case 1: printf("optarg : %s\n",optarg); + break; +@@ -669,6 +671,10 @@ main (int argc, char *argv[]) + case 't': + r = dump_config(conf); + goto out_free_config; ++ case 'A': ++ if (remember_cmdline_wwid() != 0) ++ exit(1); ++ exit(0); + case 'h': + usage(argv[0]); + exit(0); +diff --git a/multipath/multipath.8 b/multipath/multipath.8 +index 56f8703..9fc2317 100644 +--- a/multipath/multipath.8 ++++ b/multipath/multipath.8 +@@ -25,7 +25,7 @@ multipath \- Device mapper target autoconfig. + .RB [\| \-b\ \c + .IR bindings_file \|] + .RB [\| \-d \|] +-.RB [\| \-h | \-l | \-ll | \-f | \-t | \-F | \-B | \-c | \-C | \-q | \-r | \-i | \-a | \-u | \-U | \-w | \-W \|] ++.RB [\| \-h | \-l | \-ll | \-f | \-t | \-F | \-B | \-c | \-C | \-q | \-r | \-i | \-a | \-A | \-u | \-U | \-w | \-W \|] + .RB [\| \-p\ \c + .IR failover | multibus | group_by_serial | group_by_prio | group_by_node_name \|] + .RB [\| \-R\ \c +@@ -128,6 +128,9 @@ Add the WWID for the specified device to the WWIDs file. + Check if the device specified in the program environment should be + a path in a multipath device. + . ++.B \-A ++add wwids from any kernel command line mpath.wwid parameters to the wwids file ++. + .TP + .B \-U + Check if the device specified in the program environment is a multipath device +diff --git a/multipathd/multipathd.service b/multipathd/multipathd.service +index fafd088..a623a3f 100644 +--- a/multipathd/multipathd.service ++++ b/multipathd/multipathd.service +@@ -15,6 +15,7 @@ Type=notify + NotifyAccess=main + LimitCORE=infinity + ExecStartPre=-/sbin/modprobe -a scsi_dh_alua scsi_dh_emc scsi_dh_rdac dm-multipath ++ExecStartPre=-/sbin/multipath -A + ExecStart=/sbin/multipathd -d -s + ExecReload=/sbin/multipathd reconfigure + +-- +2.7.4 + |