Skip to content

Commit b38c0ad

Browse files
kawasakisnitm
authored andcommitted
dm zoned: Fix metadata zone size check
When dm zoned has multiple devices, metadata is on the cache device, not in random zones of the zoned devices. Then the number of metadata zones shall be checked with the number of cache zones, not random zones. Fixes: 34f5aff ("dm zoned: separate random and cache zones") Signed-off-by: Shin'ichiro Kawasaki <[email protected]> Reviewed-by: Damien Le Moal <[email protected]> Signed-off-by: Mike Snitzer <[email protected]>
1 parent e003443 commit b38c0ad

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/md/dm-zoned-metadata.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1078,7 +1078,8 @@ static int dmz_check_sb(struct dmz_metadata *zmd, struct dmz_sb *dsb,
10781078
nr_meta_zones = (le32_to_cpu(sb->nr_meta_blocks) + zmd->zone_nr_blocks - 1)
10791079
>> zmd->zone_nr_blocks_shift;
10801080
if (!nr_meta_zones ||
1081-
nr_meta_zones >= zmd->nr_rnd_zones) {
1081+
(zmd->nr_devs <= 1 && nr_meta_zones >= zmd->nr_rnd_zones) ||
1082+
(zmd->nr_devs > 1 && nr_meta_zones >= zmd->nr_cache_zones)) {
10821083
dmz_dev_err(dev, "Invalid number of metadata blocks");
10831084
return -ENXIO;
10841085
}

0 commit comments

Comments
 (0)