[PATCH v2 13/19] libmultipath: convert cciss_tur checker to async checker
From: Martin Wilck <hidden>
Date: 2026-05-22 16:44:58
Subsystem:
the rest · Maintainer:
Linus Torvalds
Make the cciss_tur checker use the async checker framework. Signed-off-by: Martin Wilck <redacted> Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com> --- libmultipath/checkers/cciss_tur.c | 41 ++++++++----------------------- 1 file changed, 10 insertions(+), 31 deletions(-)
diff --git a/libmultipath/checkers/cciss_tur.c b/libmultipath/checkers/cciss_tur.c
index c89fe5e..b859138 100644
--- a/libmultipath/checkers/cciss_tur.c
+++ b/libmultipath/checkers/cciss_tur.c@@ -24,47 +24,33 @@ #include <errno.h> #include "checkers.h" +#include "async_checker.h" #include "cciss.h" #define TUR_CMD_LEN 6 #define HEAVY_CHECK_COUNT 10 -struct cciss_tur_checker_context { - void * dummy; -}; - -int libcheck_init (__attribute__((unused)) struct checker * c) -{ - return 0; -} - -void libcheck_free (__attribute__((unused)) struct checker * c) -{ - return; -} - -int libcheck_check(struct checker * c) +int libcheck_async_func(struct runner_data *rdata) { int rc; int ret; unsigned int lun = 0; - struct cciss_tur_checker_context * ctxt = NULL; LogvolInfo_struct lvi; // logical "volume" info IOCTL_Command_struct cic; // cciss ioctl command - if ((c->fd) < 0) { - c->msgid = CHECKER_MSGID_NO_FD; + if ((rdata->fd) < 0) { + rdata->msgid = CHECKER_MSGID_NO_FD; ret = -1; goto out; } - rc = ioctl(c->fd, CCISS_GETLUNINFO, &lvi); + rc = ioctl(rdata->fd, CCISS_GETLUNINFO, &lvi); if ( rc != 0) { perror("Error: "); fprintf(stderr, "cciss TUR failed in CCISS_GETLUNINFO: %s\n", strerror(errno)); - c->msgid = CHECKER_MSGID_DOWN; + rdata->msgid = CHECKER_MSGID_DOWN; ret = PATH_DOWN; goto out; } else {
@@ -87,31 +73,24 @@ int libcheck_check(struct checker * c) cic.Request.CDB[4] = 0; cic.Request.CDB[5] = 0; - rc = ioctl(c->fd, CCISS_PASSTHRU, &cic); + rc = ioctl(rdata->fd, CCISS_PASSTHRU, &cic); if (rc < 0) { fprintf(stderr, "cciss TUR failed: %s\n", strerror(errno)); - c->msgid = CHECKER_MSGID_DOWN; + rdata->msgid = CHECKER_MSGID_DOWN; ret = PATH_DOWN; goto out; } if ((cic.error_info.CommandStatus | cic.error_info.ScsiStatus )) { - c->msgid = CHECKER_MSGID_DOWN; + rdata->msgid = CHECKER_MSGID_DOWN; ret = PATH_DOWN; goto out; } - c->msgid = CHECKER_MSGID_UP; + rdata->msgid = CHECKER_MSGID_UP; ret = PATH_UP; out: - /* - * caller told us he doesn't want to keep the context : - * free it - */ - if (!c->context) - free(ctxt); - return(ret); }
--
2.54.0