166 lines
4.6 KiB
Diff
166 lines
4.6 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
||
|
Date: Tue, 20 Dec 2022 17:41:11 -0600
|
||
|
Subject: [PATCH] libmultipath: make prflag an enum
|
||
|
|
||
|
In preparation for a future patch, make prflag an enum, and change the
|
||
|
reply of cli_getprstatus() to a string.
|
||
|
|
||
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
||
|
Reviewed-by: Martin Wilck <mwilck@suse.com>
|
||
|
---
|
||
|
libmpathpersist/mpath_persist.c | 2 +-
|
||
|
libmultipath/structs.h | 8 +++++++-
|
||
|
multipathd/cli_handlers.c | 16 +++++++++-------
|
||
|
multipathd/main.c | 14 +++++++-------
|
||
|
4 files changed, 24 insertions(+), 16 deletions(-)
|
||
|
|
||
|
diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c
|
||
|
index d0744773..e361435a 100644
|
||
|
--- a/libmpathpersist/mpath_persist.c
|
||
|
+++ b/libmpathpersist/mpath_persist.c
|
||
|
@@ -949,7 +949,7 @@ int update_map_pr(struct multipath *mpp)
|
||
|
|
||
|
if (isFound)
|
||
|
{
|
||
|
- mpp->prflag = 1;
|
||
|
+ mpp->prflag = PRFLAG_SET;
|
||
|
condlog(2, "%s: prflag flag set.", mpp->alias );
|
||
|
}
|
||
|
|
||
|
diff --git a/libmultipath/structs.h b/libmultipath/structs.h
|
||
|
index 44980b4e..8acea3cb 100644
|
||
|
--- a/libmultipath/structs.h
|
||
|
+++ b/libmultipath/structs.h
|
||
|
@@ -377,6 +377,12 @@ struct path {
|
||
|
|
||
|
typedef int (pgpolicyfn) (struct multipath *, vector);
|
||
|
|
||
|
+
|
||
|
+enum prflag_value {
|
||
|
+ PRFLAG_UNSET,
|
||
|
+ PRFLAG_SET,
|
||
|
+};
|
||
|
+
|
||
|
struct multipath {
|
||
|
char wwid[WWID_SIZE];
|
||
|
char alias_old[WWID_SIZE];
|
||
|
@@ -450,7 +456,7 @@ struct multipath {
|
||
|
int prkey_source;
|
||
|
struct be64 reservation_key;
|
||
|
uint8_t sa_flags;
|
||
|
- unsigned char prflag;
|
||
|
+ int prflag;
|
||
|
int all_tg_pt;
|
||
|
struct gen_multipath generic_mp;
|
||
|
bool fpin_must_reload;
|
||
|
diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
|
||
|
index 8b4bd187..6dbbb7e2 100644
|
||
|
--- a/multipathd/cli_handlers.c
|
||
|
+++ b/multipathd/cli_handlers.c
|
||
|
@@ -1407,6 +1407,10 @@ cli_shutdown (void * v, char ** reply, int * len, void * data)
|
||
|
int
|
||
|
cli_getprstatus (void * v, char ** reply, int * len, void * data)
|
||
|
{
|
||
|
+ static const char * const prflag_str[] = {
|
||
|
+ [PRFLAG_UNSET] = "unset\n",
|
||
|
+ [PRFLAG_SET] = "set\n",
|
||
|
+ };
|
||
|
struct multipath * mpp;
|
||
|
struct vectors * vecs = (struct vectors *)data;
|
||
|
char * param = get_keyparam(v, MAP);
|
||
|
@@ -1418,9 +1422,7 @@ cli_getprstatus (void * v, char ** reply, int * len, void * data)
|
||
|
if (!mpp)
|
||
|
return 1;
|
||
|
|
||
|
- condlog(3, "%s: prflag = %u", param, (unsigned int)mpp->prflag);
|
||
|
-
|
||
|
- *len = asprintf(reply, "%d", mpp->prflag);
|
||
|
+ *len = asprintf(reply, "%s", prflag_str[mpp->prflag]);
|
||
|
if (*len < 0)
|
||
|
return 1;
|
||
|
|
||
|
@@ -1443,8 +1445,8 @@ cli_setprstatus(void * v, char ** reply, int * len, void * data)
|
||
|
if (!mpp)
|
||
|
return 1;
|
||
|
|
||
|
- if (!mpp->prflag) {
|
||
|
- mpp->prflag = 1;
|
||
|
+ if (mpp->prflag != PRFLAG_SET) {
|
||
|
+ mpp->prflag = PRFLAG_SET;
|
||
|
condlog(2, "%s: prflag set", param);
|
||
|
}
|
||
|
|
||
|
@@ -1466,8 +1468,8 @@ cli_unsetprstatus(void * v, char ** reply, int * len, void * data)
|
||
|
if (!mpp)
|
||
|
return 1;
|
||
|
|
||
|
- if (mpp->prflag) {
|
||
|
- mpp->prflag = 0;
|
||
|
+ if (mpp->prflag != PRFLAG_UNSET) {
|
||
|
+ mpp->prflag = PRFLAG_UNSET;
|
||
|
condlog(2, "%s: prflag unset", param);
|
||
|
}
|
||
|
|
||
|
diff --git a/multipathd/main.c b/multipathd/main.c
|
||
|
index d84027dc..81bb0deb 100644
|
||
|
--- a/multipathd/main.c
|
||
|
+++ b/multipathd/main.c
|
||
|
@@ -571,9 +571,9 @@ fail:
|
||
|
|
||
|
sync_map_state(mpp);
|
||
|
|
||
|
- if (!mpp->prflag)
|
||
|
+ if (mpp->prflag == PRFLAG_UNSET)
|
||
|
update_map_pr(mpp);
|
||
|
- if (mpp->prflag)
|
||
|
+ if (mpp->prflag == PRFLAG_SET)
|
||
|
pr_register_active_paths(mpp);
|
||
|
|
||
|
if (retries < 0)
|
||
|
@@ -1034,7 +1034,7 @@ ev_add_path (struct path * pp, struct vectors * vecs, int need_do_map)
|
||
|
int start_waiter = 0;
|
||
|
int ret;
|
||
|
int ro;
|
||
|
- unsigned char prflag = 0;
|
||
|
+ unsigned char prflag = PRFLAG_UNSET;
|
||
|
|
||
|
/*
|
||
|
* need path UID to go any further
|
||
|
@@ -1162,7 +1162,7 @@ rescan:
|
||
|
if (retries >= 0) {
|
||
|
if (start_waiter)
|
||
|
update_map_pr(mpp);
|
||
|
- if (mpp->prflag && !prflag)
|
||
|
+ if (mpp->prflag == PRFLAG_SET && prflag == PRFLAG_UNSET)
|
||
|
pr_register_active_paths(mpp);
|
||
|
condlog(2, "%s [%s]: path added to devmap %s",
|
||
|
pp->dev, pp->dev_t, mpp->alias);
|
||
|
@@ -2306,7 +2306,7 @@ check_path (struct vectors * vecs, struct path * pp, unsigned int ticks)
|
||
|
}
|
||
|
|
||
|
if (newstate == PATH_UP || newstate == PATH_GHOST) {
|
||
|
- if (pp->mpp->prflag) {
|
||
|
+ if (pp->mpp->prflag == PRFLAG_SET) {
|
||
|
/*
|
||
|
* Check Persistent Reservation.
|
||
|
*/
|
||
|
@@ -2632,7 +2632,7 @@ configure (struct vectors * vecs)
|
||
|
if (remember_wwid(mpp->wwid) == 1)
|
||
|
trigger_paths_udev_change(mpp, true);
|
||
|
update_map_pr(mpp);
|
||
|
- if (mpp->prflag)
|
||
|
+ if (mpp->prflag == PRFLAG_SET)
|
||
|
pr_register_active_paths(mpp);
|
||
|
}
|
||
|
|
||
|
@@ -3438,7 +3438,7 @@ void * mpath_pr_event_handler_fn (void * pathp )
|
||
|
{
|
||
|
condlog(0,"%s: Reservation registration failed. Error: %d", pp->dev, ret);
|
||
|
}
|
||
|
- mpp->prflag = 1;
|
||
|
+ mpp->prflag = PRFLAG_SET;
|
||
|
|
||
|
free(param);
|
||
|
out:
|