@@ -102,14 +102,14 @@ void orphan_path(struct path *pp, const char *reason)
pp->fd = -1;
}
-void orphan_paths(vector pathvec, struct multipath *mpp)
+void orphan_paths(vector pathvec, struct multipath *mpp, const char *reason)
{
int i;
struct path * pp;
vector_foreach_slot (pathvec, pp, i) {
if (pp->mpp == mpp) {
- orphan_path(pp, "map flushed");
+ orphan_path(pp, reason);
}
}
}
@@ -122,7 +122,7 @@ remove_map(struct multipath * mpp, struct vectors * vecs, int purge_vec)
/*
* clear references to this map
*/
- orphan_paths(vecs->pathvec, mpp);
+ orphan_paths(vecs->pathvec, mpp, "map removed internally");
if (purge_vec &&
(i = find_slot(vecs->mpvec, (void *)mpp)) != -1)
@@ -14,7 +14,8 @@ struct vectors {
void enter_recovery_mode(struct multipath *mpp);
int adopt_paths (vector pathvec, struct multipath * mpp);
-void orphan_paths (vector pathvec, struct multipath * mpp);
+void orphan_paths(vector pathvec, struct multipath *mpp,
+ const char *reason);
void orphan_path (struct path * pp, const char *reason);
int verify_paths(struct multipath * mpp, struct vectors * vecs);
@@ -654,7 +654,7 @@ flush_map(struct multipath * mpp, struct vectors * vecs, int nopaths)
condlog(2, "%s: map flushed", mpp->alias);
}
- orphan_paths(vecs->pathvec, mpp);
+ orphan_paths(vecs->pathvec, mpp, "map flushed");
remove_map_and_stop_waiter(mpp, vecs);
return 0;