Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> Reviewed-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> --- 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 4e6b5b2..754f45e 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -794,45 +794,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; @@ -1131,15 +1092,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; @@ -1180,7 +1140,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; @@ -1526,7 +1486,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; @@ -1537,7 +1497,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; @@ -1689,7 +1649,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 62f50de..6fa99be 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -104,6 +104,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); @@ -113,7 +127,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); @@ -164,7 +177,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