struct scsi_device * __scsi_device_lookup (struct Scsi_Host * shost, uint channel, uint id, uint lun);
Looks up the scsi_device with the specified channel, id, lun for a give host. The returned scsi_device does not have an additional reference. You must hold the host's host_lock over this call and any access to the returned scsi_device.
The only reason why drivers would want to use this is because they're need to access the device list in irq context. Otherwise you really want to use scsi_device_lookup instead.