Re: [PATCH v11 3/3] scsi: set max_bio_bytes with queue max sectors

From: Changheun Lee
Date: Thu Jun 03 2021 - 09:02:11 EST


> > On 2021/06/02 21:29, Changheun Lee wrote:
> > > Set max_bio_bytes same with queue max sectors. It will lead to fast bio
> > > submit when bio size is over than queue max sectors. And it might be helpful
> > > to align submit bio size in some case.
> > >
> > > Signed-off-by: Changheun Lee <nanich.lee@xxxxxxxxxxx>
> > > ---
> > > drivers/scsi/scsi_lib.c | 2 ++
> > > 1 file changed, 2 insertions(+)
> > >
> > > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
> > > index 532304d42f00..f6269268b0e0 100644
> > > --- a/drivers/scsi/scsi_lib.c
> > > +++ b/drivers/scsi/scsi_lib.c
> > > @@ -1837,6 +1837,8 @@ void __scsi_init_queue(struct Scsi_Host *shost, struct request_queue *q)
> > > blk_queue_virt_boundary(q, shost->virt_boundary_mask);
> > > dma_set_max_seg_size(dev, queue_max_segment_size(q));
> > >
> > > + blk_queue_max_bio_bytes(q, queue_max_sectors(q));
> >
> > Doing this unconditionally for all scsi block devices is probably not a good
> > idea. Cannot this be moved to the LLD handling the devices that actually need it ?
>
> OK, I'll try to check more nice location in LLD.
>
> >
> > > +
> > > /*
> > > * Set a reasonable default alignment: The larger of 32-byte (dword),
> > > * which is a common minimum for HBAs, and the minimum DMA alignment,
> > >
> >
> >
> > --
> > Damien Le Moal
> > Western Digital Research
>
> Thank you,
> Changheun Lee

I think below location might be good. feedback to me please.

diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c
index 3eb54937f1d8..0f97b7d275ee 100644
--- a/drivers/scsi/ufs/ufshcd.c
+++ b/drivers/scsi/ufs/ufshcd.c
@@ -4831,6 +4831,9 @@ static int ufshcd_slave_alloc(struct scsi_device *sdev)

ufshcd_get_lu_power_on_wp_status(hba, sdev);

+ blk_queue_max_bio_bytes(sdev->request_queue,
+ queue_max_sectors(sdev->request_queue));
+
return 0;
}

Thank you,
Changheun Lee