
This is the first version of patches for adding a single-device read-only BTRFS support to U-Boot.
Compression (zlib/lzo) is supported. Data checksumming is unimplemented.
The code was tested on the Turris Omnia router, where BTRFS is used as the main filesystem from which kernel and device-tree are loaded.
The first patch adds the CRC32-C hash routine.
The second patch generalizes the ext4fs_devread, reiserfs_devread and zfs_devread functions into one fs_devread and puts it into fs/fs_internal.c.
The third patch creates a header variadic-macro.h containing a variadic macro CALL_MACRO_FOR_EACH, which expands to a call to the macro specified by the first argument to all its subsequent arguments. This is used in my code for defining functions to convert the BTRFS data structures to/from CPU/disk format.
The fourth patch adds the btrfs_tree.h and ctree.h files containing constants and structures definitions for BTRFS from Linux.
The fifth patch adds the code for conversion of BTRFS data structures to/from CPU/disk format.
The sixth patch adds the proper BTRFS code.
The seventh patch adds U-Boot fs handlers.
The eighth patch adds the 'btrsubvol' command to list BTRFS subvolumes.
The nineth patch adds CONFIG_CMD_BTRFS into the defconfig for Turris Omnia.
Tested-by: Marek Behun marek.behun@nic.cz Signed-off-by: Marek Behun marek.behun@nic.cz