[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
[dm-devel] [RESEND][PATCH] multipath-tools: service mode changes for RDAC storage
- From: "Moger, Babu" <Babu Moger netapp com>
- To: "device-mapper development" <dm-devel redhat com>, <christophe varoqui opensvc com>
- Cc: "Chauhan, Vijay" <Vijay Chauhan netapp com>, "Stankey, Robert" <Robert Stankey netapp com>, "Krishnasamy, Somasundaram" <Somasundaram Krishnasamy netapp com>, "Dachepalli, Sudhir" <Sudhir Dachepalli netapp com>
- Subject: [dm-devel] [RESEND][PATCH] multipath-tools: service mode changes for RDAC storage
- Date: Mon, 29 Aug 2011 12:24:37 -0400
This patch was not picked up yet, so resubmitting it again. There no change except it was generated on top of the latest file.
This patch handles the recent changes in NetApp RDAC storage firmware to report service mode. Firmware changed the inquiry page 0xc9 to report service mode. Purpose this change is to avoid DMMP going into infinite loop of switching back and forth between controllers when a controller is placed in service mode. This fixes the problem and reports the path as failed if the controller is placed in service mode.
Signed-off-by: Babu Moger <babu moger netapp com>
Reviewed-by: Yanling Qi <yanling qi netapp com>
Reviewed-by: Somasundaram Krishnasamy <Somasundaram Krishnasamy netapp com>
---
--- multipath-tools/libmultipath/checkers/rdac.c.orig 2011-08-29 10:36:11.000000000 -0500
+++ multipath-tools/libmultipath/checkers/rdac.c 2011-08-29 10:58:44.000000000 -0500
@@ -198,7 +198,10 @@ struct volume_access_inq
char PQ_PDT;
char dontcare0[7];
char avtcvp;
- char dontcare1[39];
+ char dontcare1;
+ char asym_access_state_cur;
+ char vendor_specific_cur;
+ char dontcare2[36];
};
extern int
@@ -218,6 +221,14 @@ libcheck_check (struct checker * c)
goto done;
}
+ /* check if controller is in service mode */
+ if ((inq.avtcvp & 0x10) &&
+ ((inq.asym_access_state_cur & 0x0F) == 0x3) &&
+ (inq.vendor_specific_cur == 0x7)) {
+ ret = PATH_DOWN;
+ goto done;
+ }
+
/* If owner set or ioship mode is enabled return PATH_UP always */
if ((inq.avtcvp & 0x1) || ((inq.avtcvp >> 5) & 0x1))
ret = PATH_UP;
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]