[dm-devel] [PATCH 44/54] libmultipath: adopt_paths(): don't bail out on single path failure
mwilck at suse.com
mwilck at suse.com
Thu Jul 9 10:36:13 UTC 2020
From: Martin Wilck <mwilck at suse.com>
If pathinfo fails for one path to be adopted, we currently
fail the entire function. This may cause ev_add_path() for a valid
path to fail because some other path is broken. Fix it by just
skipping paths that don't look healthy.
Signed-off-by: Martin Wilck <mwilck at suse.com>
---
libmultipath/structs_vec.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
index 55fca9b..bc47d1e 100644
--- a/libmultipath/structs_vec.c
+++ b/libmultipath/structs_vec.c
@@ -75,16 +75,20 @@ int adopt_paths(vector pathvec, struct multipath *mpp)
if (!mpp->paths && !(mpp->paths = vector_alloc()))
return 1;
- if (!find_path_by_devt(mpp->paths, pp->dev_t) &&
- store_path(mpp->paths, pp))
- return 1;
conf = get_multipath_config();
pthread_cleanup_push(put_multipath_config, conf);
ret = pathinfo(pp, conf,
DI_PRIO | DI_CHECKER);
pthread_cleanup_pop(1);
- if (ret)
- return 1;
+ if (ret) {
+ condlog(3, "%s: pathinfo failed for %s",
+ __func__, pp->dev);
+ continue;
+ }
+
+ if (!find_path_by_devt(mpp->paths, pp->dev_t) &&
+ store_path(mpp->paths, pp))
+ return 1;
}
}
return 0;
--
2.26.2
More information about the dm-devel
mailing list