]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: make sure the backref walker catches all refs to our extent
authorJosef Bacik <jbacik@fusionio.com>
Fri, 5 Jul 2013 18:03:47 +0000 (14:03 -0400)
committerChris Mason <chris.mason@fusionio.com>
Fri, 9 Aug 2013 23:30:03 +0000 (19:30 -0400)
commit1c0f2ca4384735321039e9b83d790d3384d9f1b7
treeff74a55f70c45d2f00255b4f2d43996cf1ca35d0
parent778f16413c37202bd06ad04ef46c36c0970a5160
Btrfs: make sure the backref walker catches all refs to our extent

Because we don't mess with the offset into the extent for compressed we will
properly find both extents for this case

[extent a][extent b][rest of extent a]

but because we already added a ref for the front half we won't add the inode
information for the second half.  This causes us to leak that memory and not
print out the other offset when we do logical-resolve.  So fix this by calling
ulist_add_merge and then add our eie to the existing entry if there is one.
With this patch we get both offsets out of logical-resolve.  With this and the
other 2 patches I've sent we now pass btrfs/276 on my vm with compress-force=lzo
set.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
fs/btrfs/backref.c