> From: linux-scsi-owner@xxxxxxxxxxxxxxx [mailto:linux-scsi- > owner@xxxxxxxxxxxxxxx] On Behalf Of Chetan Loke > Sent: February 14, 2012 9:48 AM > To: JBottomley@xxxxxxxxxxxxx; linux-scsi@xxxxxxxxxxxxxxx; > andrew.vasquez@xxxxxxxxxx > Cc: linux-driver@xxxxxxxxxx; loke.chetan@xxxxxxxxx > Subject: [PATCH 1/1] qla2xxx: Micro optimization in queuecommand > handler > > Optimized queuecommand handler's to eliminate double head-room checks. > The checks are moved inside the 1st if-loop otherwise you would end up > checking twice when there is enough head room. > > Signed-off-by: Chetan Loke <loke.chetan@xxxxxxxxx> > --- Ping... > drivers/scsi/qla2xxx/qla_iocb.c | 19 +++++++++---------- > 1 files changed, 9 insertions(+), 10 deletions(-) > > diff --git a/drivers/scsi/qla2xxx/qla_iocb.c > b/drivers/scsi/qla2xxx/qla_iocb.c > index 55a9676..825a046 100644 > --- a/drivers/scsi/qla2xxx/qla_iocb.c > +++ b/drivers/scsi/qla2xxx/qla_iocb.c > @@ -383,9 +383,10 @@ qla2x00_start_scsi(srb_t *sp) > else > req->cnt = req->length - > (req->ring_index - cnt); > + /* If still no head room then bail out */ > + if (req->cnt < (req_cnt + 2)) > + goto queuing_error; > } > - if (req->cnt < (req_cnt + 2)) > - goto queuing_error; > > /* Build command packet */ > req->current_outstanding_cmd = handle; > @@ -1502,9 +1503,9 @@ qla24xx_start_scsi(srb_t *sp) > else > req->cnt = req->length - > (req->ring_index - cnt); > + if (req->cnt < (req_cnt + 2)) > + goto queuing_error; > } > - if (req->cnt < (req_cnt + 2)) > - goto queuing_error; > > /* Build command packet. */ > req->current_outstanding_cmd = handle; > @@ -1717,11 +1718,10 @@ qla24xx_dif_start_scsi(srb_t *sp) > else > req->cnt = req->length - > (req->ring_index - cnt); > + if (req->cnt < (req_cnt + 2)) > + goto queuing_error; > } > > - if (req->cnt < (req_cnt + 2)) > - goto queuing_error; > - > status |= QDSS_GOT_Q_SPACE; > > /* Build header part of command packet (excluding the OPCODE). */ > @@ -2349,11 +2349,10 @@ sufficient_dsds: > else > req->cnt = req->length - > (req->ring_index - cnt); > + if (req->cnt < (req_cnt + 2)) > + goto queuing_error; > } > > - if (req->cnt < (req_cnt + 2)) > - goto queuing_error; > - > ctx = sp->ctx = mempool_alloc(ha->ctx_mempool, GFP_ATOMIC); > if (!sp->ctx) { > ql_log(ql_log_fatal, vha, 0x3010, > -- > 1.7.5.2 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-scsi" > in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html