On 07/01/2016 02:46 PM, Benjamin Marzinski wrote:
multipathd has code to finish gathering the information of paths that were not active at the time they were discovered. When the checker loop goes to check a path, and notices that it wasn't fully initialized, it is supposed to complete the initialization. However the code is broken. This means that if you reconfigure multipathd while paths are down, they will no longer be usable. This patch makes sure that check_path will actually rerun pathinfo to finish setting up the path, so that after the path comes back up, it will be usable again. [ ... ] @@ -1779,7 +1785,13 @@ checkerloop (void *ap) lock(vecs->lock); pthread_testcancel(); vector_foreach_slot (vecs->pathvec, pp, i) { - num_paths += check_path(vecs, pp, ticks); + rc = check_path(vecs, pp, ticks); + if (rc < 0) { + vector_del_slot(vecs->pathvec, i); + free_path(pp); + i--; + } else; + num_paths += rc; } lock_cleanup_pop(vecs->lock); }
Hi Ben, Was the semicolon after the "else" intended or was it a typo? Thanks, Bart. -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel