All of lore.kernel.org
 help / color / mirror / Atom feed
From: Martin Wilck <mwilck@suse.com>
To: Christophe Varoqui <christophe.varoqui@opensvc.com>
Cc: dm-devel@redhat.com, Martin Wilck <mwilck@suse.com>
Subject: [PATCH v3 21/24] coalesce_paths(): use symbolic return value
Date: Mon, 10 Dec 2018 10:49:56 +0100	[thread overview]
Message-ID: <20181210094959.11338-22-mwilck@suse.com> (raw)
In-Reply-To: <20181210094959.11338-1-mwilck@suse.com>

Use an enum to represent the return value of coalesce_paths() to
improve readability of the code.
This patch doesn't introduce changes in behavior.

Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Martin Wilck <mwilck@suse.com>
---
 libmultipath/configure.c  | 17 ++++++++---------
 libmultipath/configure.h  | 10 ++++++++++
 multipath/main.c          |  5 +++--
 multipathd/cli_handlers.c |  3 ++-
 multipathd/main.c         |  2 +-
 5 files changed, 24 insertions(+), 13 deletions(-)

diff --git a/libmultipath/configure.c b/libmultipath/configure.c
index f48664a0..5daf0c13 100644
--- a/libmultipath/configure.c
+++ b/libmultipath/configure.c
@@ -998,8 +998,8 @@ out:
 int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid,
 		    int force_reload, enum mpath_cmds cmd)
 {
-	int r = 1;
-	int k, i;
+	int ret = CP_FAIL;
+	int k, i, r;
 	int is_daemon = (cmd == CMD_NONE) ? 1 : 0;
 	char params[PARAMS_SIZE];
 	struct multipath * mpp;
@@ -1022,11 +1022,11 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid,
 	}
 
 	if (VECTOR_SIZE(pathvec) == 0)
-		return 0;
+		return CP_OK;
 	size_mismatch_seen = calloc((VECTOR_SIZE(pathvec) - 1) / 64 + 1,
 				    sizeof(uint64_t));
 	if (size_mismatch_seen == NULL)
-		return 1;
+		return CP_FAIL;
 
 	vector_foreach_slot (pathvec, pp1, k) {
 		int invalid;
@@ -1130,6 +1130,7 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid,
 				remove_map(mpp, vecs, 0);
 				continue;
 			} else /* if (r == DOMAP_RETRY && !is_daemon) */ {
+				ret = CP_RETRY;
 				goto out;
 			}
 		}
@@ -1172,10 +1173,8 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid,
 
 		if (newmp) {
 			if (mpp->action != ACT_REJECT) {
-				if (!vector_alloc_slot(newmp)) {
-					r = 1;
+				if (!vector_alloc_slot(newmp))
 					goto out;
-				}
 				vector_set_slot(newmp, mpp);
 			}
 			else
@@ -1206,10 +1205,10 @@ int coalesce_paths (struct vectors * vecs, vector newmp, char * refwwid,
 				condlog(2, "%s: remove (dead)", alias);
 		}
 	}
-	r = 0;
+	ret = CP_OK;
 out:
 	free(size_mismatch_seen);
-	return r;
+	return ret;
 }
 
 struct udev_device *get_udev_device(const char *dev, enum devtypes dev_type)
diff --git a/libmultipath/configure.h b/libmultipath/configure.h
index 8b56d33a..64520c57 100644
--- a/libmultipath/configure.h
+++ b/libmultipath/configure.h
@@ -23,6 +23,16 @@ enum actions {
 	ACT_IMPOSSIBLE,
 };
 
+/*
+ * Return value of coalesce_paths()
+ * CP_RETRY is only used in non-daemon case (multipath).
+ */
+enum {
+	CP_OK = 0,
+	CP_FAIL,
+	CP_RETRY,
+};
+
 #define FLUSH_ONE 1
 #define FLUSH_ALL 2
 
diff --git a/multipath/main.c b/multipath/main.c
index 98fee1c7..1d34b87b 100644
--- a/multipath/main.c
+++ b/multipath/main.c
@@ -537,7 +537,7 @@ configure (struct config *conf, enum mpath_cmds cmd,
 	vector curmp = NULL;
 	vector pathvec = NULL;
 	struct vectors vecs;
-	int r = 1;
+	int r = 1, rc;
 	int di_flag = 0;
 	char * refwwid = NULL;
 	char * dev = NULL;
@@ -752,8 +752,9 @@ configure (struct config *conf, enum mpath_cmds cmd,
 	/*
 	 * core logic entry point
 	 */
-	r = coalesce_paths(&vecs, NULL, refwwid,
+	rc = coalesce_paths(&vecs, NULL, refwwid,
 			   conf->force_reload, cmd);
+	r = rc == CP_RETRY ? -1 : rc == CP_OK ? 0 : 1;
 
 print_valid:
 	if (cmd == CMD_VALID_PATH)
diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
index a0d57a53..4fbd8841 100644
--- a/multipathd/cli_handlers.c
+++ b/multipathd/cli_handlers.c
@@ -803,7 +803,8 @@ cli_add_map (void * v, char ** reply, int * len, void * data)
 				    vecs->pathvec, &refwwid);
 			if (refwwid) {
 				if (coalesce_paths(vecs, NULL, refwwid,
-						   FORCE_RELOAD_NONE, CMD_NONE))
+						   FORCE_RELOAD_NONE, CMD_NONE)
+				    != CP_OK)
 					condlog(2, "%s: coalesce_paths failed",
 									param);
 				dm_lib_release();
diff --git a/multipathd/main.c b/multipathd/main.c
index 04f02d99..fd1ac8fe 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -2366,7 +2366,7 @@ configure (struct vectors * vecs)
 	ret = coalesce_paths(vecs, mpvec, NULL, force_reload, CMD_NONE);
 	if (force_reload == FORCE_RELOAD_WEAK)
 		force_reload = FORCE_RELOAD_YES;
-	if (ret) {
+	if (ret != CP_OK) {
 		condlog(0, "configure failed while coalescing paths");
 		goto fail;
 	}
-- 
2.19.2

  parent reply	other threads:[~2018-12-10  9:49 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-10  9:49 [PATCH v3 00/24] multipath-tools: improve logging at -v3 Martin Wilck
2018-12-10  9:49 ` [PATCH v3 01/24] tests/hwtable: set multipath_dir in local configuration Martin Wilck
2018-12-10  9:49 ` [PATCH v3 02/24] tests/hwtable: adjust to new checker API Martin Wilck
2018-12-10  9:49 ` [PATCH v3 03/24] multipath-tools: decrease verbosity of state messages Martin Wilck
2018-12-10  9:49 ` [PATCH v3 04/24] libmultipath: decrease verbosity of pathinfo messages Martin Wilck
2018-12-10  9:49 ` [PATCH v3 05/24] libmultipath: decrease verbosity of TUR checker messages Martin Wilck
2018-12-10  9:49 ` [PATCH v3 06/24] libmultipath: avoid frequent messages from filter_property() Martin Wilck
2018-12-10  9:49 ` [PATCH v3 07/24] libmultipath: decrease log level of "disassembled" messages Martin Wilck
2018-12-10  9:49 ` [PATCH v3 08/24] libmultipath: decrease log level of word splitting Martin Wilck
2018-12-10  9:49 ` [PATCH v3 09/24] libmultipath: increase log level of map removal Martin Wilck
2018-12-10  9:49 ` [PATCH v3 10/24] multipathd: decrease log level of checker timing Martin Wilck
2018-12-10  9:49 ` [PATCH v3 11/24] libmultipath: decrease log level of "prioritizer refcount" message Martin Wilck
2018-12-10  9:49 ` [PATCH v3 12/24] libmpathpersist/update_map_pr: decrease log level for nop Martin Wilck
2018-12-10  9:49 ` [PATCH v3 13/24] libmultipath: simplify devt2devname() Martin Wilck
2018-12-10  9:49 ` [PATCH v3 14/24] libmultipath: decrease log level for failed VPD c9 Martin Wilck
2018-12-10  9:49 ` [PATCH v3 15/24] libmultipath: adopt_paths: check for size match Martin Wilck
2018-12-10  9:49 ` [PATCH v3 16/24] libmultipath: coalesce_paths: fix size mismatch handling Martin Wilck
2018-12-10  9:49 ` [PATCH v3 17/24] tests: add unit tests for bitmask functions Martin Wilck
2018-12-10  9:49 ` [PATCH v3 18/24] multipathd: uev_remove_path: remove redundant orphan_paths call Martin Wilck
2018-12-10  9:49 ` [PATCH v3 19/24] libmultipath: improve logging from orphan_paths Martin Wilck
2018-12-10  9:49 ` [PATCH v3 20/24] libmultipath: avoid syslog loglevel > LOG_DEBUG Martin Wilck
2018-12-10  9:49 ` Martin Wilck [this message]
2018-12-10  9:49 ` [PATCH v3 22/24] domap(): use symbolic return value Martin Wilck
2018-12-10  9:49 ` [PATCH v3 23/24] multipathd: simplify retry logic in ev_add_path() Martin Wilck
2018-12-10  9:49 ` [PATCH v3 24/24] multipath: use symbolic return value and exit code Martin Wilck
2018-12-11 17:43 ` [PATCH v3 00/24] multipath-tools: improve logging at -v3 Benjamin Marzinski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181210094959.11338-22-mwilck@suse.com \
    --to=mwilck@suse.com \
    --cc=christophe.varoqui@opensvc.com \
    --cc=dm-devel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.