[PATCH U-BOOT v2 00/30] fs: btrfs: Re-implement btrfs support using the more widely used extent buffer base code

Marek Behún marek.behun at nic.cz
Tue Jun 23 17:05:29 CEST 2020


Hi Qu,

when applying whole series, there are several warning spewed by git:
trailing whitespaces, new lines at EOF, spaces before tab in indent.
It is possible that this is because the code is copypasted from
btrfs-progs and this issues come from there.

Also patches 26 and 27 have almost same subject line, and one contains
a typo (reolve instead of resolve).

Sometimes in commit messages you use the work "cross-port", sometimes
it is "crossport", sometimes "cross port".

I am going to do a bigger test on this series this week, and if the
new code works correctly on all tests, I shall resend your patches with
some changes to the commit messages, but I will keep you as author of
the commits, and I shall add my Reviewed-by.

Marek


On Tue, 23 Jun 2020 08:50:57 +0800
Qu Wenruo <wqu at suse.com> wrote:

> Gentle ping?
> 
> Any updates?
> Hopes this won't block the incoming new features too long.
> 
> Thanks,
> Qu
> 
> On 2020/5/25 下午2:32, Qu Wenruo wrote:
> > The branch can be fetched from github:
> > https://github.com/adam900710/u-boot/tree/btrfs_rebuild
> > 
> > The current btrfs code in U-boot is using a creative way to read
> > on-disk data.
> > It's pretty simple, involving the least amount of code, but pretty
> > different from btrfs-progs nor kernel, making it pretty hard to sync
> > code between different projects.
> > 
> > This big patchset will rework the btrfs support, to use code mostly
> > from btrfs-progs, thus all existing btrfs developers will feel at
> > home.
> > 
> > During the rework, the following new features are added:
> > - More hash algorithm support
> >   SHA256 and XXHASH support are added.
> >   BLAKE2 needs more backport, will happen in a separate patchset.
> > 
> > - The ability to read degraded RAID1
> >   Although we still only support one device btrfs, the new code base
> >   can choose from different copies already.
> >   As long as new device scan interface is provided, multi-device
> > support is pretty simple.
> > 
> > - More correct handling of compressed extents with offset
> >   For compressed extent with offset, we should read the whole
> > compressed extent, decompress them, then copy the referred part.
> > 
> > There are some more features incoming, with the new code base it
> > would be much easier to implement:
> > - Data checksum support
> >   The check would happen in read_extent_data(), btrfs-progs has the
> >   needed facility to locate data csum.
> > 
> > - BLAKE2 support
> >   Need BLAKE2 library cross ported.
> >   For btrfs it's just several lines of modification.
> > 
> > - Multi-device support along wit degraded RAID support
> >   We only need an interface to scan one device without opening it.
> >   The infrastructure is already provided in this patchset.
> > 
> > These new features would be submitted after the patchset get merged,
> > since the patchset is already large, I don't want to make it more
> > scary.
> > 
> > Although this patchset look horribly large, most of them are code
> > copy from btrfs-progs.
> > E.g extent-cache.[ch], rbtree-utils.[ch], btrfs_btree.h.
> > And ctree.h has over 1000 lines copied just for various accessors.
> > 
> > While for disk-io.[ch] and volumes-io.[ch], they have some small
> > modifications to adapt the interface of U-boot.
> > E.g. btrfs_device::fd is replace with blkdev_desc and
> > disk_partition_t.
> > 
> > The new code for U-boot are related to the following functions:
> > - btrfs_readlink()
> > - btrfs_lookup_path()
> > - btrfs_read_extent_inline()
> > - btrfs_read_extent_reg()
> > - lookup_data_extent()
> > - btrfs_file_read()
> > - btrfs_list_subvols()
> > 
> > Thus only the following 5 patches need extra review attention:
> > - Patch 0017
> > - Patch 0019
> > - Patch 0023
> > - Patch 0024
> > - Patch 0025~0028
> > 
> > Changelog:
> > v2:
> > - Implement btrfs_list_subvols()
> >   In v1 it's completely removed thus would cause problem if
> > btrfsolume command is compiled in.
> > 
> > - Rebased to latest master
> >   Only minor conflicts due to header changes.
> > 
> > - Allow next_legnth() to return value > BTRFS_NAME_LEN
> > 
> > Qu Wenruo (30):
> >   fs: btrfs: Sync btrfs_btree.h from kernel
> >   fs: btrfs: Add More checksum algorithm support to btrfs
> >   fs: btrfs: Cross-port btrfs_read_dev_super() from btrfs-progs
> >   fs: btrfs: Cross-port rbtree-utils from btrfs-progs
> >   fs: btrfs: Cross-port extent-cache.[ch] from btrfs-progs
> >   fs: btrfs: Cross-port extent-io.[ch] from btrfs-progs
> >   fs: btrfs: Cross port structure accessor into ctree.h
> >   fs: btrfs: Cross port volumes.[ch] from btrfs-progs
> >   fs: btrfs: Crossport read_tree_block() from btrfs-progs
> >   fs: btrfs: Rename struct btrfs_path to struct __btrfs_path
> >   fs: btrfs: Rename btrfs_root to __btrfs_root
> >   fs: btrfs: Cross port struct btrfs_root to ctree.h
> >   fs: btrfs: Crossport btrfs_search_slot() from btrfs-progs
> >   fs: btrfs: Crossport btrfs_read_sys_array() and
> >     btrfs_read_chunk_tree()
> >   fs: btrfs: Crossport open_ctree_fs_info()
> >   fs: btrfs: Rename path resolve related functions to avoid name
> >     conflicts
> >   fs: btrfs: Use btrfs_readlink() to implement __btrfs_readlink()
> >   fs: btrfs: inode: Allow next_length() to return value >
> > BTRFS_NAME_LEN fs: btrfs: Implement btrfs_lookup_path()
> >   fs: btrfs: Use btrfs_iter_dir() to replace btrfs_readdir()
> >   fs: btrfs: Use btrfs_lookup_path() to implement btrfs_exists() and
> >     btrfs_size()
> >   fs: btrfs: Rename btrfs_file_read() and its callees to avoid name
> >     conflicts
> >   fs: btrfs: Introduce btrfs_read_extent_inline() and
> >     btrfs_read_extent_reg()
> >   fs: btrfs: Introduce lookup_data_extent() for later use
> >   fs: btrfs: Implement btrfs_file_read()
> >   fs: btrfs: Introduce function to reolve path in one subvolume
> >   fs: btrfs: Introduce function to resolve the path of one subvolume
> >   fs: btrfs: Imeplement btrfs_list_subvols() using new
> > infrastructure fs: btrfs: Cleanup the old implementation
> >   MAINTAINERS: Add btrfs mail list
> > 
> >  MAINTAINERS                         |    1 +
> >  fs/btrfs/Makefile                   |    5 +-
> >  fs/btrfs/btrfs.c                    |  319 +++---
> >  fs/btrfs/btrfs.h                    |   67 +-
> >  fs/btrfs/btrfs_tree.h               |  766 --------------
> >  fs/btrfs/chunk-map.c                |  178 ----
> >  fs/btrfs/common/rbtree-utils.c      |   83 ++
> >  fs/btrfs/common/rbtree-utils.h      |   53 +
> >  fs/btrfs/compat.h                   |   88 ++
> >  fs/btrfs/compression.c              |    2 +-
> >  fs/btrfs/crypto/hash.c              |   55 +
> >  fs/btrfs/crypto/hash.h              |   17 +
> >  fs/btrfs/ctree.c                    |  866 ++++++++++++----
> >  fs/btrfs/ctree.h                    | 1453
> > ++++++++++++++++++++++----- fs/btrfs/dir-item.c                 |
> > 192 ++-- fs/btrfs/disk-io.c                  | 1063
> > ++++++++++++++++++++ fs/btrfs/disk-io.h                  |   50 +
> >  fs/btrfs/extent-cache.c             |  318 ++++++
> >  fs/btrfs/extent-cache.h             |  104 ++
> >  fs/btrfs/extent-io.c                |  848 ++++++++++++++--
> >  fs/btrfs/extent-io.h                |  164 +++
> >  fs/btrfs/hash.c                     |   38 -
> >  fs/btrfs/inode.c                    |  892 +++++++++++-----
> >  fs/btrfs/kernel-shared/btrfs_tree.h | 1333 ++++++++++++++++++++++++
> >  fs/btrfs/root-tree.c                |   47 +
> >  fs/btrfs/root.c                     |   92 --
> >  fs/btrfs/subvolume.c                |  310 ++++--
> >  fs/btrfs/super.c                    |  257 -----
> >  fs/btrfs/volumes.c                  | 1173 +++++++++++++++++++++
> >  fs/btrfs/volumes.h                  |  204 ++++
> >  30 files changed, 8537 insertions(+), 2501 deletions(-)
> >  delete mode 100644 fs/btrfs/btrfs_tree.h
> >  delete mode 100644 fs/btrfs/chunk-map.c
> >  create mode 100644 fs/btrfs/common/rbtree-utils.c
> >  create mode 100644 fs/btrfs/common/rbtree-utils.h
> >  create mode 100644 fs/btrfs/compat.h
> >  create mode 100644 fs/btrfs/crypto/hash.c
> >  create mode 100644 fs/btrfs/crypto/hash.h
> >  create mode 100644 fs/btrfs/disk-io.c
> >  create mode 100644 fs/btrfs/disk-io.h
> >  create mode 100644 fs/btrfs/extent-cache.c
> >  create mode 100644 fs/btrfs/extent-cache.h
> >  create mode 100644 fs/btrfs/extent-io.h
> >  delete mode 100644 fs/btrfs/hash.c
> >  create mode 100644 fs/btrfs/kernel-shared/btrfs_tree.h
> >  create mode 100644 fs/btrfs/root-tree.c
> >  delete mode 100644 fs/btrfs/root.c
> >  delete mode 100644 fs/btrfs/super.c
> >  create mode 100644 fs/btrfs/volumes.c
> >  create mode 100644 fs/btrfs/volumes.h
> >   



More information about the U-Boot mailing list