diff options
author | Matthew Wilcox <matthew.r.wilcox@intel.com> | 2014-03-27 16:40:36 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-05-28 12:13:25 -0400 |
commit | a48ac9e5d4f3555bdec2fd61e49fc71b26810d68 (patch) | |
tree | ce61a979e4ff2e0f684a25d7861bec07752200a2 /drivers/message/fusion/mptspi.c | |
parent | ecc3bc982596cb66bd7f951e2f36503f4841c0c8 (diff) |
fusion: Remove use of DEF_SCSI_QCMD
Removing the host_lock from the I/O submission path gives a huge
scalability improvement.
Signed-off-by: Matthew Wilcox <matthew.r.wilcox@intel.com>
Reviewed-by: Nicholas Bellinger <nab@linux-iscsi.org>
Reviewed-by: Praveen Krishnamoorthy <Praveen.krishnamoorthy@lsi.com>
Acked-by: Sreekanth Reddy <Sreekanth.reddy@lsi.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/message/fusion/mptspi.c')
-rw-r--r-- | drivers/message/fusion/mptspi.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/message/fusion/mptspi.c b/drivers/message/fusion/mptspi.c index 5653e505f91f..49d11338294b 100644 --- a/drivers/message/fusion/mptspi.c +++ b/drivers/message/fusion/mptspi.c | |||
@@ -780,33 +780,31 @@ static int mptspi_slave_configure(struct scsi_device *sdev) | |||
780 | } | 780 | } |
781 | 781 | ||
782 | static int | 782 | static int |
783 | mptspi_qcmd_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *)) | 783 | mptspi_qcmd(struct Scsi_Host *shost, struct scsi_cmnd *SCpnt) |
784 | { | 784 | { |
785 | struct _MPT_SCSI_HOST *hd = shost_priv(SCpnt->device->host); | 785 | struct _MPT_SCSI_HOST *hd = shost_priv(shost); |
786 | VirtDevice *vdevice = SCpnt->device->hostdata; | 786 | VirtDevice *vdevice = SCpnt->device->hostdata; |
787 | MPT_ADAPTER *ioc = hd->ioc; | 787 | MPT_ADAPTER *ioc = hd->ioc; |
788 | 788 | ||
789 | if (!vdevice || !vdevice->vtarget) { | 789 | if (!vdevice || !vdevice->vtarget) { |
790 | SCpnt->result = DID_NO_CONNECT << 16; | 790 | SCpnt->result = DID_NO_CONNECT << 16; |
791 | done(SCpnt); | 791 | SCpnt->scsi_done(SCpnt); |
792 | return 0; | 792 | return 0; |
793 | } | 793 | } |
794 | 794 | ||
795 | if (SCpnt->device->channel == 1 && | 795 | if (SCpnt->device->channel == 1 && |
796 | mptscsih_is_phys_disk(ioc, 0, SCpnt->device->id) == 0) { | 796 | mptscsih_is_phys_disk(ioc, 0, SCpnt->device->id) == 0) { |
797 | SCpnt->result = DID_NO_CONNECT << 16; | 797 | SCpnt->result = DID_NO_CONNECT << 16; |
798 | done(SCpnt); | 798 | SCpnt->scsi_done(SCpnt); |
799 | return 0; | 799 | return 0; |
800 | } | 800 | } |
801 | 801 | ||
802 | if (spi_dv_pending(scsi_target(SCpnt->device))) | 802 | if (spi_dv_pending(scsi_target(SCpnt->device))) |
803 | ddvprintk(ioc, scsi_print_command(SCpnt)); | 803 | ddvprintk(ioc, scsi_print_command(SCpnt)); |
804 | 804 | ||
805 | return mptscsih_qcmd(SCpnt,done); | 805 | return mptscsih_qcmd(SCpnt); |
806 | } | 806 | } |
807 | 807 | ||
808 | static DEF_SCSI_QCMD(mptspi_qcmd) | ||
809 | |||
810 | static void mptspi_slave_destroy(struct scsi_device *sdev) | 808 | static void mptspi_slave_destroy(struct scsi_device *sdev) |
811 | { | 809 | { |
812 | struct scsi_target *starget = scsi_target(sdev); | 810 | struct scsi_target *starget = scsi_target(sdev); |