Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 147aab6a authored by Christoph Hellwig's avatar Christoph Hellwig Committed by James Bottomley
Browse files

[SCSI] megaraid_sas: fix physical disk handling



This patch hides the devices completely from the midlayer instead.
It requires the patch to handle the slave_configure failure I posted
earlier.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 93805091
Loading
Loading
Loading
Loading
+15 −14
Original line number Diff line number Diff line
@@ -793,6 +793,20 @@ megasas_queue_command(struct scsi_cmnd *scmd, void (*done) (struct scsi_cmnd *))
	return 0;
}

static int megasas_slave_configure(struct scsi_device *sdev)
{
	/*
	 * Don't export physical disk devices to the disk driver.
	 *
	 * FIXME: Currently we don't export them to the midlayer at all.
	 * 	  That will be fixed once LSI engineers have audited the
	 * 	  firmware for possible issues.
	 */
	if (sdev->channel < MEGASAS_MAX_PD_CHANNELS && sdev->type == TYPE_DISK)
		return -ENXIO;
	return 0;
}

/**
 * megasas_wait_for_outstanding -	Wait for all outstanding cmds
 * @instance:				Adapter soft state
@@ -943,6 +957,7 @@ static struct scsi_host_template megasas_template = {
	.module = THIS_MODULE,
	.name = "LSI Logic SAS based MegaRAID driver",
	.proc_name = "megaraid_sas",
	.slave_configure = megasas_slave_configure,
	.queuecommand = megasas_queue_command,
	.eh_device_reset_handler = megasas_reset_device,
	.eh_bus_reset_handler = megasas_reset_bus_host,
@@ -1071,20 +1086,6 @@ megasas_complete_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd,
			break;
		}

		/*
		 * Don't export physical disk devices to mid-layer.
		 */
		if (!MEGASAS_IS_LOGICAL(cmd->scmd) &&
		    (hdr->cmd_status == MFI_STAT_OK) &&
		    (cmd->scmd->cmnd[0] == INQUIRY)) {

			if (((*(u8 *) cmd->scmd->request_buffer) & 0x1F) ==
			    TYPE_DISK) {
				cmd->scmd->result = DID_BAD_TARGET << 16;
				exception = 1;
			}
		}

	case MFI_CMD_LD_READ:
	case MFI_CMD_LD_WRITE: