Otherwise it can create unaligned writes on zoned devices. Fixes: a805a4fa4fa3 ("block: introduce zone_write_granularity limit") Signed-off-by: Christoph Hellwig <hch@xxxxxx> --- block/blk-merge.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/block/blk-merge.c b/block/blk-merge.c index d813d799cee7..d6895859a2fb 100644 --- a/block/blk-merge.c +++ b/block/blk-merge.c @@ -358,7 +358,8 @@ int bio_split_rw_at(struct bio *bio, const struct queue_limits *lim, * split size so that each bio is properly block size aligned, even if * we do not use the full hardware limits. */ - bytes = ALIGN_DOWN(bytes, lim->logical_block_size); + bytes = ALIGN_DOWN(bytes, lim->zone_write_granularity ? + lim->zone_write_granularity : lim->logical_block_size); /* * Bio splitting may cause subtle trouble such as hang when doing sync -- 2.45.2