mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-26 08:50:54 +07:00
[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: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
938050916f
commit
147aab6aa2
@ -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:
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user