Btrfs: set range_start to the right start in count_range_bits
authorJosef Bacik <josef@redhat.com>
Wed, 4 May 2011 15:11:17 +0000 (11:11 -0400)
committerJosef Bacik <josef@redhat.com>
Mon, 23 May 2011 17:03:09 +0000 (13:03 -0400)
In count_range_bits we are adjusting total_bytes based on the range we are
searching for, but we don't adjust the range start according to the range we are
searching for, which makes for weird results.  For example, if the range

[0-8192]

is set DELALLOC, but I search for 4096-8192, I will get back 4096 for the number
of bytes found, but the range_start will be 0, which makes it look like the
range is [0-4096].  So instead set range_start = max(cur_start, state->start).
This makes everything come out right.  Thanks,

Signed-off-by: Josef Bacik <josef@redhat.com>
fs/btrfs/extent_io.c

index ba41da59e31b1d93348622d7b47655234f5ff930..b5f6f227a97c15f95100c0b8525ae7cb85c31c32 100644 (file)
@@ -1480,7 +1480,7 @@ u64 count_range_bits(struct extent_io_tree *tree,
                        if (total_bytes >= max_bytes)
                                break;
                        if (!found) {
-                               *start = state->start;
+                               *start = max(cur_start, state->start);
                                found = 1;
                        }
                        last = state->end;