[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