]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
dm btree: add ref counting ops for the leaves of top level btrees
authorJoe Thornber <ejt@redhat.com>
Wed, 12 Aug 2015 14:12:09 +0000 (15:12 +0100)
committerZefan Li <lizefan@huawei.com>
Mon, 21 Mar 2016 01:17:52 +0000 (09:17 +0800)
commitf738306b913dc247b96c403d7fe735d09b13157b
treebee7d113df15f36824bbecf7073b5c05078ce3b0
parentbd1bdbece98984626f1f9432447ed7e6493d15d5
dm btree: add ref counting ops for the leaves of top level btrees

commit b0dc3c8bc157c60b1d470163882be8c13e1950af upstream.

When using nested btrees, the top leaves of the top levels contain
block addresses for the root of the next tree down.  If we shadow a
shared leaf node the leaf values (sub tree roots) should be incremented
accordingly.

This is only an issue if there is metadata sharing in the top levels.
Which only occurs if metadata snapshots are being used (as is possible
with dm-thinp).  And could result in a block from the thinp metadata
snap being reused early, thus corrupting the thinp metadata snap.

Signed-off-by: Joe Thornber <ejt@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
[lizf: Backported to 3.4:
 - drop const
 - drop changes to remove_one()]
Signed-off-by: Zefan Li <lizefan@huawei.com>
drivers/md/persistent-data/dm-btree-internal.h
drivers/md/persistent-data/dm-btree-remove.c
drivers/md/persistent-data/dm-btree-spine.c
drivers/md/persistent-data/dm-btree.c