[dm-devel] [PATCH] multipath: don't remove dm device on remove uevent
Christophe Varoqui
christophe.varoqui at gmail.com
Sat Jan 14 11:21:41 UTC 2012
On jeu., 2012-01-12 at 22:17 -0600, Benjamin Marzinski wrote:
> multipathd gets remove uevents for dm devices when the devices have
> been removed. It shouldn't try to actually remove the device itself,
> since that has already been done, or it wouldn't have gotten the uevent.
>
Applied.
> Signed-off-by: Benjamin Marzinski <bmarzins at redhat.com>
> ---
> multipathd/main.c | 22 +++++++++++++++++++---
> 1 file changed, 19 insertions(+), 3 deletions(-)
>
> Index: multipath-tools-111219/multipathd/main.c
> ===================================================================
> --- multipath-tools-111219.orig/multipathd/main.c
> +++ multipath-tools-111219/multipathd/main.c
> @@ -310,7 +310,8 @@ static int
> uev_remove_map (struct uevent * uev, struct vectors * vecs)
> {
> char *alias;
> - int minor, rc;
> + int minor;
> + struct multipath *mpp;
>
> condlog(2, "%s: remove map (uevent)", uev->kernel);
> alias = uevent_get_dm_name(uev);
> @@ -319,9 +320,24 @@ uev_remove_map (struct uevent * uev, str
> return 0;
> }
> minor = uevent_get_minor(uev);
> - rc = ev_remove_map(uev->kernel, alias, minor, vecs);
> + mpp = find_mp_by_minor(vecs->mpvec, minor);
> +
> + if (!mpp) {
> + condlog(2, "%s: devmap not registered, can't remove",
> + uev->kernel);
> + goto out;
> + }
> + if (strcmp(mpp->alias, alias)) {
> + condlog(2, "%s: minor number mismatch (map %d, event %d)",
> + mpp->alias, mpp->dmi->minor, minor);
> + goto out;
> + }
> +
> + orphan_paths(vecs->pathvec, mpp);
> + remove_map_and_stop_waiter(mpp, vecs, 1);
> +out:
> FREE(alias);
> - return rc;
> + return 0;
> }
>
> int
>
> --
> dm-devel mailing list
> dm-devel at redhat.com
> https://www.redhat.com/mailman/listinfo/dm-devel
More information about the dm-devel
mailing list