[dm-devel] [PATCH 2/2] dm zoned: Fix reclaim zone selection

Hannes Reinecke hare at suse.de
Fri Jun 19 08:08:13 UTC 2020


On 6/19/20 9:49 AM, Damien Le Moal wrote:
> From: Shin'ichiro Kawasaki <shinichiro.kawasaki at wdc.com>
> 
> When dm zoned has multiple devices, random zones are never selected for
> reclaim if all reserved sequential write zones are in use and no
> sequential write required zones can be selected for reclaim. This can
> lead to deadlocks as selecting a cache zone allows reclaiming a
> sequential zone, ensuring forward progress.
> 
> Fix this by always defaulting to selecting a random zone when no
> sequential write required zone can be selected.
> 
> [Damien: fix commit message]
> 
> Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki at wdc.com>
> Signed-off-by: Damien Le Moal <damien.lemoal at wdc.com>
> ---
>   drivers/md/dm-zoned-metadata.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/md/dm-zoned-metadata.c b/drivers/md/dm-zoned-metadata.c
> index 8bdf71dce7fb..c332e2c121b8 100644
> --- a/drivers/md/dm-zoned-metadata.c
> +++ b/drivers/md/dm-zoned-metadata.c
> @@ -2025,7 +2025,7 @@ static struct dm_zone *dmz_get_seq_zone_for_reclaim(struct dmz_metadata *zmd,
>   struct dm_zone *dmz_get_zone_for_reclaim(struct dmz_metadata *zmd,
>   					 unsigned int dev_idx, bool idle)
>   {
> -	struct dm_zone *zone;
> +	struct dm_zone *zone = NULL;
>   
>   	/*
>   	 * Search for a zone candidate to reclaim: 2 cases are possible.
> @@ -2038,7 +2038,7 @@ struct dm_zone *dmz_get_zone_for_reclaim(struct dmz_metadata *zmd,
>   	dmz_lock_map(zmd);
>   	if (list_empty(&zmd->reserved_seq_zones_list))
>   		zone = dmz_get_seq_zone_for_reclaim(zmd, dev_idx);
> -	else
> +	if (!zone)
>   		zone = dmz_get_rnd_zone_for_reclaim(zmd, dev_idx, idle);
>   	dmz_unlock_map(zmd);
>   
> 
Indeed.

Reviewed-by: Hannes Reinecke <hare at suse.de>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke            Teamlead Storage & Networking
hare at suse.de                               +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Felix Imendörffer





More information about the dm-devel mailing list