Message ID | b4cb1394eb65fb4a28fb5eb18e905dc817199272.1605007036.git.naohiro.aota@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: zoned block device support | expand |
On 10/11/20 7:26 pm, Naohiro Aota wrote: > 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 so, 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. > > This commit check and disallow MIXED_BG with ZONED mode. > > Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com> > Reviewed-by: Josef Bacik <josef@toxicpanda.com> > --- Reviewed-by: Anand Jain <anand.jain@oracle.com> Thanks.
diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c index bd153932606e..f87d35cb9235 100644 --- a/fs/btrfs/zoned.c +++ b/fs/btrfs/zoned.c @@ -266,6 +266,13 @@ 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;