[PATCH] libata-hp-prep: update ata_scsi_find_dev() and friends
Separate out ata_find_dev() and __ata_scsi_find_dev() from ata_scsi_find_dev(). These will be used by later hotplug implementation. Signed-off-by: Tejun Heo <htejun@gmail.com>
This commit is contained in:
parent
72fa4b742b
commit
ab5b3a5b2d
|
@ -52,8 +52,12 @@
|
||||||
#define SECTOR_SIZE 512
|
#define SECTOR_SIZE 512
|
||||||
|
|
||||||
typedef unsigned int (*ata_xlat_func_t)(struct ata_queued_cmd *qc, const u8 *scsicmd);
|
typedef unsigned int (*ata_xlat_func_t)(struct ata_queued_cmd *qc, const u8 *scsicmd);
|
||||||
static struct ata_device *
|
|
||||||
ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev);
|
static struct ata_device * __ata_scsi_find_dev(struct ata_port *ap,
|
||||||
|
const struct scsi_device *scsidev);
|
||||||
|
static struct ata_device * ata_scsi_find_dev(struct ata_port *ap,
|
||||||
|
const struct scsi_device *scsidev);
|
||||||
|
|
||||||
|
|
||||||
#define RW_RECOVERY_MPAGE 0x1
|
#define RW_RECOVERY_MPAGE 0x1
|
||||||
#define RW_RECOVERY_MPAGE_LEN 12
|
#define RW_RECOVERY_MPAGE_LEN 12
|
||||||
|
@ -2308,6 +2312,23 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc, const u8 *scsicmd)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct ata_device * ata_find_dev(struct ata_port *ap, int id)
|
||||||
|
{
|
||||||
|
if (likely(id < ATA_MAX_DEVICES))
|
||||||
|
return &ap->device[id];
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct ata_device * __ata_scsi_find_dev(struct ata_port *ap,
|
||||||
|
const struct scsi_device *scsidev)
|
||||||
|
{
|
||||||
|
/* skip commands not addressed to targets we simulate */
|
||||||
|
if (unlikely(scsidev->channel || scsidev->lun))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
return ata_find_dev(ap, scsidev->id);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ata_scsi_find_dev - lookup ata_device from scsi_cmnd
|
* ata_scsi_find_dev - lookup ata_device from scsi_cmnd
|
||||||
* @ap: ATA port to which the device is attached
|
* @ap: ATA port to which the device is attached
|
||||||
|
@ -2324,23 +2345,12 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc, const u8 *scsicmd)
|
||||||
* RETURNS:
|
* RETURNS:
|
||||||
* Associated ATA device, or %NULL if not found.
|
* Associated ATA device, or %NULL if not found.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static struct ata_device *
|
static struct ata_device *
|
||||||
ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev)
|
ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev)
|
||||||
{
|
{
|
||||||
struct ata_device *dev;
|
struct ata_device *dev = __ata_scsi_find_dev(ap, scsidev);
|
||||||
|
|
||||||
/* skip commands not addressed to targets we simulate */
|
if (unlikely(!dev || !ata_dev_enabled(dev)))
|
||||||
if (likely(scsidev->id < ATA_MAX_DEVICES))
|
|
||||||
dev = &ap->device[scsidev->id];
|
|
||||||
else
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (unlikely((scsidev->channel != 0) ||
|
|
||||||
(scsidev->lun != 0)))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
if (unlikely(!ata_dev_enabled(dev)))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (!atapi_enabled || (ap->flags & ATA_FLAG_NO_ATAPI)) {
|
if (!atapi_enabled || (ap->flags & ATA_FLAG_NO_ATAPI)) {
|
||||||
|
|
Loading…
Reference in New Issue