On Wed, Jun 29, 2022 at 02:04:47PM -0400, Eric Farman wrote: > s390 dasd > > This made me think to change my rootfs, and of course the problem goes > away once on something like a SCSI volume. > > So crawling through the dasd (instead of virtio) driver and I finally > find the point where a change to dma_alignment (which you mentioned > earlier) would actually fit. > > Such a change fixes this for me, so I'll run it by our DASD guys. > Thanks for your help and patience. I'm assuming there's some driver or device requirement that's making this necessary. Is the below driver change what you're looking for? If so, I think you might want this regardless of this direct-io patch just because other interfaces like blk_rq_map_user_iov() and blk_rq_aligned() align to it. --- diff --git a/drivers/s390/block/dasd_fba.c b/drivers/s390/block/dasd_fba.c index 60be7f7bf2d1..5c79fb02cded 100644 --- a/drivers/s390/block/dasd_fba.c +++ b/drivers/s390/block/dasd_fba.c @@ -780,6 +780,7 @@ static void dasd_fba_setup_blk_queue(struct dasd_block *block) /* With page sized segments each segment can be translated into one idaw/tidaw */ blk_queue_max_segment_size(q, PAGE_SIZE); blk_queue_segment_boundary(q, PAGE_SIZE - 1); + blk_queue_dma_alignment(q, PAGE_SIZE - 1); q->limits.discard_granularity = logical_block_size; --