forked from luck/tmp_suning_uos_patched
[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;
|
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
|
* aac_get_containers - list containers
|
||||||
* @common: adapter to probe
|
* @common: adapter to probe
|
||||||
@ -2573,6 +2583,11 @@ static void aac_srb_callback(void *context, struct fib * fibptr)
|
|||||||
|
|
||||||
scsi_dma_unmap(scsicmd);
|
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
|
* First check the fib status
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user