diff options
author | Joe Thornber <ejt@redhat.com> | 2015-08-12 17:12:09 +0300 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2015-08-12 17:50:37 +0300 |
commit | b0dc3c8bc157c60b1d470163882be8c13e1950af (patch) | |
tree | cce26617905afa50fd19066971f215baa4a19ca3 /drivers/md/persistent-data/dm-btree.c | |
parent | 7f518ad0a212e2a6fd68630e176af1de395070a7 (diff) | |
download | linux-b0dc3c8bc157c60b1d470163882be8c13e1950af.tar.xz |
dm btree: add ref counting ops for the leaves of top level btrees
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>
Cc: stable@vger.kernel.org
Diffstat (limited to 'drivers/md/persistent-data/dm-btree.c')
-rw-r--r-- | drivers/md/persistent-data/dm-btree.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/drivers/md/persistent-data/dm-btree.c b/drivers/md/persistent-data/dm-btree.c index fdd3793e22f9..c7726cebc495 100644 --- a/drivers/md/persistent-data/dm-btree.c +++ b/drivers/md/persistent-data/dm-btree.c @@ -667,12 +667,7 @@ static int insert(struct dm_btree_info *info, dm_block_t root, struct btree_node *n; struct dm_btree_value_type le64_type; - le64_type.context = NULL; - le64_type.size = sizeof(__le64); - le64_type.inc = NULL; - le64_type.dec = NULL; - le64_type.equal = NULL; - + init_le64_type(info->tm, &le64_type); init_shadow_spine(&spine, info); for (level = 0; level < (info->levels - 1); level++) { |