This patchset can be fetched from github: https://github.com/adam900710/btrfs-progs/tree/libbtrfs_prepare
This patchset unified a large part of chunk allocator (free device extent search) between kernel and btrfs-progs. Although there are still differences in the following areas, the goal of extract common code into libbtrfs is in the reach. 1) Member differences Btrfs-progs lacks quite some members of kernel, so something like fs_devices->total_rw_bytes still makes difference. 2) @convert parameter for mkfs/convert It should be able to extract them into a simpler function. 3) delayed bg creations vs direct bg creation Kernel delays block group creation while btrfs-progs directly allocates block group. This makes kernel __btrfs_alloc_chunk() more or less chunk mapping allocation only, while btrfs-progs handles extra chunk, dev extent and block group item creation. This needs extra function refactor before we really extra code into libbtrfs. Despite the preparation for later libbtrfs, this rework still has some benefit: 1) No minimal stripe/chunk size Unlike the intermediate minimal stripe/chunk size in btrfs-progs, kernel doesn't really implement a minimal stripe/chunk size. So now we don't have such limit in btrfs-progs side now. Although the minimal device size calculation doesn't make any harm so it's still kept as is. 2) Slightly less code for chunk allocator Just about -60 lines in the last patch. Qu Wenruo (7): btrfs-progs: Refactor parameter of BTRFS_MAX_DEVS() from root to fs_info btrfs-progs: Merge btrfs_alloc_data_chunk into btrfs_alloc_chunk btrfs-progs: Make btrfs_alloc_chunk to handle block group creation btrfs-progs: Introduce btrfs_raid_array and related infrastructures btrfs-progs: volumes: Allow find_free_dev_extent() to return maximum hole size btrfs-progs: kernel-lib: Port kernel sort() to btrfs-progs btrfs-progs: volumes: Unify free dev extent search behavior between kernel and btrfs-progs. Makefile | 3 +- convert/main.c | 10 +- ctree.h | 12 +- extent-tree.c | 12 +- kerncompat.h | 5 + kernel-lib/sort.c | 104 +++++++ kernel-lib/sort.h | 16 ++ mkfs/main.c | 27 +- volumes.c | 838 +++++++++++++++++++++++++----------------------------- volumes.h | 42 ++- 10 files changed, 578 insertions(+), 491 deletions(-) create mode 100644 kernel-lib/sort.c create mode 100644 kernel-lib/sort.h -- 2.16.1 -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html