Btrfs-progs: make btrfs-image restore with a valid chunk tree V2
authorJosef Bacik <jbacik@fusionio.com>
Wed, 27 Mar 2013 20:55:41 +0000 (16:55 -0400)
committerDavid Sterba <dsterba@suse.cz>
Tue, 9 Apr 2013 16:43:24 +0000 (18:43 +0200)
commitd6f7e3da0dae7b60cb7565f8a47c3b9045c52d1d
treef4141f44583268939fe84386bb2fb75cc49ae54c
parent28810549562d051f0f002590cb6c98b004a09927
Btrfs-progs: make btrfs-image restore with a valid chunk tree V2

Previously btrfs-image would set a METADUMP flag and would make one big system
chunk to cover the entire file system in the super in order to get around the
unpleasant business of having to adjust the chunk tree.  This meant that you
could use the progs stuff on a restored file system, which is great for testing
btrfsck and other such things.  But we want to be able to run the tree log
replay on a file system that is not able to run the tree log replay.  So in
order to do this we need to fixup the super's chunk array and the chunk tree
itself.  This is pretty easy since we restore using the logical offsets of the
metadata, so we just have to set the chunk items to have 1 stripe and have the
stripes point at the primary device and then use the logical offset of the chunk
as the physical offset.  With this patch I can restore a file system image that
had a tree log and mount the file system and have the log be replayed
successfully.  This patch also gives you the -o option in case you want the old
restore way, in the case where we want to make sure the system chunks as they
were given to us are correct.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
btrfs-image.c
man/btrfs-image.8.in
utils.c
utils.h