[dm-devel] [PATCH] multipath-tools: check null path before handle path-failed event
Guan Junxiong
guanjunxiong at huawei.com
Mon Dec 4 13:15:50 UTC 2017
In the hot-plug storage OS, if we tear down the target storage,
there is a race between the path removing from the path list and
handling the path-failed udev event. Therefore, we need to check
null path before handle path-failed event.
Signed-off-by: Guan Junxiong <guanjunxiong at huawei.com>
---
multipathd/main.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/multipathd/main.c b/multipathd/main.c
index 31ce923..84bb2c5 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -1073,7 +1073,7 @@ uev_pathfail_check(struct uevent *uev, struct vectors *vecs)
{
char *action = NULL, *devt = NULL;
struct path *pp;
- int r;
+ int r = 1;
action = uevent_get_dm_action(uev);
if (!action)
@@ -1090,15 +1090,17 @@ uev_pathfail_check(struct uevent *uev, struct vectors *vecs)
lock(&vecs->lock);
pthread_testcancel();
pp = find_path_by_devt(vecs->pathvec, devt);
+ if (!pp)
+ goto out_lock;
r = io_err_stat_handle_pathfail(pp);
- lock_cleanup_pop(vecs->lock);
-
if (r)
condlog(3, "io_err_stat: %s: cannot handle pathfail uevent",
pp->dev);
+out_lock:
+ lock_cleanup_pop(vecs->lock);
FREE(devt);
FREE(action);
- return 0;
+ return r;
out:
FREE(action);
return 1;
--
2.6.4.windows.1
More information about the dm-devel
mailing list