Re: [PATCH v3 06/14] block: Unhash a zone write plug only if needed

Hannes Reinecke
2024-05-02T06:05:42Z

On 5/1/24 13:08, Damien Le Moal wrote:
> Fix disk_remove_zone_wplug() to ensure that a zone write plug already
> removed from a disk hash table of zone write plugs is not removed
> again. Do this by checking the BLK_ZONE_WPLUG_UNHASHED flag of the plug
> and calling hlist_del_init_rcu() only if the flag is not set.
>
> Furthermore, since BIO completions can happen at any time, that is,
> decrementing of the zone write plug reference count can happen at any
> time, make sure to use disk_put_zone_wplug() instead of atomic_dec() to
> ensure that the zone write plug is freed when its last reference is
> dropped. In order to do this, disk_remove_zone_wplug() is moved after
> the definition of disk_put_zone_wplug(). disk_should_remove_zone_wplug()
> is moved as well to keep it together with disk_remove_zone_wplug().
>
> To be consistent with this change, add a check in disk_put_zone_wplug()
> to ensure that a zone write plug being freed was already removed from
> the disk hash table.
>
> Fixes: dd291d77cc90 ("block: Introduce zone write plugging")
> Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
> Reviewed-by: Christoph Hellwig <hch@lst.de>
> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> ---
> block/blk-zoned.c | 55 +++++++++++++++++++++++++++--------------------
> 1 file changed, 32 insertions(+), 23 deletions(-)
>
Reviewed-by: Hannes Reinecke <hare@suse.de>

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare@suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich