btrfs-progs/convert
Jeff Mahoney 7708377075 btrfs-progs: convert: properly handle reserved ranges while iterating files
Commit 522ef705e3 (btrfs-progs: convert: Introduce function to calculate
the available space) changed how we handle migrating file data so that
we never have btrfs space associated with the reserved ranges.  This
works pretty well and when we iterate over the file blocks, the
associations are redirected to the migrated locations.

This commit missed the case in block_iterate_proc where we just check
for intersection with a superblock location before looking up a block
group.  intersect_with_sb checks to see if the range intersects with
a stripe containing a superblock but, in fact, we've reserved the
full 0-1MB range at the start of the disk.  So a file block located
at e.g. 160kB will fall in the reserved region but won't be excepted
in block_iterate_block.  We ultimately hit a BUG_ON when we fail
to look up the block group for that location.

This is reproducible using convert-tests/003-ext4-basic.

The fix is to have intersect_with_sb and block_iterate_proc understand
the full size of the reserved ranges.  Since we use the range to
determine the boundary for the block iterator, let's just return the
boundary.  0 isn't a valid boundary and means that we proceed normally
with block group lookup.

Cc: Qu Wenruo <quwenruo.btrfs@gmx.com>
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Reviewed-by: Qu Wenruo <quwenruo.btrfs@gmx.com>
Signed-off-by: David Sterba <dsterba@suse.com>
2017-08-24 19:07:18 +02:00
..
common.c btrfs-progs: Remove deprecated leafsize usage 2017-07-03 13:35:10 +02:00
common.h btrfs-progs: convert: widen int types in convert context 2017-06-26 17:09:53 +02:00
main.c btrfs-progs: convert: Fix data race when reporting progress 2017-07-20 17:43:43 +02:00
Makefile btrfs-progs: build: add stub makefile to convert 2017-03-08 13:00:46 +01:00
source-ext2.c btrfs-progs: convert: Fix data race when reporting progress 2017-07-20 17:43:43 +02:00
source-ext2.h btrfs-progs: convert: move ext2 definitions out of main 2017-03-08 13:00:45 +01:00
source-fs.c btrfs-progs: convert: properly handle reserved ranges while iterating files 2017-08-24 19:07:18 +02:00
source-fs.h btrfs-progs: convert: Fix data race when reporting progress 2017-07-20 17:43:43 +02:00