浏览代码

[SCSI] scsi: handle ->slave_configure return value

When >slave_configure fails the scsi midlayer should handle it.

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Christoph Hellwig 19 年之前
父节点
当前提交
938050916f
共有 1 个文件被更改,包括 14 次插入2 次删除
  1. 14 2
      drivers/scsi/scsi_scan.c

+ 14 - 2
drivers/scsi/scsi_scan.c

@@ -752,8 +752,20 @@ static int scsi_add_lun(struct scsi_device *sdev, char *inq_result, int *bflags)
 
 
 	transport_configure_device(&sdev->sdev_gendev);
 	transport_configure_device(&sdev->sdev_gendev);
 
 
-	if (sdev->host->hostt->slave_configure)
-		sdev->host->hostt->slave_configure(sdev);
+	if (sdev->host->hostt->slave_configure) {
+		int ret = sdev->host->hostt->slave_configure(sdev);
+		if (ret) {
+			/*
+			 * if LLDD reports slave not present, don't clutter
+			 * console with alloc failure messages
+			 */
+			if (ret != -ENXIO) {
+				sdev_printk(KERN_ERR, sdev,
+					"failed to configure device\n");
+			}
+			return SCSI_SCAN_NO_RESPONSE;
+		}
+	}
 
 
 	/*
 	/*
 	 * Ok, the device is now all set up, we can
 	 * Ok, the device is now all set up, we can