summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/zoned.c
diff options
context:
space:
mode:
authorNaohiro Aota <naohiro.aota@wdc.com>2020-11-10 20:26:13 +0900
committerDavid Sterba <dsterba@suse.com>2020-12-09 19:16:04 +0100
commita589dde0bc0bf5616e92131d803b6046573449e6 (patch)
tree6229761672e5ee35f2ea8fcb6589273a33cb71ac /fs/btrfs/zoned.c
parentf1569c4c10a1e9320b92486d73043c6138859cc5 (diff)
downloadlinux-stable-a589dde0bc0bf5616e92131d803b6046573449e6.tar.gz
linux-stable-a589dde0bc0bf5616e92131d803b6046573449e6.tar.bz2
linux-stable-a589dde0bc0bf5616e92131d803b6046573449e6.zip
btrfs: disallow mixed-bg in ZONED mode
Placing both data and metadata in a block group is impossible in ZONED mode. For data, we can allocate a space for it and write it immediately after the allocation. For metadata, however, we cannot do that, because the logical addresses are recorded in other metadata buffers to build up the trees. As a result, a data buffer can be placed after a metadata buffer, which is not written yet. Writing out the data buffer will break the sequential write rule. Check and disallow MIXED_BG with ZONED mode. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/zoned.c')
-rw-r--r--fs/btrfs/zoned.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c
index 6ef97996e185..7814f6b3ff68 100644
--- a/fs/btrfs/zoned.c
+++ b/fs/btrfs/zoned.c
@@ -252,6 +252,12 @@ int btrfs_check_zoned_mode(struct btrfs_fs_info *fs_info)
goto out;
}
+ if (btrfs_fs_incompat(fs_info, MIXED_GROUPS)) {
+ btrfs_err(fs_info, "zoned: mixed block groups not supported");
+ ret = -EINVAL;
+ goto out;
+ }
+
fs_info->zone_size = zone_size;
fs_info->max_zone_append_size = max_zone_append_size;