From e6203e6ff9fc0ee2f15dd06b4db61b89eaace982 Mon Sep 17 00:00:00 2001 From: Su Yue Date: Tue, 3 Jul 2018 15:58:51 +0800 Subject: [PATCH] btrfs-progs: fsck-tests: add test case with keyed data backref with reloc tree blocks For trees have been balanced, leaves are with flag BTRFS_HEADER_FLAG_RELOC and extent data backrefs are shared. Like: ===================== item 0 key (11927552 EXTENT_ITEM 524288) itemoff 3932 itemsize 63 refs 129 gen 7 flags DATA shared data backref parent 35897344 count 41 shared data backref parent 35426304 count 37 shared data backref parent 35422208 count 51 ===================== Then make the leaf which owns the extent data cowed. The shared data backref was to transferred to keyed data ref, but remaining backrefs are still shared. Like: ===================== item 0 key (11927552 EXTENT_ITEM 524288) itemoff 3887 itemsize 108 refs 129 gen 7 flags DATA extent data backref root 5 objectid 258 offset 0 count 40 extent data backref root 5 objectid 257 offset 0 count 1 shared data backref parent 35426304 count 37 shared data backref parent 35422208 count 51 ===================== However lowmem mode used to iterate the whole inode to find all references, and doesn't care if a reference is already counted by the shared tree block. Add the test case to check it. Signed-off-by: Su Yue Signed-off-by: David Sterba --- .../keyed_data_ref_with_reloc_leaf.img | Bin 0 -> 16384 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_with_reloc_leaf.img diff --git a/tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_with_reloc_leaf.img b/tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_with_reloc_leaf.img new file mode 100644 index 0000000000000000000000000000000000000000..80345cf9498f296f001b8b63e230bcfb9293300d GIT binary patch literal 16384 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