diff options
author | Su Yue <suy.fnst@cn.fujitsu.com> | 2018-04-25 13:19:24 +0800 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2018-06-07 16:37:36 +0200 |
commit | 42a5710acadac8bab9383c759affa3a4ff02d895 (patch) | |
tree | b11007c78c3058554565969e7e8f1660c6a0bf44 /tests | |
parent | d9b32dd2e9cfd5df62ceb76e939b4a76d1229e94 (diff) |
btrfs-progs: do not merge tree block refs have different root_id
For an extent item which contains many tree block backrefs, like
In 020-extent-ref-cases/keyed_block_ref.img
item 10 key (29470720 METADATA_ITEM 0) itemoff 3450 itemsize 222
refs 23 gen 10 flags TREE_BLOCK
tree block skinny level 0
tree block backref root 278
tree block backref root 277
tree block backref root 276
tree block backref root 275
tree block backref root 274
tree block backref root 273
tree block backref root 272
tree block backref root 271
tree block backref root 270
tree block backref root 269
tree block backref root 268
tree block backref root 267
tree block backref root 266
tree block backref root 265
tree block backref root 264
tree block backref root 263
tree block backref root 262
tree block backref root 261
tree block backref root 260
tree block backref root 259
tree block backref root 258
tree block backref root 257
In find_parent_nodes(), these refs's parents are 0, then __merge_refs
will merge refs to one ref. It causes only one root to be returned.
So, if both parents are 0, do not merge refs.
Lowmem check calls find_parent_nodes frequently to decide whether
check an extent buffer or not. The bug affects bytes accounting.
Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'tests')
0 files changed, 0 insertions, 0 deletions