Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755889AbaGILOH (ORCPT ); Wed, 9 Jul 2014 07:14:07 -0400 Received: from cantor2.suse.de ([195.135.220.15]:41541 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754252AbaGILOE (ORCPT ); Wed, 9 Jul 2014 07:14:04 -0400 Message-ID: <53BD23FA.2090600@suse.de> Date: Wed, 09 Jul 2014 13:14:02 +0200 From: Hannes Reinecke User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Christoph Hellwig , James Bottomley CC: Jens Axboe , Bart Van Assche , Robert Elliott , linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 04/14] scsi: set ->scsi_done before calling scsi_dispatch_cmd References: <1403715121-1201-1-git-send-email-hch@lst.de> <1403715121-1201-5-git-send-email-hch@lst.de> In-Reply-To: <1403715121-1201-5-git-send-email-hch@lst.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/25/2014 06:51 PM, Christoph Hellwig wrote: > The blk-mq code path will set this to a different function, so make the > code simpler by setting it up in a legacy-request specific place. > > Signed-off-by: Christoph Hellwig > --- > drivers/scsi/scsi.c | 23 +---------------------- > drivers/scsi/scsi_lib.c | 20 ++++++++++++++++++++ > 2 files changed, 21 insertions(+), 22 deletions(-) > > diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c > index dcc43fd..d3bd6cf 100644 > --- a/drivers/scsi/scsi.c > +++ b/drivers/scsi/scsi.c > @@ -72,8 +72,6 @@ > #define CREATE_TRACE_POINTS > #include > > -static void scsi_done(struct scsi_cmnd *cmd); > - > /* > * Definitions and constants. > */ > @@ -696,8 +694,6 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd) > } > > trace_scsi_dispatch_cmd_start(cmd); > - > - cmd->scsi_done = scsi_done; > rtn = host->hostt->queuecommand(host, cmd); > if (rtn) { > trace_scsi_dispatch_cmd_error(cmd, rtn); > @@ -711,28 +707,11 @@ int scsi_dispatch_cmd(struct scsi_cmnd *cmd) > > return rtn; > done: > - scsi_done(cmd); > + cmd->scsi_done(cmd); > return 0; > } > > /** > - * scsi_done - Invoke completion on finished SCSI command. > - * @cmd: The SCSI Command for which a low-level device driver (LLDD) gives > - * ownership back to SCSI Core -- i.e. the LLDD has finished with it. > - * > - * Description: This function is the mid-level's (SCSI Core) interrupt routine, > - * which regains ownership of the SCSI command (de facto) from a LLDD, and > - * calls blk_complete_request() for further processing. > - * > - * This function is interrupt context safe. > - */ > -static void scsi_done(struct scsi_cmnd *cmd) > -{ > - trace_scsi_dispatch_cmd_done(cmd); > - blk_complete_request(cmd->request); > -} > - > -/** > * scsi_finish_command - cleanup and pass command back to upper layer > * @cmd: the command > * > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index 63bf844..6989b6f 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -29,6 +29,8 @@ > #include > #include > > +#include > + > #include "scsi_priv.h" > #include "scsi_logging.h" > > @@ -1480,6 +1482,23 @@ static void scsi_softirq_done(struct request *rq) > } > } > > +/** > + * scsi_done - Invoke completion on finished SCSI command. > + * @cmd: The SCSI Command for which a low-level device driver (LLDD) gives > + * ownership back to SCSI Core -- i.e. the LLDD has finished with it. > + * > + * Description: This function is the mid-level's (SCSI Core) interrupt routine, > + * which regains ownership of the SCSI command (de facto) from a LLDD, and > + * calls blk_complete_request() for further processing. > + * > + * This function is interrupt context safe. > + */ > +static void scsi_done(struct scsi_cmnd *cmd) > +{ > + trace_scsi_dispatch_cmd_done(cmd); > + blk_complete_request(cmd->request); > +} > + > /* > * Function: scsi_request_fn() > * > @@ -1582,6 +1601,7 @@ static void scsi_request_fn(struct request_queue *q) > /* > * Dispatch the command to the low-level driver. > */ > + cmd->scsi_done = scsi_done; > rtn = scsi_dispatch_cmd(cmd); > if (rtn) { > scsi_queue_insert(cmd, rtn); > Reviewed-by: Hannes Reinecke Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N?rnberg GF: J. Hawn, J. Guild, F. Imend?rffer, HRB 16746 (AG N?rnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/