Re: [RFC ONLY 0/8] btrfs: introduce raid-stripe-tree

Nikolay Borisov
2022-05-17T07:23:18Z

On 16.05.22 г. 17:31 ч., Johannes Thumshirn wrote:
> Introduce a raid-stripe-tree to record writes in a RAID environment.
>
> In essence this adds another address translation layer between the logical
> and the physical addresses in btrfs and is designed to close two gaps. The
> first is the ominous RAID-write-hole we suffer from with RAID5/6 and the
> second one is the inability of doing RAID with zoned block devices due to the
> constraints we have with REQ_OP_ZONE_APPEND writes.
>
> Thsi is an RFC/PoC only which just shows how the code will look like for a
> zoned RAID1. Its sole purpose is to facilitate design reviews and is not
> intended to be merged yet. Or if merged to be used on an actual file-system.
>
> Johannes Thumshirn (8):
> btrfs: add raid stripe tree definitions
> btrfs: move btrfs_io_context to volumes.h
> btrfs: read raid-stripe-tree from disk
> btrfs: add boilerplate code to insert raid extent
> btrfs: add code to delete raid extent
> btrfs: add code to read raid extent
> btrfs: zoned: allow zoned RAID1
> btrfs: add raid stripe tree pretty printer
>
> fs/btrfs/Makefile | 2 +-
> fs/btrfs/ctree.c | 1 +
> fs/btrfs/ctree.h | 29 ++++
> fs/btrfs/disk-io.c | 12 ++
> fs/btrfs/extent-tree.c | 9 ++
> fs/btrfs/file.c | 1 -
> fs/btrfs/print-tree.c | 21 +++
> fs/btrfs/raid-stripe-tree.c | 251 ++++++++++++++++++++++++++++++++
> fs/btrfs/raid-stripe-tree.h | 39 +++++
> fs/btrfs/volumes.c | 44 +++++-
> fs/btrfs/volumes.h | 93 ++++++------
> fs/btrfs/zoned.c | 39 +++++
> include/uapi/linux/btrfs.h | 1 +
> include/uapi/linux/btrfs_tree.h | 17 +++
> 14 files changed, 509 insertions(+), 50 deletions(-)
> create mode 100644 fs/btrfs/raid-stripe-tree.c
> create mode 100644 fs/btrfs/raid-stripe-tree.h
>

So if we choose to go with raid stripe tree this means we won't need the
raid56j code that Qu is working on ? So it's important that these two
work streams are synced so we don't duplicate effort, right?