Messages in this thread | | | Date | Wed, 09 Jul 2014 13:14:02 +0200 | From | Hannes Reinecke <> | Subject | Re: [PATCH 04/14] scsi: set ->scsi_done before calling scsi_dispatch_cmd |
| |
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 <hch@lst.de> > --- > 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 <trace/events/scsi.h> > > -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 <scsi/scsi_eh.h> > #include <scsi/scsi_host.h> > > +#include <trace/events/scsi.h> > + > #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 <hare@suse.de>
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/
| |