if (update_mpp_paths(mpp, vecs->pathvec)) {
condlog(0, "%s: failed to update paths",
mpp->alias);
- goto out;
+ goto fail;
}
if ((i = find_slot(mpp->paths, (void *)pp)) != -1)
vector_del_slot(mpp->paths, i);
condlog(2, "%s: removed map after"
" removing all paths",
alias);
- free_path(pp);
- return 0;
+ retval = 0;
+ goto out;
}
/*
* Not an error, continue
condlog(0, "%s: failed to setup map for"
" removal of path %s", mpp->alias,
devname);
- goto out;
+ goto fail;
}
/*
* reload the map
* update our state from kernel
*/
if (setup_multipath(vecs, mpp)) {
- goto out;
+ goto fail;
}
sync_map_state(mpp);
}
}
+out:
if ((i = find_slot(vecs->pathvec, (void *)pp)) != -1)
vector_del_slot(vecs->pathvec, i);
return retval;
-out:
+fail:
remove_map_and_stop_waiter(mpp, vecs, 1);
return 1;
}