diff options
Diffstat (limited to '0041-RHBZ-587695-add-rdac-message.patch')
-rw-r--r-- | 0041-RHBZ-587695-add-rdac-message.patch | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/0041-RHBZ-587695-add-rdac-message.patch b/0041-RHBZ-587695-add-rdac-message.patch new file mode 100644 index 0000000..880dee0 --- /dev/null +++ b/0041-RHBZ-587695-add-rdac-message.patch @@ -0,0 +1,54 @@ +--- + libmultipath/checkers/rdac.c | 32 ++++++++++++++++++++------------ + 1 file changed, 20 insertions(+), 12 deletions(-) + +Index: multipath-tools/libmultipath/checkers/rdac.c +=================================================================== +--- multipath-tools.orig/libmultipath/checkers/rdac.c ++++ multipath-tools/libmultipath/checkers/rdac.c +@@ -101,25 +101,33 @@ extern int + libcheck_check (struct checker * c) + { + struct volume_access_inq inq; ++ int ret; + + memset(&inq, 0, sizeof(struct volume_access_inq)); + if (0 != do_inq(c->fd, 0xC9, &inq, sizeof(struct volume_access_inq), + c->timeout)) { +- MSG(c, MSG_RDAC_DOWN); +- return PATH_DOWN; +- } else { +- if ((inq.PQ_PDT & 0x20) || (inq.PQ_PDT & 0x7f)) { +- /* LUN not connected*/ +- return PATH_DOWN; +- } ++ ret = PATH_DOWN; ++ goto done; ++ } else if ((inq.PQ_PDT & 0x20) || (inq.PQ_PDT & 0x7f)) { ++ /* LUN not connected*/ ++ ret = PATH_DOWN; ++ goto done; + } + +- if (inq.avtcvp & 0x1) { ++ ret = ((inq.avtcvp & 0x1) ? PATH_UP : PATH_GHOST); ++ ++done: ++ switch (ret) { ++ case PATH_DOWN: ++ MSG(c, MSG_RDAC_DOWN); ++ break; ++ case PATH_UP: + MSG(c, MSG_RDAC_UP); +- return PATH_UP; +- } +- else { ++ break; ++ case PATH_GHOST: + MSG(c, MSG_RDAC_GHOST); +- return PATH_GHOST; ++ break; + } ++ ++ return ret; + } |