aboutsummaryrefslogtreecommitdiffstats
path: root/fs/btrfs/scrub.c
diff options
context:
space:
mode:
authorLiu Bo <bo.li.liu@oracle.com>2018-02-27 18:10:58 -0700
committerDavid Sterba <dsterba@suse.com>2018-03-26 15:09:40 +0200
commited5d5f37e653b606c93b2d5f1cdd155be6fefce0 (patch)
tree0e20a6ff64e1121fdda10cd08a5a6815da30ef36 /fs/btrfs/scrub.c
parentbtrfs: unify types for metadata_ratio and data_chunk_allocations (diff)
downloadlinux-dev-ed5d5f37e653b606c93b2d5f1cdd155be6fefce0.tar.xz
linux-dev-ed5d5f37e653b606c93b2d5f1cdd155be6fefce0.zip
Btrfs: dev-replace: skip prealloc extents when copy nocow pages
It doens't make sense to process prealloc extents as pages will be filled with zero when reading prealloc extents. Signed-off-by: Liu Bo <bo.li.liu@oracle.com> Reviewed-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/scrub.c')
-rw-r--r--fs/btrfs/scrub.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
index beb441d0c5c6..9fb7d09842e6 100644
--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -4480,7 +4480,8 @@ static int check_extent_to_block(struct btrfs_inode *inode, u64 start, u64 len,
* move on to the next inode.
*/
if (em->block_start > logical ||
- em->block_start + em->block_len < logical + len) {
+ em->block_start + em->block_len < logical + len ||
+ test_bit(EXTENT_FLAG_PREALLOC, &em->flags)) {
free_extent_map(em);
ret = 1;
goto out_unlock;