cli_del_map() does a lot of unnecessary work to match the arguments of
ev_remove_map(), of which it is the only caller.  Then ev_remove_map()
does more unnecessary work to verify the arguments passed in. remove
ev_remove_map() and make cli_del_map() get the mpp like the rest of
the client handlers do.

Reviewed-by: Martin Wilck <mwi...@suse.com>
Signed-off-by: Benjamin Marzinski <bmarz...@redhat.com>
---
 multipathd/cli_handlers.c | 23 ++++++-----------------
 multipathd/main.c         | 21 ---------------------
 multipathd/main.h         |  1 -
 3 files changed, 6 insertions(+), 39 deletions(-)

diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
index dc547be8..9a0cd065 100644
--- a/multipathd/cli_handlers.c
+++ b/multipathd/cli_handlers.c
@@ -742,28 +742,17 @@ cli_del_map (void * v, struct strbuf *reply, void * data)
 {
        struct vectors * vecs = (struct vectors *)data;
        char * param = get_keyparam(v, KEY_MAP);
-       int major, minor;
-       char *alias;
-       int rc;
+       struct multipath *mpp;
 
        param = convert_dev(param, 0);
        condlog(2, "%s: remove map (operator)", param);
-       if (dm_get_major_minor(param, &major, &minor) < 0) {
-               condlog(2, "%s: not a device mapper table", param);
-               return 1;
-       }
-       alias = dm_mapname(major, minor);
-       if (!alias) {
-               condlog(2, "%s: mapname not found for %d:%d",
-                       param, major, minor);
+
+       mpp = find_mp_by_str(vecs->mpvec, param);
+
+       if (!mpp)
                return 1;
-       }
-       rc = ev_remove_map(param, alias, minor, vecs);
-       if (rc == 2)
-               append_strbuf_str(reply, "delayed\n");
 
-       free(alias);
-       return rc;
+       return flush_map(mpp, vecs);
 }
 
 static int
diff --git a/multipathd/main.c b/multipathd/main.c
index 6b66a5ee..17468985 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -931,27 +931,6 @@ out:
        return 0;
 }
 
-/* Called from CLI handler */
-int
-ev_remove_map (char * devname, char * alias, int minor, struct vectors * vecs)
-{
-       struct multipath * mpp;
-
-       mpp = find_mp_by_minor(vecs->mpvec, minor);
-
-       if (!mpp) {
-               condlog(2, "%s: devmap not registered, can't remove",
-                       devname);
-               return 1;
-       }
-       if (strcmp(mpp->alias, alias)) {
-               condlog(2, "%s: minor number mismatch (map %d, event %d)",
-                       mpp->alias, mpp->dmi.minor, minor);
-               return 1;
-       }
-       return flush_map(mpp, vecs);
-}
-
 static void
 rescan_path(struct udev_device *ud)
 {
diff --git a/multipathd/main.h b/multipathd/main.h
index e050b5c5..4fcd6402 100644
--- a/multipathd/main.h
+++ b/multipathd/main.h
@@ -39,7 +39,6 @@ int need_to_delay_reconfig (struct vectors *);
 int ev_add_path (struct path *, struct vectors *, int);
 int ev_remove_path (struct path *, struct vectors *, int);
 int ev_add_map (char *, const char *, struct vectors *);
-int ev_remove_map (char *, char *, int, struct vectors *);
 int flush_map(struct multipath *, struct vectors *);
 
 void handle_signals(bool);
-- 
2.43.0


Reply via email to