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>
This commit is contained in:
parent
c309df0786
commit
00d01bc17c
@ -631,7 +631,8 @@ static int scrub_page(struct scrub_dev *sdev, u64 logical, u64 len,
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user