diff mbox

[1/2] btrfs-progs: lowmem check: Fix false alerts of referencer count mismatch for snapshot

Message ID 20171114075521.24736-1-wqu@suse.com (mailing list archive)
State New, archived
Headers show

Commit Message

Qu Wenruo Nov. 14, 2017, 7:55 a.m. UTC
Btrfs lowmem check reports such false alerts:
------
ERROR: extent[366498091008, 134217728] referencer count mismatch (root: 827, owner: 73782, offset: 134217728) wanted: 4, have: 26
ERROR: extent[366498091008, 134217728] referencer count mismatch (root: 818, owner: 73782, offset: 134217728) wanted: 4, have: 26
ERROR: extent[366498091008, 134217728] referencer count mismatch (root: 870, owner: 73782, offset: 134217728) wanted: 4, have: 26
------

While in extent tree, the extent has:
------
        item 81 key (366498091008 EXTENT_ITEM 134217728) itemoff 9008 itemsize 169
                refs 39 gen 224 flags DATA
                extent data backref root 827 objectid 73782 offset 134217728 count 4
                extent data backref root 818 objectid 73782 offset 134217728 count 4
                extent data backref root 259 objectid 73482 offset 134217728 count 1
                extent data backref root 644 objectid 73782 offset 134217728 count 26
                extent data backref root 870 objectid 73782 offset 134217728 count 4
------

And in root 827, there is one leaf with 4 references to that extent
which is owned by 827:
------
leaf 714964992 items 68 free space 10019 generation 641 owner 827
leaf 714964992 flags 0x1(WRITTEN) backref revision 1
......
        item 64 key (73782 EXTENT_DATA 134217728) itemoff 11878 itemsize 53
                generation 224 type 1 (regular)
                extent data disk byte 366498091008 nr 134217728
                extent data offset 0 nr 6410240 ram 134217728
                extent compression 0 (none)
        item 65 key (73782 EXTENT_DATA 140627968) itemoff 11825 itemsize 53
                generation 224 type 1 (regular)
                extent data disk byte 366498091008 nr 134217728
                extent data offset 6410240 nr 5120000 ram 134217728
                extent compression 0 (none)
        item 66 key (73782 EXTENT_DATA 145747968) itemoff 11772 itemsize 53
                generation 224 type 1 (regular)
                extent data disk byte 366498091008 nr 134217728
                extent data offset 11530240 nr 7675904 ram 134217728
                extent compression 0 (none)
        item 67 key (73782 EXTENT_DATA 153423872) itemoff 11719 itemsize 53
                generation 224 type 1 (regular)
                extent data disk byte 366498091008 nr 134217728
                extent data offset 19206144 nr 6397952 ram 134217728
                extent compression 0 (none)
------

And starts from next leaf, there are 22 references to the data extent:
------
leaf 894861312 items 208 free space 59 generation 261 owner 644
leaf 894861312 flags 0x1(WRITTEN) backref revision 1
        item 0 key (73782 EXTENT_DATA 159821824) itemoff 16230 itemsize 53
                generation 224 type 1 (regular)
                extent data disk byte 366498091008 nr 134217728
                extent data offset 25604096 nr 8192 ram 134217728
                extent compression 0 (none)
        item 1 key (73782 EXTENT_DATA 159830016) itemoff 16177 itemsize 53
                generation 224 type 1 (regular)
                extent data disk byte 366498091008 nr 134217728
                extent data offset 25612288 nr 7675904 ram 134217728
                extent compression 0 (none)
......
------

However the next leaf is owned by other subvolume, normally owned by (part of)
the snapshot source.

Fix it by also checking the leaf's owner before increasing the reference
counter.

Reported-by: Chris Murphy <chris@colorremedies.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 cmds-check.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

Comments

Qu Wenruo Nov. 14, 2017, 7:55 a.m. UTC | #1
For snapshot shared tree blocks with source subvolume, the keyed backref
counter only counts the exclusive owned references.

In the following case, 258 is a snapshot of 257, which inherits all the
reference to this data extent.
------
        item 4 key (12582912 EXTENT_ITEM 524288) itemoff 3741 itemsize 140
                refs 179 gen 9 flags DATA
                extent data backref root 257 objectid 258 offset 0 count 49
                extent data backref root 257 objectid 257 offset 0 count 1
                extent data backref root 256 objectid 258 offset 0 count 128
                extent data backref root 256 objectid 257 offset 0 count 1
------

However lowmem mode used to iterate the whole inode to find all
reference, and doesn't care if the reference is already counted by the
shared tree block.

And the test case to check it.

Signed-off-by: Qu Wenruo <wqu@suse.com>
---
 .../keyed_data_ref_with_shared_leaf.img                 | Bin 0 -> 19456 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_with_shared_leaf.img

diff --git a/tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_with_shared_leaf.img b/tests/fsck-tests/020-extent-ref-cases/keyed_data_ref_with_shared_leaf.img
new file mode 100644
index 0000000000000000000000000000000000000000..2ce5068f01c693e577de8b9a536fdeb360029e5f
GIT binary patch
literal 19456
zcmeIZby!qi_c%IqrzoHxp-8usbaw~{2q>i>jevj>LkLJHC?E*Z-5?;%01|@IAkra7
zNq5Zbdj|Zx@AuyOzR&&seV^YvGv}<?XYF;?UbWZS`<w{tIM;a=(?;0e4>fegIR8Qb
z65U9Si9W){(1$b`^bz(FeIS>C@L;e^^r86zc0t3l7qBfZ1k1>t<G}DCxL^JpR>X#2
zK817m9UcUiDV@VlArQu=d=3Ym!z$;nJsLJwJ%^dltZZGt=QuiQ=j~%uP<y}TIqZnW
zm(e<hrO-$J3)l$Vx9kEQM7Pggz=(59?ek+07P{{R9D!~zzkrL-JpZ51|B=A||0Liw
z9?^UF#<CgfrPKPc`{H}U7Wa<h&)5I>wG$IZnm<*_^J$1t)-iTz;3d<L50q9=^CyUZ
zOK1K`24ACG7RTZ@KYrT0!cC#&W{Q$9iY{0J4l$_)4emV7Nz$#XqhL|iKX7Y0tMwW|
zoT0TF*UmyQQ{G;M_1`?eW}1iH`p~b>XQBEnl9)}E%0AGF1}D>;Dl+gcAE8o98WwJJ
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
a<ptx1ajMl8PZUr%pJqv*M<@T+pZ^P)Oh4@a

literal 0
HcmV?d00001
diff mbox

Patch

diff --git a/cmds-check.c b/cmds-check.c
index 4805e11b752b..d782567c77ee 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -10909,11 +10909,17 @@  static int check_extent_data_backref(struct btrfs_fs_info *fs_info,
 		 * Except normal disk bytenr and disk num bytes, we still
 		 * need to do extra check on dbackref offset as
 		 * dbackref offset = file_offset - file_extent_offset
+		 *
+		 * Also, we must check the leaf owner.
+		 * In case of shared tree blocks (snapshots) we can inherit
+		 * leaves from source snapshot.
+		 * In that case, reference from source snapshot should not
+		 * count.
 		 */
 		if (btrfs_file_extent_disk_bytenr(leaf, fi) == bytenr &&
 		    btrfs_file_extent_disk_num_bytes(leaf, fi) == len &&
 		    (u64)(key.offset - btrfs_file_extent_offset(leaf, fi)) ==
-		    offset)
+		    offset && btrfs_header_owner(leaf) == root_id)
 			found_count++;
 
 next: