diff options
author | Arne Jansen <sensille@gmx.net> | 2011-05-25 14:22:50 +0200 |
---|---|---|
committer | Chris Mason <chris.mason@oracle.com> | 2011-05-26 23:52:52 +0200 |
commit | 00d01bc17cc2807292303961519d9c005794eb1d (patch) | |
tree | 47816d90951550c55d9ec1fff51c365056986aa1 /fs/btrfs/scrub.c | |
parent | Btrfs: return -ENOMEM in clear_extent_bit (diff) | |
download | linux-00d01bc17cc2807292303961519d9c005794eb1d.tar.xz linux-00d01bc17cc2807292303961519d9c005794eb1d.zip |
btrfs scrub: don't coalesce pages that are logically discontiguous
scrub_page collects several pages into one bio as long as they are physically
contiguous. As we only save one logical address for the whole bio, don't
collect pages that are physically contiguous but logically discontiguous.
Signed-off-by: Arne Jansen <sensille@gmx.net>
Signed-off-by: Chris Mason <chris.mason@oracle.com>
Diffstat (limited to 'fs/btrfs/scrub.c')
-rw-r--r-- | fs/btrfs/scrub.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c index 87a2f1273136..6dfed0c27ac3 100644 --- a/fs/btrfs/scrub.c +++ b/fs/btrfs/scrub.c @@ -631,7 +631,8 @@ again: if (sbio->count == 0) { sbio->physical = physical; sbio->logical = logical; - } else if (sbio->physical + sbio->count * PAGE_SIZE != physical) { + } else if (sbio->physical + sbio->count * PAGE_SIZE != physical || + sbio->logical + sbio->count * PAGE_SIZE != logical) { scrub_submit(sdev); goto again; } |