summaryrefslogtreecommitdiffstats
path: root/0041-RHBZ-587695-add-rdac-message.patch
diff options
context:
space:
mode:
Diffstat (limited to '0041-RHBZ-587695-add-rdac-message.patch')
-rw-r--r--0041-RHBZ-587695-add-rdac-message.patch54
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;
+ }