Re: [PATCH] libmultipath: fix skip_kpartx support for removing maps

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Merged,
Thanks.

On Thu, Apr 13, 2017 at 3:05 PM, Martin Wilck <mwilck@xxxxxxxx> wrote:
Commit 79a05a4e inadvertently removed the code necessary
to support multipath maps without partitions, as introduced
in b73a34ea "libmultipath: add skip_kpartx option". Revert
this part of the commit, so that skip_kpartx works again.

Fixes: 79a05a4e libmultipath: move suspend logic to _dm_flush_map
Signed-off-by: Martin Wilck <mwilck@xxxxxxxx>
---
 libmultipath/devmapper.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
index 026418f8..5fb9d9ac 100644
--- a/libmultipath/devmapper.c
+++ b/libmultipath/devmapper.c
@@ -761,6 +761,12 @@ out:
 }

 static int
+has_partmap(const char *name, void *data)
+{
+       return 1;
+}
+
+static int
 partmap_in_use(const char *name, void *data)
 {
        int part_count, *ret_count = (int *)data;
@@ -785,12 +791,18 @@ int _dm_flush_map (const char * mapname, int need_sync, int deferred_remove,
 {
        int r;
        int queue_if_no_path = 0;
+       int udev_flags = 0;
        unsigned long long mapsize;
        char params[PARAMS_SIZE] = {0};

        if (!dm_is_mpath(mapname))
                return 0; /* nothing to do */

+       /* if the device currently has no partitions, do not
+          run kpartx on it if you fail to delete it */
+       if (do_foreach_partmaps(mapname, has_partmap, NULL) == 0)
+               udev_flags |= MPATH_UDEV_NO_KPARTX_FLAG;
+
        /* If you aren't doing a deferred remove, make sure that no
         * devices are in use */
        if (!do_deferred(deferred_remove) && partmap_in_use(mapname, NULL))
@@ -834,7 +846,7 @@ int _dm_flush_map (const char * mapname, int need_sync, int deferred_remove,
                                mapname);
                        if (need_suspend && queue_if_no_path != -1) {
                                dm_simplecmd_noflush(DM_DEVICE_RESUME,
-                                                    mapname, 0);
+                                                    mapname, udev_flags);
                        }
                }
                if (retries)
--
2.12.2


--
dm-devel mailing list
dm-devel@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/dm-devel

[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux