File multipath-tools-return-ghost-state-when-port-is-in-standby of Package multipath-tools

From 7958927b8263d268780350449b6fd18fc329b060 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Thu, 19 Feb 2009 16:19:45 +0100
Subject: [PATCH] Return 'ghost' state when port is in standby

Currently, issuing a TUR command on a path in standby
mode, it returns a Unit Attention status. This is
reported as a Failed path by the SLES11 tur checker.
Instead, this has to be reported as Ghost path based
on the additional sense code and sense code qualifier values.

References: 475816

Signed-off-by: Hannes Reinecke <hare@suse.de>
---
 libmultipath/checkers/tur.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/libmultipath/checkers/tur.c b/libmultipath/checkers/tur.c
index aa6e3ad..e06dc52 100644
--- a/libmultipath/checkers/tur.c
+++ b/libmultipath/checkers/tur.c
@@ -22,6 +22,7 @@
 
 #define MSG_TUR_UP	"tur checker reports path is up"
 #define MSG_TUR_DOWN	"tur checker reports path is down"
+#define MSG_TUR_GHOST	"tur checker reports path is in standby state"
 
 struct tur_checker_context {
 	void * dummy;
@@ -95,6 +96,18 @@ libcheck_check (struct checker * c)
 			if (--retry_tur)
 				goto retry;
 		}
+		else if (key == 0x2) {
+			/* Not Ready */
+			/* Note: Other ALUA states are either UP or DOWN */
+			if( asc == 0x04 && ascq == 0x0b){
+				/*
+				 * LOGICAL UNIT NOT ACCESSIBLE,
+				 * TARGET PORT IN STANDBY STATE
+				 */
+				MSG(c, MSG_TUR_GHOST);
+				return PATH_GHOST;
+			}
+		}
 		MSG(c, MSG_TUR_DOWN);
 		return PATH_DOWN;
 	}
-- 
1.6.0.2

openSUSE Build Service is sponsored by