dm zoned: prefer full zones for reclaim
Prefer full zones when selecting the next zone for reclaim. Signed-off-by: Hannes Reinecke <hare@suse.de> Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
This commit is contained in:
Родитель
69875d443b
Коммит
2094045fe5
|
@ -1941,7 +1941,7 @@ static struct dm_zone *dmz_get_rnd_zone_for_reclaim(struct dmz_metadata *zmd,
|
||||||
unsigned int idx, bool idle)
|
unsigned int idx, bool idle)
|
||||||
{
|
{
|
||||||
struct dm_zone *dzone = NULL;
|
struct dm_zone *dzone = NULL;
|
||||||
struct dm_zone *zone;
|
struct dm_zone *zone, *last = NULL;
|
||||||
struct list_head *zone_list;
|
struct list_head *zone_list;
|
||||||
|
|
||||||
/* If we have cache zones select from the cache zone list */
|
/* If we have cache zones select from the cache zone list */
|
||||||
|
@ -1958,6 +1958,13 @@ static struct dm_zone *dmz_get_rnd_zone_for_reclaim(struct dmz_metadata *zmd,
|
||||||
dzone = zone->bzone;
|
dzone = zone->bzone;
|
||||||
if (dzone->dev->dev_idx != idx)
|
if (dzone->dev->dev_idx != idx)
|
||||||
continue;
|
continue;
|
||||||
|
if (!last) {
|
||||||
|
last = dzone;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (last->weight < dzone->weight)
|
||||||
|
continue;
|
||||||
|
dzone = last;
|
||||||
} else
|
} else
|
||||||
dzone = zone;
|
dzone = zone;
|
||||||
if (dmz_lock_zone_reclaim(dzone))
|
if (dmz_lock_zone_reclaim(dzone))
|
||||||
|
|
Загрузка…
Ссылка в новой задаче