On 11/6/20 4:01 AM, Damien Le Moal wrote: > Commit aa1c09cb65e2 ("null_blk: Fix locking in zoned mode") changed > zone locking to using the potentially sleeping wait_on_bit_io() > function. This is acceptable when memory backing is enabled as the > device queue is in that case marked as blocking, but this triggers a > scheduling while in atomic context with memory backing disabled. > > Fix this by relying solely on the device zone spinlock for zone > information protection without temporarily releasing this lock around > null_process_cmd() execution in null_zone_write(). This is OK to do > since when memory backing is disabled, command processing does not > block and the memory backing lock nullb->lock is unused. This solution > avoids the overhead of having to mark a zoned null_blk device queue as > blocking when memory backing is unused. > > This patch also adds comments to the zone locking code to explain the > unusual locking scheme. Applied for 5.10, though I do agree that the locking for non-memory backed should go. The whole point of null_blk is to be able to benchmark the underlying layers, and if we end up having null_blk be the limiting factor, then it's pointless. -- Jens Axboe