[PATCH v3 09/30] block: Pre-allocate zone write plugs
Bart Van Assche
bvanassche at acm.org
Thu Mar 28 15:25:18 PDT 2024
On 3/27/24 9:30 PM, Christoph Hellwig wrote:
> Please verify my idea carefully, but I think we can do without the
> RCU grace period and thus the rcu_head in struct blk_zone_wplug:
>
> When the zwplug is removed from the hash, we set the
> BLK_ZONE_WPLUG_UNHASHED flag under disk->zone_wplugs_lock. Once
> caller see that flag any lookup that modifies the structure
> will fail/wait. If we then just clear BLK_ZONE_WPLUG_UNHASHED after
> the final put in disk_put_zone_wplug when we know the bio list is
> empty and no other state is kept (if there might be flags left
> we should clear them before), it is perfectly fine for the
> zwplug to get reused for another zone at this point.
Hi Christoph,
I don't think this is allowed without grace period between kfree()
and reusing a zwplug because another thread might be iterating over
the hlist while only holding an RCU reader lock.
Thanks,
Bart.
More information about the Linux-nvme
mailing list