<div dir="ltr"><div><div>Applied.<br></div>Nice readability improvement indeed.<br></div>Thanks.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 30, 2014 at 7:13 AM, Benjamin Marzinski <span dir="ltr"><<a href="mailto:bmarzins@redhat.com" target="_blank">bmarzins@redhat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">conf->dry_run is getting used for many different things besides running<br>
multipath in dry_run mode, and the name and values were getting<br>
increasingly confusing.  This patch switches the variable from<br>
conf->dry_run to conf->cmd, and folds in conf->list.  It also changes<br>
the value to a enum.<br>
<br>
Signed-off-by: Benjamin Marzinski <<a href="mailto:bmarzins@redhat.com">bmarzins@redhat.com</a>><br>
---<br>
 libmultipath/config.h    | 13 +++++++++++--<br>
 libmultipath/configure.c |  2 +-<br>
 libmultipath/discovery.c |  6 ++++--<br>
 multipath/main.c         | 49 ++++++++++++++++++++++++------------------------<br>
 4 files changed, 41 insertions(+), 29 deletions(-)<br>
<br>
diff --git a/libmultipath/config.h b/libmultipath/config.h<br>
index 445525b..eb23820 100644<br>
--- a/libmultipath/config.h<br>
+++ b/libmultipath/config.h<br>
@@ -22,6 +22,16 @@ enum devtypes {<br>
        DEV_DEVMAP<br>
 };<br>
