dm zoned: ignore metadata zone in dmz_alloc_zone()
authorHannes Reinecke <hare@suse.de>
Mon, 11 May 2020 08:24:29 +0000 (10:24 +0200)
committerMike Snitzer <snitzer@redhat.com>
Wed, 20 May 2020 19:47:31 +0000 (15:47 -0400)
When looking up zones in dmz_alloc_zone() we need to ignore
metadata zones so as not to accidentally overwrite metadata.

Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
Reviewed-by: Bob Liu <bob.liu@oracle.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-zoned-metadata.c

index 1290728..939deed 100644 (file)
@@ -1907,7 +1907,13 @@ again:
                zone = NULL;
                goto again;
        }
+       if (dmz_is_meta(zone)) {
+               struct dmz_dev *dev = dmz_zone_to_dev(zmd, zone);
 
+               dmz_dev_warn(dev, "Zone %u has metadata", zone->id);
+               zone = NULL;
+               goto again;
+       }
        return zone;
 }