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


Reply via email to