On Tue, 2025-06-17 at 00:05 +0800, Ming Lei wrote: > Set max_segment_size as UINT_MAX explicitly: > > - storvrc uses virt_boundary to define `segment` > > - strovrc does not define max_segment_size > > So define max_segment_size as UINT_MAX, otherwise __blk_rq_map_sg() > takes > default 64K max segment size and splits one virtual segment into two > parts, > then breaks virt_boundary limit. > > Before commit ec84ca4025c0 ("scsi: block: Remove now unused queue > limits helpers"), > max segment size is set as UINT_MAX in case that virt_boundary is > defined. > > Cc: "K. Y. Srinivasan" <kys@xxxxxxxxxxxxx> > Cc: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx> > Cc: Wei Liu <wei.liu@xxxxxxxxxx> > Cc: Christoph Hellwig <hch@xxxxxx> > Cc: Ewan D. Milne <emilne@xxxxxxxxxx> > Cc: Laurence Oberman <loberman@xxxxxxxxxx> > Fixes: ec84ca4025c0 ("scsi: block: Remove now unused queue limits > helpers") > Signed-off-by: Ming Lei <ming.lei@xxxxxxxxxx> > --- > drivers/scsi/storvsc_drv.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c > index 2e6b2412d2c9..1e7ad85f4ba3 100644 > --- a/drivers/scsi/storvsc_drv.c > +++ b/drivers/scsi/storvsc_drv.c > @@ -1897,6 +1897,7 @@ static struct scsi_host_template scsi_driver = > { > .no_write_same = 1, > .track_queue_depth = 1, > .change_queue_depth = storvsc_change_queue_depth, > + .max_segment_size = 0xffffffff, > }; > > enum { Hello For what it is worth, I tested Ming's patch in our lab and at our customers and it fixed a very serious corruption in Oracle REDO logs. Tested-by: Laurence Oberman <loberman@xxxxxxxxxx> I will test what Christoph share dbut our initial way to deal with this in RHEL will be the point fix in storvsc as its a critical issue needing an urgent fix. Thanks Laurence