Merged.
Thanks.
On Mon, Dec 4, 2017 at 2:15 PM, Guan Junxiong <guanjunxiong@xxxxxxxxxx> wrote:
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@xxxxxxxxxx>
---
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 = "" *devt = NULL;
struct path *pp;
- int r;
+ int r = 1;
action = ""> 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
-- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel