scsi_dh_alua: Disable ALUA handling for non-disk devices
authorHannes Reinecke <hare@suse.de>
Tue, 1 Dec 2015 09:16:43 +0000 (10:16 +0100)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 2 Dec 2015 21:30:46 +0000 (16:30 -0500)
Non-disk devices might support ALUA, but the firmware
implementation is untested and frequently broken.
As we're don't actually need it disable ALUA support
for non-disk device for now.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/device_handler/scsi_dh_alua.c

index cc2773b5de68f5c8751ddb25d940cc0c2eef9017..7d01ef0b66cc518931e95bbfca0b05c372522682 100644 (file)
@@ -320,6 +320,18 @@ static int alua_check_tpgs(struct scsi_device *sdev, struct alua_dh_data *h)
 {
        int err = SCSI_DH_OK;
 
+       /*
+        * ALUA support for non-disk devices is fraught with
+        * difficulties, so disable it for now.
+        */
+       if (sdev->type != TYPE_DISK) {
+               h->tpgs = TPGS_MODE_NONE;
+               sdev_printk(KERN_INFO, sdev,
+                           "%s: disable for non-disk devices\n",
+                           ALUA_DH_NAME);
+               return SCSI_DH_DEV_UNSUPP;
+       }
+
        h->tpgs = scsi_device_tpgs(sdev);
        switch (h->tpgs) {
        case TPGS_MODE_EXPLICIT|TPGS_MODE_IMPLICIT: