Re: [PATCH v2 4/6] scsi: pm8001: Use sas_task_find_rq() for tagging

From: John Garry
Date: Fri Sep 30 2022 - 06:32:56 EST


On 30/09/2022 10:17, Jinpu Wang wrote:
On Fri, Sep 30, 2022 at 11:03 AM John Garry<john.garry@xxxxxxxxxx> wrote:
The request associated with a scsi command coming from the block layer
has a unique tag, so use that when possible for getting a CCB.

Unfortunately we don't support reserved commands in the SCSI midlayer yet,
so in the interim continue to manage those tags internally (along with
tags for private commands).

Signed-off-by: John Garry<john.garry@xxxxxxxxxx>
Reviewed-by: Jack Wang<jinpu.wang@xxxxxxxxx>
nice, I would expect this can improve performance, do you have numbers?

Unfortunately my system hangs after I run for an appreciable period of time. I normally get around it by turning on much heavy debug options, but that would not be much use for performance testing.

But we did get considerable performance improvement for hisi_sas when we made the equivalent change.

Damien, if you are interested then sharing any results would be great.

BTW, I do notice that we still have this global lock in delivery path which should be removed at some stage:

int mvs_queue_command(struct sas_task *task, gfp_t gfp_flags)
{
...

spin_lock_irqsave(&mvi->lock, flags);
rc = mvs_task_prep(task, mvi, is_tmf, tmf, &pass);
...
spin_unlock_irqrestore(&mvi->lock, flags);
}

That really will affect performance...

Thanks,
John