Question about ext4 conversion and leaf size
Conversion from ext4 works really well and is an important step for adoption. After recently converting a large-ish device I noticed dodgy performance, even after defragment & rebalance; noticeably different from the quite good performance of a newly-created btrfs with 16k leaf size, as is the default since recently.
So I went spelunking and found that the btrfs-convert logic indeed uses the ext4 block size as leaf size (from #2220):
https://git.kernel.org/cgit/linux/kernel/git/mason/btrfs-progs.git/tree/btrfs-convert.c#n2245
This is typically 4096 bytes and explains the observed performance.
So while I'm basically familiar with btrfs's design, I know nothing about the details of the conversion (I'm amazed that it works so well, including rollback!) but can/should this not be updated to the new default of 16k, or is there a strong necessary correlation between the ext4 block size and the newly created btrfs?
thanks!
Holger
Quoted 10 lines · Holger Hoffstätte
Conversion from ext4 works really well and is an important step for adoption. After recently converting a large-ish device I noticed dodgy performance, even after defragment & rebalance; noticeably different from the quite good performance of a newly-created btrfs with 16k leaf size, as is the default since recently.
So I went spelunking and found that the btrfs-convert logic indeed uses the ext4 block size as leaf size (from #2220):
https://git.kernel.org/cgit/linux/kernel/git/mason/btrfs-progs.git/tree/btrfs-convert.c#n2245
Quoted 7 lines
This is typically 4096 bytes and explains the observed performance.
So while I'm basically familiar with btrfs's design, I know nothing about the details of the conversion (I'm amazed that it works so well, including rollback!) but can/should this not be updated to the new default of 16k, or is there a strong necessary correlation between the ext4 block size and the newly created btrfs?
The sectorsize has to be same for ext4 and btrfs, which is 4k (PAGE_SIZE) nowadays. The btrfs metadata block is not limited by that.
I've tried to implement the dumb & simple support for larger metadata block some time ago
but the conversion did not work properly, and I haven't debugged that further.
david