|
|
05be62 |
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
05be62 |
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
|
05be62 |
Date: Mon, 12 Oct 2020 16:06:11 -0500
|
|
|
05be62 |
Subject: [PATCH] libmultipath: move fast_io_fail defines to structs.h
|
|
|
05be62 |
|
|
|
05be62 |
Since fast_io_fail is part of the multipath struct, its symbolic values
|
|
|
05be62 |
belong in structs.h. Also, make it an instance of a general enum, which
|
|
|
05be62 |
will be used again in future patches, and change the set/print functions
|
|
|
05be62 |
which use it to use the general enum instead.
|
|
|
05be62 |
|
|
|
05be62 |
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
|
05be62 |
---
|
|
|
05be62 |
libmultipath/config.h | 8 --------
|
|
|
05be62 |
libmultipath/dict.c | 30 +++++++++++++++---------------
|
|
|
05be62 |
libmultipath/dict.h | 2 +-
|
|
|
05be62 |
libmultipath/propsel.c | 2 +-
|
|
|
05be62 |
libmultipath/structs.h | 17 +++++++++++++++++
|
|
|
05be62 |
5 files changed, 34 insertions(+), 25 deletions(-)
|
|
|
05be62 |
|
|
|
05be62 |
diff --git a/libmultipath/config.h b/libmultipath/config.h
|
|
|
05be62 |
index 160867cd..f38c7639 100644
|
|
|
05be62 |
--- a/libmultipath/config.h
|
|
|
05be62 |
+++ b/libmultipath/config.h
|
|
|
05be62 |
@@ -11,14 +11,6 @@
|
|
|
05be62 |
#define ORIGIN_CONFIG 1
|
|
|
05be62 |
#define ORIGIN_NO_CONFIG 2
|
|
|
05be62 |
|
|
|
05be62 |
-/*
|
|
|
05be62 |
- * In kernel, fast_io_fail == 0 means immediate failure on rport delete.
|
|
|
05be62 |
- * OTOH '0' means not-configured in various places in multipath-tools.
|
|
|
05be62 |
- */
|
|
|
05be62 |
-#define MP_FAST_IO_FAIL_UNSET (0)
|
|
|
05be62 |
-#define MP_FAST_IO_FAIL_OFF (-1)
|
|
|
05be62 |
-#define MP_FAST_IO_FAIL_ZERO (-2)
|
|
|
05be62 |
-
|
|
|
05be62 |
enum devtypes {
|
|
|
05be62 |
DEV_NONE,
|
|
|
05be62 |
DEV_DEVT,
|
|
|
05be62 |
diff --git a/libmultipath/dict.c b/libmultipath/dict.c
|
|
|
05be62 |
index 184d4b22..ce8e1cda 100644
|
|
|
05be62 |
--- a/libmultipath/dict.c
|
|
|
05be62 |
+++ b/libmultipath/dict.c
|
|
|
05be62 |
@@ -834,7 +834,7 @@ declare_mp_attr_handler(gid, set_gid)
|
|
|
05be62 |
declare_mp_attr_snprint(gid, print_gid)
|
|
|
05be62 |
|
|
|
05be62 |
static int
|
|
|
05be62 |
-set_fast_io_fail(vector strvec, void *ptr)
|
|
|
05be62 |
+set_undef_off_zero(vector strvec, void *ptr)
|
|
|
05be62 |
{
|
|
|
05be62 |
char * buff;
|
|
|
05be62 |
int *int_ptr = (int *)ptr;
|
|
|
05be62 |
@@ -844,36 +844,36 @@ set_fast_io_fail(vector strvec, void *ptr)
|
|
|
05be62 |
return 1;
|
|
|
05be62 |
|
|
|
05be62 |
if (strcmp(buff, "off") == 0)
|
|
|
05be62 |
- *int_ptr = MP_FAST_IO_FAIL_OFF;
|
|
|
05be62 |
+ *int_ptr = UOZ_OFF;
|
|
|
05be62 |
else if (sscanf(buff, "%d", int_ptr) != 1 ||
|
|
|
05be62 |
- *int_ptr < MP_FAST_IO_FAIL_ZERO)
|
|
|
05be62 |
- *int_ptr = MP_FAST_IO_FAIL_UNSET;
|
|
|
05be62 |
+ *int_ptr < UOZ_ZERO)
|
|
|
05be62 |
+ *int_ptr = UOZ_UNDEF;
|
|
|
05be62 |
else if (*int_ptr == 0)
|
|
|
05be62 |
- *int_ptr = MP_FAST_IO_FAIL_ZERO;
|
|
|
05be62 |
+ *int_ptr = UOZ_ZERO;
|
|
|
05be62 |
|
|
|
05be62 |
FREE(buff);
|
|
|
05be62 |
return 0;
|
|
|
05be62 |
}
|
|
|
05be62 |
|
|
|
05be62 |
int
|
|
|
05be62 |
-print_fast_io_fail(char * buff, int len, long v)
|
|
|
05be62 |
+print_undef_off_zero(char * buff, int len, long v)
|
|
|
05be62 |
{
|
|
|
05be62 |
- if (v == MP_FAST_IO_FAIL_UNSET)
|
|
|
05be62 |
+ if (v == UOZ_UNDEF)
|
|
|
05be62 |
return 0;
|
|
|
05be62 |
- if (v == MP_FAST_IO_FAIL_OFF)
|
|
|
05be62 |
+ if (v == UOZ_OFF)
|
|
|
05be62 |
return snprintf(buff, len, "\"off\"");
|
|
|
05be62 |
- if (v == MP_FAST_IO_FAIL_ZERO)
|
|
|
05be62 |
+ if (v == UOZ_ZERO)
|
|
|
05be62 |
return snprintf(buff, len, "0");
|
|
|
05be62 |
return snprintf(buff, len, "%ld", v);
|
|
|
05be62 |
}
|
|
|
05be62 |
|
|
|
05be62 |
-declare_def_handler(fast_io_fail, set_fast_io_fail)
|
|
|
05be62 |
-declare_def_snprint_defint(fast_io_fail, print_fast_io_fail,
|
|
|
05be62 |
+declare_def_handler(fast_io_fail, set_undef_off_zero)
|
|
|
05be62 |
+declare_def_snprint_defint(fast_io_fail, print_undef_off_zero,
|
|
|
05be62 |
DEFAULT_FAST_IO_FAIL)
|
|
|
05be62 |
-declare_ovr_handler(fast_io_fail, set_fast_io_fail)
|
|
|
05be62 |
-declare_ovr_snprint(fast_io_fail, print_fast_io_fail)
|
|
|
05be62 |
-declare_hw_handler(fast_io_fail, set_fast_io_fail)
|
|
|
05be62 |
-declare_hw_snprint(fast_io_fail, print_fast_io_fail)
|
|
|
05be62 |
+declare_ovr_handler(fast_io_fail, set_undef_off_zero)
|
|
|
05be62 |
+declare_ovr_snprint(fast_io_fail, print_undef_off_zero)
|
|
|
05be62 |
+declare_hw_handler(fast_io_fail, set_undef_off_zero)
|
|
|
05be62 |
+declare_hw_snprint(fast_io_fail, print_undef_off_zero)
|
|
|
05be62 |
|
|
|
05be62 |
static int
|
|
|
05be62 |
set_dev_loss(vector strvec, void *ptr)
|
|
|
05be62 |
diff --git a/libmultipath/dict.h b/libmultipath/dict.h
|
|
|
05be62 |
index a40ac66f..a917e1ca 100644
|
|
|
05be62 |
--- a/libmultipath/dict.h
|
|
|
05be62 |
+++ b/libmultipath/dict.h
|
|
|
05be62 |
@@ -13,7 +13,7 @@ int print_rr_weight(char *buff, int len, long v);
|
|
|
05be62 |
int print_pgfailback(char *buff, int len, long v);
|
|
|
05be62 |
int print_pgpolicy(char *buff, int len, long v);
|
|
|
05be62 |
int print_no_path_retry(char *buff, int len, long v);
|
|
|
05be62 |
-int print_fast_io_fail(char *buff, int len, long v);
|
|
|
05be62 |
+int print_undef_off_zero(char *buff, int len, long v);
|
|
|
05be62 |
int print_dev_loss(char *buff, int len, unsigned long v);
|
|
|
05be62 |
int print_reservation_key(char * buff, int len, struct be64 key, uint8_t
|
|
|
05be62 |
flags, int source);
|
|
|
05be62 |
diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
|
|
|
05be62 |
index d7febec6..725db2b1 100644
|
|
|
05be62 |
--- a/libmultipath/propsel.c
|
|
|
05be62 |
+++ b/libmultipath/propsel.c
|
|
|
05be62 |
@@ -755,7 +755,7 @@ int select_fast_io_fail(struct config *conf, struct multipath *mp)
|
|
|
05be62 |
mp_set_conf(fast_io_fail);
|
|
|
05be62 |
mp_set_default(fast_io_fail, DEFAULT_FAST_IO_FAIL);
|
|
|
05be62 |
out:
|
|
|
05be62 |
- print_fast_io_fail(buff, 12, mp->fast_io_fail);
|
|
|
05be62 |
+ print_undef_off_zero(buff, 12, mp->fast_io_fail);
|
|
|
05be62 |
condlog(3, "%s: fast_io_fail_tmo = %s %s", mp->alias, buff, origin);
|
|
|
05be62 |
return 0;
|
|
|
05be62 |
}
|
|
|
05be62 |
diff --git a/libmultipath/structs.h b/libmultipath/structs.h
|
|
|
05be62 |
index 8e78b8c0..29209984 100644
|
|
|
05be62 |
--- a/libmultipath/structs.h
|
|
|
05be62 |
+++ b/libmultipath/structs.h
|
|
|
05be62 |
@@ -229,6 +229,23 @@ enum vpd_vendor_ids {
|
|
|
05be62 |
VPD_VP_ARRAY_SIZE, /* This must remain the last entry */
|
|
|
05be62 |
};
|
|
|
05be62 |
|
|
|
05be62 |
+/*
|
|
|
05be62 |
+ * Multipath treats 0 as undefined for optional config parameters.
|
|
|
05be62 |
+ * Use this for cases where 0 is a valid option for systems multipath
|
|
|
05be62 |
+ * is communicating with
|
|
|
05be62 |
+ */
|
|
|
05be62 |
+enum undefined_off_zero {
|
|
|
05be62 |
+ UOZ_UNDEF = 0,
|
|
|
05be62 |
+ UOZ_OFF = -1,
|
|
|
05be62 |
+ UOZ_ZERO = -2,
|
|
|
05be62 |
+};
|
|
|
05be62 |
+
|
|
|
05be62 |
+enum fast_io_fail_states {
|
|
|
05be62 |
+ MP_FAST_IO_FAIL_UNSET = UOZ_UNDEF,
|
|
|
05be62 |
+ MP_FAST_IO_FAIL_OFF = UOZ_OFF,
|
|
|
05be62 |
+ MP_FAST_IO_FAIL_ZERO = UOZ_ZERO,
|
|
|
05be62 |
+};
|
|
|
05be62 |
+
|
|
|
05be62 |
struct vpd_vendor_page {
|
|
|
05be62 |
int pg;
|
|
|
05be62 |
const char *name;
|
|
|
05be62 |
--
|
|
|
05be62 |
2.17.2
|
|
|
05be62 |
|