btrfs-progs: convert: fix unable to rollback case with removed empty block groups
authorGui Hecheng <guihc.fnst@cn.fujitsu.com>
Wed, 26 Nov 2014 02:43:41 +0000 (10:43 +0800)
committerDavid Sterba <dsterba@suse.cz>
Tue, 9 Dec 2014 13:32:38 +0000 (14:32 +0100)
commit662d1dddcad79839f1cbc13cb0be3ec326af2933
treebec570ce3392c8ff4467a235128556662e846be7
parentf0b1ff4481798c877bdf8869b8f69f36124466a8
btrfs-progs: convert: fix unable to rollback case with removed empty block groups

Run fstests: btrfs/012 will fail with message:
unable to do rollback

It is because the rollback function checks sequentially each piece of space
to map to a certain block group. If some piece doesn't, rollback refuses to continue.

After kernel commit:
commit 47ab2a6c689913db23ccae38349714edf8365e0a
Btrfs: remove empty block groups automatically

Empty block groups are removed, so there are possible gaps:

|--block group 1--| |--block group 2--|
     ^
     |
    gap

So the piece of space of the gap belongs to a removed empty block group,
and rollback should detect this case, and feel free to continue.

Signed-off-by: Gui Hecheng <guihc.fnst@cn.fujitsu.com>
Signed-off-by: David Sterba <dsterba@suse.cz>
btrfs-convert.c
volumes.c