<br>
+enum mpath_cmds {<br>
+       CMD_CREATE,<br>
+       CMD_DRY_RUN,<br>
+       CMD_LIST_SHORT,<br>
+       CMD_LIST_LONG,<br>
+       CMD_VALID_PATH,<br>
+       CMD_REMOVE_WWID,<br>
+       CMD_RESET_WWIDS,<br>
+};<br>
+<br>
 struct hwentry {<br>
        char * vendor;<br>
        char * product;<br>
@@ -78,8 +88,7 @@ struct mpentry {<br>
<br>
 struct config {<br>
        int verbosity;<br>
-       int dry_run;<br>
-       int list;<br>
+       enum mpath_cmds cmd;<br>
        int pgpolicy_flag;<br>
        int pgpolicy;<br>
        enum devtypes dev_type;<br>
diff --git a/libmultipath/configure.c b/libmultipath/configure.c<br>
index 6ad7a80..107517b 100644<br>
--- a/libmultipath/configure.c<br>
+++ b/libmultipath/configure.c<br>
@@ -577,7 +577,7 @@ domap (struct multipath * mpp, char * params)<br>
        /*<br>
         * last chance to quit before touching the devmaps<br>
         */<br>
-       if (conf->dry_run && mpp->action != ACT_NOTHING) {<br>
+       if (conf->cmd == CMD_DRY_RUN && mpp->action != ACT_NOTHING) {<br>
                print_multipath_topology(mpp, conf->verbosity);<br>
                return DOMAP_DRY;<br>
        }<br>
diff --git a/libmultipath/discovery.c b/libmultipath/discovery.c<br>
index 786e1de..b62a59c 100644<br>
--- a/libmultipath/discovery.c<br>
+++ b/libmultipath/discovery.c<br>
@@ -56,7 +56,8 @@ store_pathinfo (vector pathvec, vector hwtable, struct udev_device *udevice,<br>
        }<br>
        pp->udev = udev_device_ref(udevice);<br>
        err = pathinfo(pp, hwtable,<br>
-                      (conf->dry_run == 3)? flag : (flag | DI_BLACKLIST));<br>
+                      (conf->cmd == CMD_REMOVE_WWID)? flag :<br>
+                                                      (flag | DI_BLACKLIST));<br>
        if (err)<br>
                goto out;<br>
<br>
@@ -1127,7 +1128,8 @@ get_uid (struct path * pp)<br>
<br>
                value = udev_device_get_property_value(pp->udev,<br>
                                                       pp->uid_attribute);<br>
-               if ((!value || strlen(value) == 0) && conf->dry_run == 2)<br>
+               if ((!value || strlen(value) == 0) &&<br>
+                   conf->cmd == CMD_VALID_PATH)<br>
                        value = getenv(pp->uid_attribute);<br>
                if (value && strlen(value)) {<br>
                        size_t len = WWID_SIZE;<br>
diff --git a/multipath/main.c b/multipath/main.c<br>
index 64c8fc5..54b2a74 100644<br>
--- a/multipath/main.c<br>
+++ b/multipath/main.c<br>
@@ -207,18 +207,19 @@ get_dm_mpvec (vector curmp, vector pathvec, char * refwwid)<br>
                 * If not in "fast list mode", we need to fetch information<br>
                 * about them<br>
                 */<br>
-               if (conf->list != 1)<br>
+               if (conf->cmd != CMD_LIST_SHORT)<br>
                        update_paths(mpp);<br>
<br>
-               if (conf->list > 1)<br>
+               if (conf->cmd == CMD_LIST_LONG)<br>
                        mpp->bestpg = select_path_group(mpp);<br>
<br>
                disassemble_status(status, mpp);<br>
<br>
-               if (conf->list)<br>
+               if (conf->cmd == CMD_LIST_SHORT ||<br>
+                   conf->cmd == CMD_LIST_LONG)<br>
                        print_multipath_topology(mpp, conf->verbosity);<br>
<br>
-               if (!conf->dry_run)<br>
+               if (conf->cmd == CMD_CREATE)<br>
                        reinstate_paths(mpp);<br>
        }<br>
        return 0;<br>
@@ -260,10 +261,11 @@ configure (void)<br>
        /*<br>
         * if we have a blacklisted device parameter, exit early<br>
         */<br>
-       if (dev && conf->dev_type == DEV_DEVNODE && conf->dry_run != 3 &&<br>
+       if (dev && conf->dev_type == DEV_DEVNODE &&<br>
+           conf->cmd != CMD_REMOVE_WWID &&<br>
            (filter_devnode(conf->blist_devnode,<br>
                            conf->elist_devnode, dev) > 0)) {<br>
-               if (conf->dry_run == 2)<br>
+               if (conf->cmd == CMD_VALID_PATH)<br>
                        printf("%s is not a valid multipath device path\n",<br>
                               conf->dev);<br>
                goto out;<br>
@@ -276,13 +278,13 @@ configure (void)<br>
                int failed = get_refwwid(conf->dev, conf->dev_type, pathvec,<br>
                                         &refwwid);<br>
                if (!refwwid) {<br>
-                       if (failed == 2 && conf->dry_run == 2)<br>
+                       if (failed == 2 && conf->cmd == CMD_VALID_PATH)<br>
                                printf("%s is not a valid multipath device path\n", conf->dev);<br>
                        else<br>
                                condlog(3, "scope is nul");<br>
                        goto out;<br>
                }<br>
-               if (conf->dry_run == 3) {<br>
+               if (conf->cmd == CMD_REMOVE_WWID) {<br>
                        r = remove_wwid(refwwid);<br>
                        if (r == 0)<br>
                                printf("wwid '%s' removed\n", refwwid);<br>
@@ -294,7 +296,7 @@ configure (void)<br>
                        goto out;<br>
                }<br>
                condlog(3, "scope limited to %s", refwwid);<br>
-               if (conf->dry_run == 2) {<br>
+               if (conf->cmd == CMD_VALID_PATH) {<br>
                        if (check_wwids_file(refwwid, 0) == 0){<br>
                                printf("%s is a valid multipath device path\n", conf->dev);<br>
                                r = 0;<br>
@@ -311,10 +313,10 @@ configure (void)<br>
        if (conf->dev)<br>
                di_flag = DI_WWID;<br>
<br>
-       if (conf->list > 1)<br>
+       if (conf->cmd == CMD_LIST_LONG)<br>
                /* extended path info '-ll' */<br>
                di_flag |= DI_SYSFS | DI_CHECKER;<br>
-       else if (conf->list)<br>
+       else if (conf->cmd == CMD_LIST_SHORT)<br>
                /* minimum path info '-l' */<br>
                di_flag |= DI_SYSFS;<br>
        else<br>
@@ -334,7 +336,7 @@ configure (void)<br>
<br>
        filter_pathvec(pathvec, refwwid);<br>
<br>
-       if (conf->list) {<br>
+       if (conf->cmd != CMD_CREATE && conf->cmd != CMD_DRY_RUN) {<br>
                r = 0;<br>
                goto out;<br>
        }<br>
@@ -456,11 +458,11 @@ main (int argc, char *argv[])<br>
                        conf->allow_queueing = 1;<br>
                        break;<br>
                case 'c':<br>
-                       conf->dry_run = 2;<br>
+                       conf->cmd = CMD_VALID_PATH;<br>
                        break;<br>
                case 'd':<br>
-                       if (!conf->dry_run)<br>
-                               conf->dry_run = 1;<br>
+                       if (conf->cmd == CMD_CREATE)<br>
+                               conf->cmd = CMD_DRY_RUN;<br>
                        break;<br>
                case 'f':<br>
                        conf->remove = FLUSH_ONE;<br>
@@ -469,11 +471,10 @@ main (int argc, char *argv[])<br>
                        conf->remove = FLUSH_ALL;<br>
                        break;<br>
                case 'l':<br>
-                       conf->list = 1;<br>
-                       conf->dry_run = 1;<br>
-<br>
                        if (optarg && !strncmp(optarg, "l", 1))<br>
-                               conf->list++;<br>
+                               conf->cmd = CMD_LIST_LONG;<br>
+                       else<br>
+                               conf->cmd = CMD_LIST_SHORT;<br>
<br>
                        break;<br>
                case 'M':<br>
@@ -499,10 +500,10 @@ main (int argc, char *argv[])<br>
                        usage(argv[0]);<br>
                        exit(0);<br>
                case 'w':<br>
-                       conf->dry_run = 3;<br>
+                       conf->cmd = CMD_REMOVE_WWID;<br>
                        break;<br>
                case 'W':<br>
-                       conf->dry_run = 4;<br>
+                       conf->cmd = CMD_RESET_WWIDS;<br>
                        break;<br>
                case ':':<br>
                        fprintf(stderr, "Missing option argument\n");<br>
@@ -558,16 +559,16 @@ main (int argc, char *argv[])<br>
        }<br>
        dm_init();<br>
<br>
-       if (conf->dry_run == 2 &&<br>
+       if (conf->cmd == CMD_VALID_PATH &&<br>
            (!conf->dev || conf->dev_type == DEV_DEVMAP)) {<br>
                condlog(0, "the -c option requires a path to check");<br>
                goto out;<br>
        }<br>
-       if (conf->dry_run == 3 && !conf->dev) {<br>
+       if (conf->cmd == CMD_REMOVE_WWID && !conf->dev) {<br>
                condlog(0, "the -w option requires a device");<br>
                goto out;<br>
        }<br>
-       if (conf->dry_run == 4) {<br>
+       if (conf->cmd == CMD_RESET_WWIDS) {<br>
                struct multipath * mpp;<br>
                int i;<br>
                vector curmp;<br>
<span class="HOEnZb"><font color="#888888">--<br>
1.8.3.1<br>
<br>
</font></span></blockquote></div><br></div>