<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>