scsi: scsi_dh: suppress errors from unsupported devices
Device handlers are optional, and for some handlers like ALUA only implemented for certain device types. So suppress any errors for unsupported devices. Signed-off-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Este cometimento está contido em:

cometido por
Martin K. Petersen

ascendente
2a8f7a0344
cometimento
2930f81713
@@ -140,12 +140,17 @@ static int scsi_dh_handler_attach(struct scsi_device *sdev,
|
||||
case SCSI_DH_RES_TEMP_UNAVAIL:
|
||||
ret = -EAGAIN;
|
||||
break;
|
||||
case SCSI_DH_DEV_UNSUPP:
|
||||
case SCSI_DH_NOSYS:
|
||||
ret = -ENODEV;
|
||||
break;
|
||||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
}
|
||||
sdev_printk(KERN_ERR, sdev, "%s: Attach failed (%d)\n",
|
||||
scsi_dh->name, error);
|
||||
if (ret != -ENODEV)
|
||||
sdev_printk(KERN_ERR, sdev, "%s: Attach failed (%d)\n",
|
||||
scsi_dh->name, error);
|
||||
module_put(scsi_dh->module);
|
||||
} else
|
||||
sdev->handler = scsi_dh;
|
||||
@@ -164,18 +169,20 @@ static void scsi_dh_handler_detach(struct scsi_device *sdev)
|
||||
module_put(sdev->handler->module);
|
||||
}
|
||||
|
||||
int scsi_dh_add_device(struct scsi_device *sdev)
|
||||
void scsi_dh_add_device(struct scsi_device *sdev)
|
||||
{
|
||||
struct scsi_device_handler *devinfo = NULL;
|
||||
const char *drv;
|
||||
int err = 0;
|
||||
|
||||
drv = scsi_dh_find_driver(sdev);
|
||||
if (drv)
|
||||
devinfo = __scsi_dh_lookup(drv);
|
||||
/*
|
||||
* device_handler is optional, so ignore errors
|
||||
* from scsi_dh_handler_attach()
|
||||
*/
|
||||
if (devinfo)
|
||||
err = scsi_dh_handler_attach(sdev, devinfo);
|
||||
return err;
|
||||
(void)scsi_dh_handler_attach(sdev, devinfo);
|
||||
}
|
||||
|
||||
void scsi_dh_release_device(struct scsi_device *sdev)
|
||||
|
Criar uma nova questão referindo esta
Bloquear um utilizador