[dm-devel] [PATCH v2 4/4] libmultipath: standardize datacore prioritizer timeouts
Benjamin Marzinski
bmarzins at redhat.com
Thu Aug 31 21:57:12 UTC 2023
If users don't add a timeout to the datacore priorizier arguments, it
should use the checker_timeout. Also, don't limit possible timeout
values, to match the other prioritizers.
Signed-off-by: Benjamin Marzinski <bmarzins at redhat.com>
---
libmultipath/prioritizers/datacore.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)
diff --git a/libmultipath/prioritizers/datacore.c b/libmultipath/prioritizers/datacore.c
index 74e15f3e..f288306c 100644
--- a/libmultipath/prioritizers/datacore.c
+++ b/libmultipath/prioritizers/datacore.c
@@ -32,7 +32,8 @@
#define dc_log(prio, msg) condlog(prio, "%s: datacore prio: " msg, dev)
-int datacore_prio (const char *dev, int sg_fd, char * args)
+int datacore_prio (const char *dev, int sg_fd, char * args,
+ unsigned int timeout_ms)
{
int k;
char sdsname[32];
@@ -42,7 +43,6 @@ int datacore_prio (const char *dev, int sg_fd, char * args)
unsigned char sense_buffer[32];
sg_io_hdr_t io_hdr;
- int timeout = 2000;
char preferredsds_buff[255] = "";
char * preferredsds = &preferredsds_buff[0];
@@ -52,9 +52,9 @@ int datacore_prio (const char *dev, int sg_fd, char * args)
}
if (sscanf(args, "timeout=%i preferredsds=%s",
- &timeout, preferredsds) == 2) {}
+ (int *)&timeout_ms, preferredsds) == 2) {}
else if (sscanf(args, "preferredsds=%s timeout=%i",
- preferredsds, &timeout) == 2) {}
+ preferredsds, (int *)&timeout_ms) == 2) {}
else if (sscanf(args, "preferredsds=%s",
preferredsds) == 1) {}
else {
@@ -67,10 +67,6 @@ int datacore_prio (const char *dev, int sg_fd, char * args)
dc_log(0, "prio args: preferredsds too short (1 character min)");
return 0;
}
- if ((timeout < 500) || (timeout > 20000)) {
- dc_log(0, "prio args: timeout out of bounds [500:20000]");
- return 0;
- }
if ((ioctl(sg_fd, SG_GET_VERSION_NUM, &k) < 0) || (k < 30000))
return 0;
@@ -83,7 +79,7 @@ int datacore_prio (const char *dev, int sg_fd, char * args)
io_hdr.dxferp = inqBuff;
io_hdr.cmdp = inqCmdBlk;
io_hdr.sbp = sense_buffer;
- io_hdr.timeout = timeout;
+ io_hdr.timeout = timeout_ms;
// on error just return prio 0
if (ioctl(sg_fd, SG_IO, &io_hdr) < 0)
@@ -100,5 +96,5 @@ int datacore_prio (const char *dev, int sg_fd, char * args)
int getprio(struct path * pp, char * args)
{
- return datacore_prio(pp->dev, pp->fd, args);
+ return datacore_prio(pp->dev, pp->fd, args, get_prio_timeout_ms(pp));
}
--
2.17.2
More information about the dm-devel
mailing list