TUR checker should not return 'failed' for reservation conflict
authorHannes Reinecke <hare@suse.de>
Wed, 16 Sep 2009 10:23:30 +0000 (12:23 +0200)
committerHannes Reinecke <hare@suse.de>
Tue, 3 May 2011 08:19:33 +0000 (10:19 +0200)
Some SCSI-3 arrays might return 'Reservation conflict' even
for TEST UNIT READY. But this doesn't indicate that the path
is faulty. So we should return the proper status here.

References: bnc#498413

Signed-off-by: Hannes Reinecke <hare@suse.de>
libmultipath/checkers/tur.c

index 55fab26..8af5777 100644 (file)
@@ -61,6 +61,14 @@ libcheck_check (struct checker * c)
                MSG(c, MSG_TUR_DOWN);
                return PATH_DOWN;
        }
+       if ((io_hdr.status & 0x7e) == 0x18) {
+               /*
+                * SCSI-3 arrays might return
+                * reservation conflict on TUR
+                */
+               MSG(c, MSG_TUR_UP);
+               return PATH_UP;
+       }
        if (io_hdr.info & SG_INFO_OK_MASK) {
                int key = 0, asc, ascq;