On Wed, 25 Jun 2025, Damien Le Moal wrote: > On 6/25/25 19:19, Mikulas Patocka wrote: > > > > > > On Wed, 25 Jun 2025, Damien Le Moal wrote: > > > >> + bool wrt = op_is_write(bio_op(bio)); > >> + > >> + if (wrt) { > >> + /* > >> + * For zoned devices, splitting write operations creates the > >> + * risk of deadlocking queue freeze operations with zone write > >> + * plugging BIO work when the reminder of a split BIO is > >> + * issued. So always allow the entire BIO to proceed. > >> + */ > >> + if (ti->emulate_zone_append) > >> + return bio_sectors(bio); > > > > The overrun may still happen (if the user changes the dm table while some > > bio is in progress) and if it happens, you should terminate the bio with > > DM_MAPIO_KILL (like it was in my original patch). > > I am confused... Overrun against what ? We are now completely ignoring the > max_write_size limit so even if the user changes it, that will not affect the > BIO processing. If you are referring to an overrun against the zoned device > max_hw_sectors limit, it is not possible since changing limits is done with the > DM device queue frozen, so we are guaranteed that there will be no BIO in-flight. > > I am not sure about what kind of table change you are thinking of, but at the > very least, dm_table_supports_size_change() ensure that there cannot be any > device size change for a zoned DM device. And given the above point about limits > changes, I do not see how a table change can affect the BIO execution. > > Do you have a specific example in mind ? What happens if a bio that is larger than "BIO_MAX_VECS << PAGE_SHIFT" enters dm_split_and_process_bio? Where will the bio be split? I don't see it, but maybe I'm missing something. Mikulas