Message ID | 20200624160316.5001-1-marek.behun@nic.cz (mailing list archive) |
---|---|
Headers | show |
Series | PLEASE TEST fs: btrfs: Re-implement btrfs support using code from btrfs-progs | expand |
I shall compile for different platforms with and without these patches to see how much these patches increase the size of the resulting U-Boot binary. Maybe it will show us that it is finally time to look into LTO for U-Boot.
Hi Marek, On Wed, 24 Jun 2020 at 10:03, Marek Behún <marek.behun@nic.cz> 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 Please can you add a test for this one? See fs-test.sh Regards, Simon
On Thu, Jun 25, 2020 at 07:43:20PM -0600, Simon Glass wrote: > Hi Marek, > > On Wed, 24 Jun 2020 at 10:03, Marek Behún <marek.behun@nic.cz> 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 > > Please can you add a test for this one? See fs-test.sh Not more fs-test.sh tests, test/py/tests/test_fs/ tests please, thanks!
Hi, On Fri, 26 Jun 2020 at 07:36, Tom Rini <trini@konsulko.com> wrote: > > On Thu, Jun 25, 2020 at 07:43:20PM -0600, Simon Glass wrote: > > Hi Marek, > > > > On Wed, 24 Jun 2020 at 10:03, Marek Behún <marek.behun@nic.cz> 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 > > > > Please can you add a test for this one? See fs-test.sh > > Not more fs-test.sh tests, test/py/tests/test_fs/ tests please, thanks! That's good news, I hadn't noticed the conversion from shell! Regards, Simon
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!