commit c6a18f4541d0a161e2f5fed8c67d9732bf512b37 made uev_update_path call uev_add_path while holding the vecs lock, which is deadlocks, since uev_add_path grabs the vecs lock itself. Cc: Alban Browaeys <prahal@xxxxxxxxx> Signed-off-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> --- multipathd/main.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/multipathd/main.c b/multipathd/main.c index f671d58..f4ff13e 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -974,6 +974,7 @@ uev_update_path (struct uevent *uev, struct vectors * vecs) struct path * pp; struct config *conf; int disable_changed_wwids; + int needs_reinit = 0; conf = get_multipath_config(); disable_changed_wwids = conf->disable_changed_wwids; @@ -1009,7 +1010,7 @@ uev_update_path (struct uevent *uev, struct vectors * vecs) } if (pp->initialized == INIT_REQUESTED_UDEV) - retval = uev_add_path(uev, vecs, 1); + needs_reinit = 1; else if (mpp && ro >= 0) { condlog(2, "%s: update path write_protect to '%d' (uevent)", uev->kernel, ro); @@ -1041,7 +1042,8 @@ out: condlog(0, "%s: spurious uevent, path not found", uev->kernel); } - + if (needs_reinit) + retval = uev_add_path(uev, vecs, 1); return retval; } -- 1.8.3.1 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel