On 2/1/24 23:30, Damien Le Moal wrote:
The next plugged BIO is unplugged and issued once the write request completes.
So this patch series is orthogonal to my patch series that implements zoned write pipelining?
This mechanism allows to: - Untangles zone write ordering from block IO schedulers. This allows
Untangles -> Untangle
Zone write plugging is implemented using struct blk_zone_wplug. This structurei includes a spinlock, a BIO list and a work structure to
structurei -> structure
This ensures that at any time, at most one request (blk-mq devices) or one BIO (BIO-based devices) are being executed for any zone. The handling of zone write plug using a per-zone plug spinlock maximizes parrallelism and device usage by allowing multiple zones to be writen
parrallelism -> parallelism
simultaneously without lock contention.
This is not correct. Device usage is not maximized since zone write bios are serialized. Pipelining zoned writes results in higher device utilization.
+ /* + * For BIOs handled through a zone write plugs, signal the end of the
plugs -> plug
+#define blk_zone_wplug_lock(zwplug, flags) \ + spin_lock_irqsave(&zwplug->lock, flags) + +#define blk_zone_wplug_unlock(zwplug, flags) \ + spin_unlock_irqrestore(&zwplug->lock, flags)
Hmm ... these macros may make code harder to read rather than improve readability of the code. Thanks, Bart.