diff mbox series

[v2,2/4] btrfs-progs: check/original: don't reset extent generation for check_block()

Message ID 20200811114451.28862-3-wqu@suse.com (mailing list archive)
State New, archived
Headers show
Series btrfs-progs: check: add the ability to repair extent item generation corruption | expand

Commit Message

Qu Wenruo Aug. 11, 2020, 11:44 a.m. UTC
In check_block(), we unconditionally reset extent_record::generation.

This is in fact pretty correct, but this makes original mode fail to
detect bad extent item geneartion.

So change to behavior to set the geneartion if and only if the tree
block generation is higher.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 check/main.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/check/main.c b/check/main.c
index f93bd7d4ca70..72fa28ad216a 100644
--- a/check/main.c
+++ b/check/main.c
@@ -4440,7 +4440,8 @@  static int check_block(struct btrfs_root *root,
 	if (!cache)
 		return 1;
 	rec = container_of(cache, struct extent_record, cache);
-	rec->generation = btrfs_header_generation(buf);
+	if (rec->generation < btrfs_header_generation(buf))
+		rec->generation = btrfs_header_generation(buf);
 
 	level = btrfs_header_level(buf);
 	if (btrfs_header_nritems(buf) > 0) {