On 10/21/22 6:56 PM, Wenchao Hao wrote: > If scsi_dispatch_cmd() failed, the scsi command did not send to disks, > so it would never done from LLDs. > > scsi scsi_queue_rq() would return BLK_STS_RESOURCE if > scsi_dispatch_cmd() failed, the related request would be requeued, and > the timeout of this request would not fired any more, so no one > would increase iodone_cnt which matches with this increase of > iorequest_cnt. > > Signed-off-by: Wenchao Hao <haowenchao@xxxxxxxxxx> > --- > drivers/scsi/scsi_lib.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index 8b89fab7c420..71edb9ffbe16 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -1469,8 +1469,6 @@ static int scsi_dispatch_cmd(struct scsi_cmnd *cmd) > struct Scsi_Host *host = cmd->device->host; > int rtn = 0; > > - atomic_inc(&cmd->device->iorequest_cnt); > -> /* check if the device is still usable */ > if (unlikely(cmd->device->sdev_state == SDEV_DEL)) { > /* in SDEV_DEL we error all commands. DID_NO_CONNECT > @@ -1764,6 +1762,7 @@ static blk_status_t scsi_queue_rq(struct blk_mq_hw_ctx *hctx, > goto out_dec_host_busy; > } > > + atomic_inc(&cmd->device->iorequest_cnt); > return BLK_STS_OK; > > out_dec_host_busy: Reviewed-by: Mike Christie <michael.christie@xxxxxxxxxx>