On Wed, Nov 25, 2020 at 09:59:40AM +0000, Graham Cobb wrote:
On 25/11/2020 01:57, Naohiro Aota wrote:
On Tue, Nov 24, 2020 at 07:36:18PM +0800, Anand Jain wrote:
On 10/11/20 7:26 pm, Naohiro Aota wrote:
This commit implements a zoned chunk/dev_extent allocator. The zoned
allocator aligns the device extents to zone boundaries, so that a zone
reset affects only the device extent and does not change the state of
blocks in the neighbor device extents.
Also, it checks that a region allocation is not overlapping any of the
super block zones, and ensures the region is empty.
Signed-off-by: Naohiro Aota <naohiro.aota@xxxxxxx>
Looks good.
Chunks and stripes are aligned to the zone_size. I guess zone_size won't
change after the block device has been formatted with it? For testing,
what if the device image is dumped onto another zoned device with a
different zone_size?
Zone size is a drive characteristic, so it never change on the same device.
Dump/restore on another device with a different zone_size should be banned,
because we cannot ensure device extents are aligned to zone boundaries.
Does this mean 'btrfs replace' is banned as well? Or is it allowed to a
similar-enough device? What about 'add' followed by 'remove'?
Replacing is allowed if the zone size is the same. Adding a disk is the
same. This restriction is checked in btrfs_init_new_device() (patch 5).