multipath: retry the DID_SOFT_ERROR for rdac checker commands
authorMoger, Babu <Babu.Moger@netapp.com>
Tue, 10 Jul 2012 19:12:13 +0000 (19:12 +0000)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Wed, 11 Jul 2012 08:04:46 +0000 (10:04 +0200)
Sometimes we have seen immediate path failures for DID_SOFT_ERROR status. Just add a retry as other statuses.
It will basically add 5 retries.

Here are the messages.
Jun  4 17:46:42 ictc-billy kernel: mpt2sas0: log_info(0x31120100): originator(PL), code(0x12), sub_code(0x0100)
Jun  4 17:46:42 ictc-billy kernel: sd 1:0:0:47: [sdn] Unhandled error code
Jun  4 17:46:42 ictc-billy kernel: sd 1:0:0:47: [sdn] Result: hostbyte=DID_SOFT_ERROR driverbyte=DRIVER_OK
Jun  4 17:46:42 ictc-billy kernel: sd 1:0:0:47: [sdn] CDB: Write(10): 2a 00 00 06 e4 a0 00 00 20 00
Jun  4 17:46:42 ictc-billy kernel: device-mapper: multipath: Failing path 8:208.
Jun  4 17:46:42 ictc-billy multipathd: 8:208: mark as failed
Jun  4 17:46:42 ictc-billy multipathd: mpathat: remaining active paths: 1

Signed-off-by: Babu Moger <babu.moger@netapp.com>
libmultipath/checkers/rdac.c

index cf782e3..5f24f55 100644 (file)
@@ -166,6 +166,7 @@ retry:
                switch (io_hdr.host_status) {
                case DID_BUS_BUSY:
                case DID_ERROR:
                switch (io_hdr.host_status) {
                case DID_BUS_BUSY:
                case DID_ERROR:
+               case DID_SOFT_ERROR:
                case DID_TRANSPORT_DISRUPTED:
                        /* Transport error, retry */
                        if (--retry_rdac)
                case DID_TRANSPORT_DISRUPTED:
                        /* Transport error, retry */
                        if (--retry_rdac)