Also use bitwise flags for dm_simplecmd() and its relatives. Again, this makes the code more expressive and more readable, while simplifying the function calls. Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> --- libmultipath/devmapper.c | 26 +++++++++++++------------- libmultipath/devmapper.h | 5 +++-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index a6a9c2b..08bb3c5 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -386,10 +386,9 @@ libmp_dm_task_create(int task) } static int -dm_simplecmd (int task, const char *name, int no_flush, int need_sync, - uint16_t udev_flags, int deferred_remove __DR_UNUSED__) { +dm_simplecmd (int task, const char *name, int flags, uint16_t udev_flags) { int r = 0; - int udev_wait_flag = ((need_sync || udev_flags) && + int udev_wait_flag = (((flags & DMFL_NEED_SYNC) || udev_flags) && (task == DM_DEVICE_RESUME || task == DM_DEVICE_REMOVE)); uint32_t cookie = 0; @@ -404,11 +403,11 @@ dm_simplecmd (int task, const char *name, int no_flush, int need_sync, dm_task_no_open_count(dmt); dm_task_skip_lockfs(dmt); /* for DM_DEVICE_RESUME */ #ifdef LIBDM_API_FLUSH - if (no_flush) + if (flags & DMFL_NO_FLUSH) dm_task_no_flush(dmt); /* for DM_DEVICE_SUSPEND/RESUME */ #endif #ifdef LIBDM_API_DEFERRED - if (deferred_remove) + if (flags & DMFL_DEFERRED) dm_task_deferred_remove(dmt); #endif if (udev_wait_flag && @@ -429,18 +428,17 @@ out: int dm_simplecmd_flush (int task, const char *name, uint16_t udev_flags) { - return dm_simplecmd(task, name, 0, 1, udev_flags, 0); + return dm_simplecmd(task, name, DMFL_NEED_SYNC, udev_flags); } int dm_simplecmd_noflush (int task, const char *name, uint16_t udev_flags) { - return dm_simplecmd(task, name, 1, 1, udev_flags, 0); + return dm_simplecmd(task, name, DMFL_NO_FLUSH|DMFL_NEED_SYNC, udev_flags); } static int dm_device_remove (const char *name, int flags) { - return dm_simplecmd(DM_DEVICE_REMOVE, name, 0, flags & DMFL_NEED_SYNC, 0, - flags & DMFL_DEFERRED); + return dm_simplecmd(DM_DEVICE_REMOVE, name, flags, 0); } static int @@ -594,8 +592,9 @@ int dm_addmap_reload(struct multipath *mpp, char *params, int flush) params, ADDMAP_RO, 0); } if (r) - r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, !flush, - 1, udev_flags, 0); + r = dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, + DMFL_NEED_SYNC | (flush ? 0 : DMFL_NO_FLUSH), + udev_flags); if (r) return r; @@ -603,8 +602,9 @@ int dm_addmap_reload(struct multipath *mpp, char *params, int flush) * drop the new table, so doing a second resume will try using * the original table */ if (dm_is_suspended(mpp->alias)) - dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, !flush, 1, - udev_flags, 0); + dm_simplecmd(DM_DEVICE_RESUME, mpp->alias, + DMFL_NEED_SYNC | (flush ? 0 : DMFL_NO_FLUSH), + udev_flags); return 0; } diff --git a/libmultipath/devmapper.h b/libmultipath/devmapper.h index bb4a55a..a242381 100644 --- a/libmultipath/devmapper.h +++ b/libmultipath/devmapper.h @@ -38,8 +38,8 @@ void skip_libmp_dm_init(void); void libmp_dm_exit(void); void libmp_udev_set_sync_support(int on); struct dm_task *libmp_dm_task_create(int task); -int dm_simplecmd_flush (int, const char *, uint16_t); -int dm_simplecmd_noflush (int, const char *, uint16_t); +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 *); @@ -64,6 +64,7 @@ enum { DMFL_NEED_SYNC = 1 << 0, DMFL_DEFERRED = 1 << 1, DMFL_SUSPEND = 1 << 2, + DMFL_NO_FLUSH = 1 << 3, }; int _dm_flush_map (const char *mapname, int flags, int retries); -- 2.44.0