[SCSI] aacraid: expose physical devices for models with newer firmware
The default driver setting is "expose_physicals=0", which means raw physical drives are not exposed to OS. If the user wants to expose connected physical drives, enable "expose_physicals" module parameter. With the new JBOD firmware, physical drives are not available for "expose_physicals>0". In function "aac_expose_phy_device", modified to reset the appropriate bit in the first byte of inquiry data. This fix exposes the connected physical drives. Signed-off-by: Mahesh Rajashekhara <aacraid@adaptec.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
5ca0559409
commit
e3cc268fe4
|
@ -328,6 +328,16 @@ int aac_get_config_status(struct aac_dev *dev, int commit_flag)
|
|||
return status;
|
||||
}
|
||||
|
||||
static void aac_expose_phy_device(struct scsi_cmnd *scsicmd)
|
||||
{
|
||||
char inq_data;
|
||||
scsi_sg_copy_to_buffer(scsicmd, &inq_data, sizeof(inq_data));
|
||||
if ((inq_data & 0x20) && (inq_data & 0x1f) == TYPE_DISK) {
|
||||
inq_data &= 0xdf;
|
||||
scsi_sg_copy_from_buffer(scsicmd, &inq_data, sizeof(inq_data));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* aac_get_containers - list containers
|
||||
* @common: adapter to probe
|
||||
|
@ -2573,6 +2583,11 @@ static void aac_srb_callback(void *context, struct fib * fibptr)
|
|||
|
||||
scsi_dma_unmap(scsicmd);
|
||||
|
||||
/* expose physical device if expose_physicald flag is on */
|
||||
if (scsicmd->cmnd[0] == INQUIRY && !(scsicmd->cmnd[1] & 0x01)
|
||||
&& expose_physicals > 0)
|
||||
aac_expose_phy_device(scsicmd);
|
||||
|
||||
/*
|
||||
* First check the fib status
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue