From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755134Ab0J0S1V (ORCPT ); Wed, 27 Oct 2010 14:27:21 -0400 Received: from sabe.cs.wisc.edu ([128.105.6.20]:40749 "EHLO sabe.cs.wisc.edu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755079Ab0J0S1T (ORCPT ); Wed, 27 Oct 2010 14:27:19 -0400 Message-ID: <4CC86E36.8060102@cs.wisc.edu> Date: Wed, 27 Oct 2010 13:23:50 -0500 From: Mike Christie User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.12) Gecko/20100907 Fedora/3.0.7-1.fc12 Thunderbird/3.0.7 MIME-Version: 1.0 To: "Nicholas A. Bellinger" CC: linux-scsi , linux-kernel , Vasu Dev , Tim Chen , Andi Kleen , Matthew Wilcox , James Bottomley , Jens Axboe , James Smart , Andrew Vasquez , FUJITA Tomonori , Hannes Reinecke , Joe Eykholt , Christoph Hellwig , Jon Hawley , MPTFusionLinux , "eata.c maintainer" , Luben Tuikov , mvsas maintainer , pm8001 maintainer Jack Wang Subject: Re: [PATCH] scsi: Add SHT->unlocked_qcmd for host_lock less SHT->queuecommand() dispatch References: <1288139559-12019-1-git-send-email-nab@linux-iscsi.org> In-Reply-To: <1288139559-12019-1-git-send-email-nab@linux-iscsi.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/26/2010 07:32 PM, Nicholas A. Bellinger wrote: > diff --git a/drivers/scsi/iscsi_tcp.c b/drivers/scsi/iscsi_tcp.c > index fec47de..f5933dd 100644 > --- a/drivers/scsi/iscsi_tcp.c > +++ b/drivers/scsi/iscsi_tcp.c > @@ -882,6 +882,7 @@ static struct scsi_host_template iscsi_sw_tcp_sht = { > .target_alloc = iscsi_target_alloc, > .proc_name = "iscsi_tcp", > .this_id = -1, > + .unlocked_qcmd = 1, > }; > > static struct iscsi_transport iscsi_sw_tcp_transport = { > diff --git a/drivers/scsi/libiscsi.c b/drivers/scsi/libiscsi.c > index 633e090..7e4134e 100644 > --- a/drivers/scsi/libiscsi.c > +++ b/drivers/scsi/libiscsi.c > @@ -1615,7 +1615,6 @@ int iscsi_queuecommand(struct scsi_cmnd *sc, void (*done)(struct scsi_cmnd *)) > > host = sc->device->host; > ihost = shost_priv(host); > - spin_unlock(host->host_lock); > > cls_session = starget_to_session(scsi_target(sc->device)); > session = cls_session->dd_data; > @@ -1706,7 +1705,6 @@ int iscsi_queuecommand(struct scsi_cmnd *sc, void (*done)(struct scsi_cmnd *)) > > session->queued_cmdsn++; > spin_unlock(&session->lock); > - spin_lock(host->host_lock); > return 0; > > prepd_reject: > @@ -1716,7 +1714,6 @@ reject: > spin_unlock(&session->lock); > ISCSI_DBG_SESSION(session, "cmd 0x%x rejected (%d)\n", > sc->cmnd[0], reason); > - spin_lock(host->host_lock); > return SCSI_MLQUEUE_TARGET_BUSY; > > prepd_fault: > @@ -1733,7 +1730,6 @@ fault: > scsi_in(sc)->resid = scsi_in(sc)->length; > } > done(sc); > - spin_lock(host->host_lock); > return 0; > } > EXPORT_SYMBOL_GPL(iscsi_queuecommand); Hey, iscsi_tcp, drivers/infiniband/ulp/iser/ib_iser, drivers/scsi/cxgb3i, drivers/scsi/bnx2i, and drivers/scsi/be2iscsi use libiscsi's iscsi_queuecommand function, so they should all use the same setting unlocked_qcmd=1.