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 /0021-RH-trigger-change-uevent-on-new-device-creation.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 '0021-RH-trigger-change-uevent-on-new-device-creation.patch')
-rw-r--r-- | 0021-RH-trigger-change-uevent-on-new-device-creation.patch | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/0021-RH-trigger-change-uevent-on-new-device-creation.patch b/0021-RH-trigger-change-uevent-on-new-device-creation.patch new file mode 100644 index 0000000..54c6d57 --- /dev/null +++ b/0021-RH-trigger-change-uevent-on-new-device-creation.patch @@ -0,0 +1,156 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Benjamin Marzinski <bmarzins@redhat.com> +Date: Mon, 24 Apr 2017 09:39:57 -0500 +Subject: [PATCH] RH: trigger change uevent on new device creation + +When multipath first sees a path device with user_friendly names +enabled, it can't know if the device should be multipathed. This means +that it will not claim the device in udev. If the device is eventually +multipathed, multipath should trigger a change uevent to update the udev +database to claim the device. + +This also reverts commit 64e27ec066a001012f44550f095c93443e91d845 and +commit ffbb886a8a16cb063d669cd76a1e656fd3ec8c4b. + +Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com> +--- + libmultipath/configure.c | 26 ++++++++++++++++++++++++-- + libmultipath/configure.h | 1 + + libmultipath/wwids.c | 4 ++-- + multipath/main.c | 12 +----------- + multipathd/main.c | 7 ++----- + 5 files changed, 30 insertions(+), 20 deletions(-) + +diff --git a/libmultipath/configure.c b/libmultipath/configure.c +index 22c11a2..7011ef7 100644 +--- a/libmultipath/configure.c ++++ b/libmultipath/configure.c +@@ -427,6 +427,28 @@ trigger_udev_change(const struct multipath *mpp) + udev_device_unref(udd); + } + ++void ++trigger_paths_udev_change(const struct multipath *mpp) ++{ ++ struct pathgroup * pgp; ++ struct path * pp; ++ int i, j; ++ ++ if (!mpp || !mpp->pg) ++ return; ++ ++ vector_foreach_slot (mpp->pg, pgp, i) { ++ if (!pgp->paths) ++ continue; ++ vector_foreach_slot(pgp->paths, pp, j) { ++ if (!pp->udev) ++ continue; ++ sysfs_attr_set_value(pp->udev, "uevent", "change", ++ strlen("change")); ++ } ++ } ++} ++ + static int + is_mpp_known_to_udev(const struct multipath *mpp) + { +@@ -821,8 +843,8 @@ int domap(struct multipath *mpp, char *params, int is_daemon) + * succeeded + */ + mpp->force_udev_reload = 0; +- if (mpp->action == ACT_CREATE) +- remember_wwid(mpp->wwid); ++ if (mpp->action == ACT_CREATE && remember_wwid(mpp->wwid) == 1) ++ trigger_paths_udev_change(mpp); + if (!is_daemon) { + /* multipath client mode */ + dm_switchgroup(mpp->alias, mpp->bestpg); +diff --git a/libmultipath/configure.h b/libmultipath/configure.h +index 0ffc28e..09603ba 100644 +--- a/libmultipath/configure.h ++++ b/libmultipath/configure.h +@@ -37,3 +37,4 @@ int get_refwwid (enum mpath_cmds cmd, char * dev, enum devtypes dev_type, + int reload_map(struct vectors *vecs, struct multipath *mpp, int refresh, int is_daemon); + int sysfs_get_host_adapter_name(struct path *pp, char *adapter_name); + struct udev_device *get_udev_device(const char *dev, enum devtypes dev_type); ++void trigger_paths_udev_change(const struct multipath *mpp); +diff --git a/libmultipath/wwids.c b/libmultipath/wwids.c +index 88bb72b..249c6c1 100644 +--- a/libmultipath/wwids.c ++++ b/libmultipath/wwids.c +@@ -319,7 +319,7 @@ remember_wwid(char *wwid) + condlog(3, "wrote wwid %s to wwids file", wwid); + else + condlog(4, "wwid %s already in wwids file", wwid); +- return 0; ++ return ret; + } + + int remember_cmdline_wwid(void) +@@ -353,7 +353,7 @@ int remember_cmdline_wwid(void) + next++; + } + if (strlen(ptr)) { +- if (remember_wwid(ptr) != 0) ++ if (remember_wwid(ptr) < 0) + ret = -1; + } + else { +diff --git a/multipath/main.c b/multipath/main.c +index ff570ac..ae6b06e 100644 +--- a/multipath/main.c ++++ b/multipath/main.c +@@ -416,7 +416,7 @@ configure (struct config *conf, enum mpath_cmds cmd, + } + if (cmd == CMD_ADD_WWID) { + r = remember_wwid(refwwid); +- if (r == 0) ++ if (r >= 0) + printf("wwid '%s' added\n", refwwid); + else + printf("failed adding '%s' to wwids file\n", +@@ -712,16 +712,6 @@ main (int argc, char *argv[]) + } + } + +- /* +- * FIXME: new device detection with find_multipaths currently +- * doesn't work reliably. +- */ +- if (cmd == CMD_VALID_PATH && +- conf->find_multipaths && conf->ignore_wwids) { +- condlog(2, "ignoring -i flag because find_multipath is set in multipath.conf"); +- conf->ignore_wwids = 0; +- } +- + if (getuid() != 0) { + fprintf(stderr, "need to be root\n"); + exit(1); +diff --git a/multipathd/main.c b/multipathd/main.c +index 596654c..c860e88 100644 +--- a/multipathd/main.c ++++ b/multipathd/main.c +@@ -2172,7 +2172,8 @@ configure (struct vectors * vecs) + + sync_maps_state(mpvec); + vector_foreach_slot(mpvec, mpp, i){ +- remember_wwid(mpp->wwid); ++ if (remember_wwid(mpp->wwid) == 1) ++ trigger_paths_udev_change(mpp); + update_map_pr(mpp); + } + +@@ -2251,10 +2252,6 @@ reconfigure (struct vectors * vecs) + conf->verbosity = verbosity; + if (bindings_read_only) + conf->bindings_read_only = bindings_read_only; +- if (conf->find_multipaths) { +- condlog(2, "find_multipaths is set: -n is implied"); +- ignore_new_devs = 1; +- } + if (ignore_new_devs) + conf->ignore_new_devs = ignore_new_devs; + uxsock_timeout = conf->uxsock_timeout; +-- +2.7.4 + |