You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.7 KiB
79 lines
2.7 KiB
--- |
|
libmultipath/discovery.c | 5 +++++ |
|
libmultipath/structs_vec.c | 2 +- |
|
multipathd/main.c | 26 +++++--------------------- |
|
3 files changed, 11 insertions(+), 22 deletions(-) |
|
|
|
Index: multipath-tools-130222/libmultipath/discovery.c |
|
=================================================================== |
|
--- multipath-tools-130222.orig/libmultipath/discovery.c |
|
+++ multipath-tools-130222/libmultipath/discovery.c |
|
@@ -1188,6 +1188,11 @@ pathinfo (struct path *pp, vector hwtabl |
|
if (pp->state == PATH_UNCHECKED || |
|
pp->state == PATH_WILD) |
|
goto blank; |
|
+ if (pp->state == PATH_UP && !pp->size) { |
|
+ condlog(3, "%s: device size is 0, " |
|
+ "path unuseable", pp->dev); |
|
+ pp->state = PATH_GHOST; |
|
+ } |
|
} else { |
|
condlog(3, "%s: path inaccessible", pp->dev); |
|
pp->chkrstate = pp->state = path_state; |
|
Index: multipath-tools-130222/libmultipath/structs_vec.c |
|
=================================================================== |
|
--- multipath-tools-130222.orig/libmultipath/structs_vec.c |
|
+++ multipath-tools-130222/libmultipath/structs_vec.c |
|
@@ -551,7 +551,7 @@ int update_multipath (struct vectors *ve |
|
|
|
if (pp->state != PATH_DOWN) { |
|
int oldstate = pp->state; |
|
- condlog(2, "%s: mark as failed", pp->dev_t); |
|
+ condlog(2, "%s: mark as failed", pp->dev); |
|
mpp->stat_path_failures++; |
|
pp->state = PATH_DOWN; |
|
if (oldstate == PATH_UP || |
|
Index: multipath-tools-130222/multipathd/main.c |
|
=================================================================== |
|
--- multipath-tools-130222.orig/multipathd/main.c |
|
+++ multipath-tools-130222/multipathd/main.c |
|
@@ -538,15 +538,10 @@ ev_add_path (struct path * pp, struct ve |
|
pp->mpp = mpp; |
|
rescan: |
|
if (mpp) { |
|
- if ((!pp->size) || (mpp->size != pp->size)) { |
|
- if (!pp->size) |
|
- condlog(0, "%s: failed to add new path %s, " |
|
- "device size is 0", |
|
- mpp->alias, pp->dev); |
|
- else |
|
- condlog(0, "%s: failed to add new path %s, " |
|
- "device size mismatch", |
|
- mpp->alias, pp->dev); |
|
+ if (pp->size && mpp->size != pp->size) { |
|
+ condlog(0, "%s: failed to add new path %s, " |
|
+ "device size mismatch", |
|
+ mpp->alias, pp->dev); |
|
int i = find_slot(vecs->pathvec, (void *)pp); |
|
if (i != -1) |
|
vector_del_slot(vecs->pathvec, i); |
|
@@ -563,18 +558,7 @@ rescan: |
|
verify_paths(mpp, vecs, NULL); |
|
mpp->flush_on_last_del = FLUSH_UNDEF; |
|
mpp->action = ACT_RELOAD; |
|
- } |
|
- else { |
|
- if (!pp->size) { |
|
- condlog(0, "%s: failed to create new map," |
|
- " device size is 0 ", pp->dev); |
|
- int i = find_slot(vecs->pathvec, (void *)pp); |
|
- if (i != -1) |
|
- vector_del_slot(vecs->pathvec, i); |
|
- free_path(pp); |
|
- return 1; |
|
- } |
|
- |
|
+ } else { |
|
if (!should_multipath(pp, vecs->pathvec)) { |
|
orphan_path(pp); |
|
return 0;
|
|
|