Andreas Hindborg <andreas.hindborg@xxxxxxx> writes: > Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> writes: > >> On 11/18/22 21:47, Ming Lei wrote: >>> Anytime, there is at most one write IO for each zone, how can the single >>> write IO be re-order? >> >> If the user issues writes one at a time out of order (not aligned to the >> write pointer), mq-deadline will not help at all. The zone write locking >> will still limit write dispatching to one per zone, but the writes will fail. >> >> mq-deadline will reorder write commands in the correct lba order only if: >> - the commands are inserted as a batch (more than on request passed to >> ->insert_requests) >> - commands are inserted individually when the target zone is locked (a >> write is already being executed) >> >> This has been the semantic from the start: the block layer has no >> guarantees about the correct ordering of writes to zoned drive. What is >> guaranteed is that (1) if the user issues writes in order AND (2) >> mq-deadline is used, then writes will be dispatched in the same order to >> the device. >> >> I have not looked at the details of ublk, but from the thread, I think (1) >> is not done and (2) is missing-ish as the ublk device is not marked as zoned. > > I have a patch in the works for adding zoned storage support to ublk. It > sets up the ublk device as a zoned device. It is very much work in > progress, but it lives here [1] for now. > > I am pretty sure that I saw large writes to zoned ublk device being > split and issued to the device (same zone) with multiple outstanding > requests at the same time. I'll verify on Monday and provide a test case > if that is the case. Might be I configured the ublk device wrong? I set > it up as host managed zoned and set up zone size, max active, max open. Turns out I was not setting up the zone bitmaps. I was missing a call to blk_revalidate_disk_zones() and that took out the zone lock in the deadline scheduler. With that in place, everything works as it should. Thanks for the help everyone! Best regards, Andreas