[PATCH] libata-hp-prep: update ata_scsi_find_dev() and friends
authorTejun Heo <htejun@gmail.com>
Wed, 31 May 2006 09:27:34 +0000 (18:27 +0900)
committerTejun Heo <htejun@gmail.com>
Wed, 31 May 2006 09:27:34 +0000 (18:27 +0900)
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>
drivers/scsi/libata-scsi.c

index 9e5cb9f..b45b8b3 100644 (file)
 #define SECTOR_SIZE    512
 
 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_LEN 12
@@ -2308,6 +2312,23 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc, const u8 *scsicmd)
        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
  *     @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:
  *     Associated ATA device, or %NULL if not found.
  */
-
 static struct ata_device *
 ata_scsi_find_dev(struct ata_port *ap, const struct scsi_device *scsidev)
 {
-       struct ata_device *dev;
-
-       /* skip commands not addressed to targets we simulate */
-       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;
+       struct ata_device *dev = __ata_scsi_find_dev(ap, scsidev);
 
-       if (unlikely(!ata_dev_enabled(dev)))
+       if (unlikely(!dev || !ata_dev_enabled(dev)))
                return NULL;
 
        if (!atapi_enabled || (ap->flags & ATA_FLAG_NO_ATAPI)) {