Signed-off-by: Martin Wilck <[email protected]>
---
 libmultipath/devmapper.c          | 54 ++++---------------------------
 libmultipath/devmapper.h          | 16 +++++++--
 libmultipath/libmultipath.version |  2 --
 multipathd/main.c                 |  4 +--
 4 files changed, 23 insertions(+), 53 deletions(-)

diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c
index 5c9f9d8..bdeba48 100644
--- a/libmultipath/devmapper.c
+++ b/libmultipath/devmapper.c
@@ -783,45 +783,6 @@ int libmp_mapinfo(int flags, mapid_t id, mapinfo_t info)
                               libmp_map_identifier(flags, id, idbuf));
 }
 
-int
-dm_get_info(const char *name, struct dm_info *info)
-{
-       int r = -1;
-       struct dm_task *dmt;
-
-       if (!name || !info)
-               return r;
-
-       if (!(dmt = libmp_dm_task_create(DM_DEVICE_INFO)))
-               return r;
-
-       if (!dm_task_set_name(dmt, name))
-               goto out;
-
-       if (!libmp_dm_task_run(dmt)) {
-               dm_log_error(3, DM_DEVICE_INFO, dmt);
-               goto out;
-       }
-
-       if (!dm_task_get_info(dmt, info))
-               goto out;
-
-       if (!info->exists)
-               goto out;
-
-       r = 0;
-out:
-       dm_task_destroy(dmt);
-       return r;
-}
-
-int dm_map_present(const char * str)
-{
-       struct dm_info info;
-
-       return (dm_get_info(str, &info) == 0);
-}
-
 int dm_get_map(const char *name, unsigned long long *size, char **outparams)
 {
        struct dm_task __attribute__((cleanup(cleanup_dm_task))) *dmt = NULL;
@@ -1120,15 +1081,14 @@ out:
        return r;
 }
 
-static int
-dm_dev_t (const char * mapname, char * dev_t, int len)
+static int dm_dev_t (const char *mapname, char *dev_t, int len)
 {
        struct dm_info info;
 
-       if (dm_get_info(mapname, &info) != 0)
+       if (dm_get_info(mapname, &info) != DMP_OK)
                return 1;
 
-       if (snprintf(dev_t, len, "%i:%i", info.major, info.minor) > len)
+       if (safe_snprintf(dev_t, len, "%i:%i", info.major, info.minor))
                return 1;
 
        return 0;
@@ -1169,7 +1129,7 @@ dm_get_major_minor(const char *name, int *major, int 
*minor)
 {
        struct dm_info info;
 
-       if (dm_get_info(name, &info) != 0)
+       if (dm_get_info(name, &info) != DMP_OK)
                return -1;
 
        *major = info.major;
@@ -1515,7 +1475,7 @@ dm_geteventnr (const char *name)
 {
        struct dm_info info;
 
-       if (dm_get_info(name, &info) != 0)
+       if (dm_get_info(name, &info) != DMP_OK)
                return -1;
 
        return info.event_nr;
@@ -1526,7 +1486,7 @@ dm_is_suspended(const char *name)
 {
        struct dm_info info;
 
-       if (dm_get_info(name, &info) != 0)
+       if (dm_get_info(name, &info) != DMP_OK)
                return -1;
 
        return info.suspended;
@@ -1678,7 +1638,7 @@ dm_get_deferred_remove (const char * mapname)
 {
        struct dm_info info;
 
-       if (dm_get_info(mapname, &info) != 0)
+       if (dm_get_info(mapname, &info) != DMP_OK)
                return -1;
 
        return info.deferred_remove;
diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h
index 269389b..0cdd757 100644
--- a/libmultipath/devmapper.h
+++ b/libmultipath/devmapper.h
@@ -99,6 +99,20 @@ typedef struct libmp_map_info {
  */
 int libmp_mapinfo(int flags, mapid_t id, mapinfo_t info);
 
+static inline int dm_get_info(const char *mapname, struct dm_info *info)
+{
+       return libmp_mapinfo(DM_MAP_BY_NAME,
+                            (mapid_t) { .str = mapname },
+                            (mapinfo_t) { .dmi = info });
+}
+
+static inline int dm_map_present(const char *mapname)
+{
+       return libmp_mapinfo(DM_MAP_BY_NAME,
+                            (mapid_t) { .str = mapname },
+                            (mapinfo_t) { .name = NULL }) == DMP_OK;
+}
+
 int dm_prereq(unsigned int *v);
 void skip_libmp_dm_init(void);
 void libmp_dm_exit(void);
@@ -108,7 +122,6 @@ int dm_simplecmd_flush (int task, const char *name, 
uint16_t udev_flags);
 int dm_simplecmd_noflush (int task, const char *name, uint16_t udev_flags);
 int dm_addmap_create (struct multipath *mpp, char *params);
 int dm_addmap_reload (struct multipath *mpp, char *params, int flush);
-int dm_map_present (const char *name);
 int dm_map_present_by_uuid(const char *uuid);
 int dm_get_map(const char *name, unsigned long long *size, char **outparams);
 int dm_get_status(const char *name, char **outstatus);
@@ -159,7 +172,6 @@ int dm_get_major_minor (const char *name, int *major, int 
*minor);
 char * dm_mapname(int major, int minor);
 int dm_get_uuid(const char *name, char *uuid, int uuid_len);
 bool has_dm_info(const struct multipath *mpp);
-int dm_get_info (const char * mapname, struct dm_info *dmi);
 int dm_rename (const char * old, char * new, char * delim, int skip_kpartx);
 int dm_reassign(const char * mapname);
 int dm_reassign_table(const char *name, char *old, char *new);
diff --git a/libmultipath/libmultipath.version 
b/libmultipath/libmultipath.version
index 48c2b67..7a50349 100644
--- a/libmultipath/libmultipath.version
+++ b/libmultipath/libmultipath.version
@@ -78,14 +78,12 @@ global:
        dm_flush_map_nopaths;
        dm_flush_maps;
        dm_geteventnr;
-       dm_get_info;
        dm_get_major_minor;
        dm_get_maps;
        dm_get_multipath;
        dm_get_uuid;
        dm_is_mpath;
        dm_mapname;
-       dm_map_present;
        dm_prereq;
        dm_queue_if_no_path;
        dm_reassign;
diff --git a/multipathd/main.c b/multipathd/main.c
index 132bb2e..394ca7d 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -502,7 +502,7 @@ remove_maps_and_stop_waiters(struct vectors *vecs)
 
 int refresh_multipath(struct vectors *vecs, struct multipath *mpp)
 {
-       if (dm_get_info(mpp->alias, &mpp->dmi)) {
+       if (dm_get_info(mpp->alias, &mpp->dmi) != DMP_OK) {
                /* Error accessing table */
                condlog(2, "%s: cannot access table", mpp->alias);
                goto out;
@@ -722,7 +722,7 @@ add_map_without_path (struct vectors *vecs, const char 
*alias)
 
        mpp->alias = strdup(alias);
 
-       if (dm_get_info(mpp->alias, &mpp->dmi)) {
+       if (dm_get_info(mpp->alias, &mpp->dmi) != DMP_OK) {
                condlog(3, "%s: cannot access table", mpp->alias);
                goto out;
        }
-- 
2.45.2


Reply via email to