btrfs: scrub, only lookup for csums if we are dealing with a data extent
authorFilipe Manana <fdmanana@suse.com>
Fri, 8 May 2020 10:02:07 +0000 (11:02 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 25 May 2020 09:25:30 +0000 (11:25 +0200)
When scrubbing a stripe, whenever we find an extent we lookup for its
checksums in the checksum tree. However we do it even for metadata extents
which don't have checksum items stored in the checksum tree, that is
only for data extents.

So make the lookup for checksums only if we are processing with a data
extent.

Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/scrub.c

index 2486f58d8205f50d570b2f785d878c0e8ae76a7d..0f7740970553f81f6262e379b5f0b9538cad92cd 100644 (file)
@@ -3343,13 +3343,14 @@ again:
                                                   &extent_dev,
                                                   &extent_mirror_num);
 
-                       ret = btrfs_lookup_csums_range(csum_root,
-                                                      extent_logical,
-                                                      extent_logical +
-                                                      extent_len - 1,
-                                                      &sctx->csum_list, 1);
-                       if (ret)
-                               goto out;
+                       if (flags & BTRFS_EXTENT_FLAG_DATA) {
+                               ret = btrfs_lookup_csums_range(csum_root,
+                                               extent_logical,
+                                               extent_logical + extent_len - 1,
+                                               &sctx->csum_list, 1);
+                               if (ret)
+                                       goto out;
+                       }
 
                        ret = scrub_extent(sctx, map, extent_logical, extent_len,
                                           extent_physical, extent_dev, flags,