On 11/2/20 1:53 PM, Johannes Thumshirn wrote:
On 02/11/2020 19:23, Josef Bacik wrote:
+ /* shouldn't have super stripes in sequential zones */
+ if (zoned && nr) {
+ btrfs_err(fs_info,
+ "Zoned btrfs's block group %llu should not have super blocks",
+ cache->start);
+ return -EUCLEAN;
+ }
+
I'm very confused about this check, namely how you've been able to test without
it blowing up, which makes me feel like I'm missing something.
We _always_ call exclude_super_stripes(), and we're simply looking up the bytenr
for that block, which appears to not do anything special for zoned. This should
be looking up and failing whenever it looks for super stripes far enough out.
How are you not failing here everytime you mount the fs? Thanks,
Naohiro (or Josef and everyone else as well of cause), please correct me if I'm
wrong, but on zoned btrfs we're not supporting any RAID type. So the call to
btrfs_rmap_block() above will return 'nr = 0' (as we're always having
map->num_stripes = 1) so this won't evaluate to true.
No it should return nr == 1 in the single case. This maps physical address to a
logical address in the block group, so it could be multiple, but if that bytenr
falls inside the block group it'll return with something set. Hence my
confusion. Thanks,
Josef