From: Tom Rini <trini@konsulko.com>
To: "Marek Behún" <marek.behun@nic.cz>
Cc: u-boot@lists.denx.de,
"Alberto Sánchez Molero" <alsamolero@gmail.com>,
"Marek Vasut" <marex@denx.de>,
"Pierre Bourdon" <delroth@gmail.com>,
"Simon Glass" <sjg@chromium.org>,
"Yevgeny Popovych" <yevgenyp@pointgrab.com>,
linux-btrfs@vger.kernel.org
Subject: Re: [PATCH U-BOOT v3 00/30] PLEASE TEST fs: btrfs: Re-implement btrfs support using code from btrfs-progs
Date: Tue, 8 Sep 2020 14:18:17 -0400 [thread overview]
Message-ID: <20200908181817.GN7259@bill-the-cat> (raw)
In-Reply-To: <20200624160316.5001-1-marek.behun@nic.cz>
[-- Attachment #1: Type: text/plain, Size: 6186 bytes --]
On Wed, Jun 24, 2020 at 06:02:46PM +0200, Marek Behún wrote:
> Hello,
>
> this is a cleaned up version of Qu's patches that reimplements U-Boot's
> btrfs driver with code from btrfs-progs.
>
> I have tested this series, found and corrected one bug (failure when
> accesing files via symlinks), and it looks it is working now, but I
> would like more people to do some testing.
>
> There are a lot of checkpatch warnings and errors left, I shall fix
> this in the future.
>
> Marek
>
> Changes since v2:
> - fixed btrfs_lookup_path() in patch 19 to correctly handle symlinks
> - commit messages were updated some
> - for example they used the word "crossport" in 3 formats:
> "crossport", "cross-port" and "cross port", this was changed
> to "crossport"
> - corrected some typos
> - some English sentences were a bit weirdly written
> - fixed 2 compiler warnings (one use of maybe uninitialized variable and
> one printf specifier warning)
> - indentation in some places was wrong (usage of 8 spaces instead of a
> tab, for example)
> - added my Reviewed-by
> - the last patch, adding btrfs mailing list to MAINTAINRES, also adds
> Qu as designated reviewer, so that people add him to Cc when they send
> patches
>
> Changes since v1:
> - 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
>
> Below is Qu's explanation, from cover letter of v2:
>
> 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()
>
> Qu Wenruo (30):
> fs: btrfs: Sync btrfs_btree.h from kernel
> fs: btrfs: Add more checksum algorithms
> fs: btrfs: Crossport btrfs_read_dev_super() from btrfs-progs
> fs: btrfs: Crossport rbtree-utils from btrfs-progs
> fs: btrfs: Crossport extent-cache.[ch] from btrfs-progs
> fs: btrfs: Crossport extent-io.[ch] from btrfs-progs
> fs: btrfs: Crossport structure accessor into ctree.h
> fs: btrfs: Crossport 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: Crossport 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() from btrfs-progs
> 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 resolve 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 mailing list and myself as reviewer
With the changes I followed up on to specific patches, the series has
been applied to u-boot/next, thanks!
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Tom Rini <trini@konsulko.com>
To: u-boot@lists.denx.de
Subject: [PATCH U-BOOT v3 00/30] PLEASE TEST fs: btrfs: Re-implement btrfs support using code from btrfs-progs
Date: Tue, 8 Sep 2020 14:18:17 -0400 [thread overview]
Message-ID: <20200908181817.GN7259@bill-the-cat> (raw)
In-Reply-To: <20200624160316.5001-1-marek.behun@nic.cz>
On Wed, Jun 24, 2020 at 06:02:46PM +0200, Marek Beh?n wrote:
> Hello,
>
> this is a cleaned up version of Qu's patches that reimplements U-Boot's
> btrfs driver with code from btrfs-progs.
>
> I have tested this series, found and corrected one bug (failure when
> accesing files via symlinks), and it looks it is working now, but I
> would like more people to do some testing.
>
> There are a lot of checkpatch warnings and errors left, I shall fix
> this in the future.
>
> Marek
>
> Changes since v2:
> - fixed btrfs_lookup_path() in patch 19 to correctly handle symlinks
> - commit messages were updated some
> - for example they used the word "crossport" in 3 formats:
> "crossport", "cross-port" and "cross port", this was changed
> to "crossport"
> - corrected some typos
> - some English sentences were a bit weirdly written
> - fixed 2 compiler warnings (one use of maybe uninitialized variable and
> one printf specifier warning)
> - indentation in some places was wrong (usage of 8 spaces instead of a
> tab, for example)
> - added my Reviewed-by
> - the last patch, adding btrfs mailing list to MAINTAINRES, also adds
> Qu as designated reviewer, so that people add him to Cc when they send
> patches
>
> Changes since v1:
> - 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
>
> Below is Qu's explanation, from cover letter of v2:
>
> 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()
>
> Qu Wenruo (30):
> fs: btrfs: Sync btrfs_btree.h from kernel
> fs: btrfs: Add more checksum algorithms
> fs: btrfs: Crossport btrfs_read_dev_super() from btrfs-progs
> fs: btrfs: Crossport rbtree-utils from btrfs-progs
> fs: btrfs: Crossport extent-cache.[ch] from btrfs-progs
> fs: btrfs: Crossport extent-io.[ch] from btrfs-progs
> fs: btrfs: Crossport structure accessor into ctree.h
> fs: btrfs: Crossport 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: Crossport 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() from btrfs-progs
> 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 resolve 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 mailing list and myself as reviewer
With the changes I followed up on to specific patches, the series has
been applied to u-boot/next, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200908/104c6c31/attachment.sig>
next prev parent reply other threads:[~2020-09-08 18:26 UTC|newest]
Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-06-24 16:02 [PATCH U-BOOT v3 00/30] PLEASE TEST fs: btrfs: Re-implement btrfs support using code from btrfs-progs Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 01/30] fs: btrfs: Sync btrfs_btree.h from kernel Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 02/30] fs: btrfs: Add more checksum algorithms Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 03/30] fs: btrfs: Crossport btrfs_read_dev_super() from btrfs-progs Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-09-07 22:26 ` Tom Rini
2020-09-07 22:26 ` Tom Rini
2020-09-07 23:58 ` Marek Behun
2020-09-07 23:58 ` Marek Behun
2020-06-24 16:02 ` [PATCH U-BOOT v3 04/30] fs: btrfs: Crossport rbtree-utils " Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 05/30] fs: btrfs: Crossport extent-cache.[ch] " Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 06/30] fs: btrfs: Crossport extent-io.[ch] " Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 07/30] fs: btrfs: Crossport structure accessor into ctree.h Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 08/30] fs: btrfs: Crossport volumes.[ch] from btrfs-progs Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 09/30] fs: btrfs: Crossport read_tree_block() " Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 10/30] fs: btrfs: Rename struct btrfs_path to struct __btrfs_path Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 11/30] fs: btrfs: Rename btrfs_root to __btrfs_root Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 12/30] fs: btrfs: Crossport struct btrfs_root to ctree.h Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:02 ` [PATCH U-BOOT v3 13/30] fs: btrfs: Crossport btrfs_search_slot() from btrfs-progs Marek Behún
2020-06-24 16:02 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 14/30] fs: btrfs: Crossport btrfs_read_sys_array() and btrfs_read_chunk_tree() Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 15/30] fs: btrfs: Crossport open_ctree_fs_info() from btrfs-progs Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 16/30] fs: btrfs: Rename path resolve related functions to avoid name conflicts Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 17/30] fs: btrfs: Use btrfs_readlink() to implement __btrfs_readlink() Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 18/30] fs: btrfs: inode: Allow next_length() to return value > BTRFS_NAME_LEN Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 19/30] fs: btrfs: Implement btrfs_lookup_path() Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 20/30] fs: btrfs: Use btrfs_iter_dir() to replace btrfs_readdir() Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 21/30] fs: btrfs: Use btrfs_lookup_path() to implement btrfs_exists() and btrfs_size() Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 22/30] fs: btrfs: Rename btrfs_file_read() and its callees to avoid name conflicts Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 23/30] fs: btrfs: Introduce btrfs_read_extent_inline() and btrfs_read_extent_reg() Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 24/30] fs: btrfs: Introduce lookup_data_extent() for later use Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 25/30] fs: btrfs: Implement btrfs_file_read() Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-09-07 22:35 ` Tom Rini
2020-09-07 22:35 ` Tom Rini
2020-09-08 0:26 ` Qu Wenruo
2020-09-08 0:26 ` Qu Wenruo
2020-09-08 0:56 ` Tom Rini
2020-09-08 0:56 ` Tom Rini
2020-09-08 0:59 ` Qu Wenruo
2020-09-08 0:59 ` Qu Wenruo
2020-06-24 16:03 ` [PATCH U-BOOT v3 26/30] fs: btrfs: Introduce function to resolve path in one subvolume Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 27/30] fs: btrfs: Introduce function to resolve the path of " Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 28/30] fs: btrfs: Imeplement btrfs_list_subvols() using new infrastructure Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 29/30] fs: btrfs: Cleanup the old implementation Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:03 ` [PATCH U-BOOT v3 30/30] MAINTAINERS: Add btrfs mailing list and myself as reviewer Marek Behún
2020-06-24 16:03 ` Marek Behún
2020-06-24 16:11 ` [PATCH U-BOOT v3 00/30] PLEASE TEST fs: btrfs: Re-implement btrfs support using code from btrfs-progs Marek Behún
2020-06-24 16:11 ` Marek Behún
2020-06-26 1:43 ` Simon Glass
2020-06-26 1:43 ` Simon Glass
2020-06-26 13:36 ` Tom Rini
2020-06-26 13:36 ` Tom Rini
2020-06-29 17:26 ` Simon Glass
2020-06-29 17:26 ` Simon Glass
2020-09-08 18:18 ` Tom Rini [this message]
2020-09-08 18:18 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200908181817.GN7259@bill-the-cat \
--to=trini@konsulko.com \
--cc=alsamolero@gmail.com \
--cc=delroth@gmail.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=marek.behun@nic.cz \
--cc=marex@denx.de \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
--cc=yevgenyp@pointgrab.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.