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

From: Bart Van Assche
Date: Wed Jun 02 2021 - 15:05:28 EST


On 6/2/21 5:10 AM, 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));
> +
> /*
> * Set a reasonable default alignment: The larger of 32-byte (dword),
> * which is a common minimum for HBAs, and the minimum DMA alignment,

Has this patch been tested with dm-crypt on top of a SCSI device? I'm
concerned that this patch will trigger data corruption with dm-crypt on
top because the above change will make the following dm-crypt code fail
for a sufficiently large bio:

bio_add_page(clone, page, len, 0);

When testing dm-crypt on top of this patch series, please change the
above dm-crypt code into the following before running any tests:

WARN_ON(bio_add_page(clone, page, len, 0) < len);

Thanks,

Bart.