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 <[email protected]>
---
 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


Reply via email to