On Wed, Jan 10, 2018 at 12:56:47PM +0800, Qu Wenruo wrote: > When creating btrfs, mkfs.btrfs will firstly create a temporary system > chunk as basis, and then created needed trees or new devices. > > However the layout temporary system chunk is hard-coded and uses > reserved [0, 1M) range of devid 1. > > Change the temporary chunk layout from old: > > 0 1M 4M 5M > |<----------- temp chunk -------------->| > And it's 1:1 mapped, which means it's a SINGLE chunk, > and stripe offset is also 0. > > to new layout: > > 0 1M 4M 5M > |<----------- temp chunk -------------->| > And still keeps the 1:1 mapping. > > The problem can only be exposed by "-m single" or "-M" where we reuse the > temporary chunk. > > With other meta profiles, system and meta chunks are allocated by later > btrfs_alloc_chunk() call, and old SINGLE chunks are removed, so it will > be no such problem for other meta profiles. > > Reported-by: Nikolay Borisov <nborisov@xxxxxxxx> > Signed-off-by: Qu Wenruo <wqu@xxxxxxxx> The test mkfs-tests/010-minimal-size fails with this patch (devel branch). I've added some debugging and the requested minimal size by mkfs is not sufficient. I think it's because of the 1MB shift but haven't looked closely. The math in "btrfs-progs: mkfs: move source dir size calculation to its own files" may need to be updated, I'm not sure how exactly to do that. It would be good if you find the fix and we'll then see where to put it (separate patch or fold it to some other one). Otherwise I'm going to apply patches 1 and 2, thanks. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
