linux/drivers/md/persistent-data
Joe Thornber 0829122b28 dm btree: add ref counting ops for the leaves of top level btrees
commit b0dc3c8bc1 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>
[ luis: backported to 3.16:
  - dropped changes to remove_one() as suggested by Mike Snitzer ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
History 2015-09-03 13:29:48 +01:00
..
dm-array.c dm array: fix a reference counting bug in shadow_ablock 2013-12-13 14:22:10 -05:00
dm-array.h dm persistent data: add transactional array 2013-03-01 22:45:51 +00:00
dm-bitset.c dm bitset: only flush the current word if it has been dirtied 2014-03-27 16:56:23 -04:00
dm-bitset.h dm bitset: only flush the current word if it has been dirtied 2014-03-27 16:56:23 -04:00
dm-block-manager.c dm transaction manager: fix corruption due to non-atomic transaction commit 2014-03-27 16:56:23 -04:00
dm-block-manager.h dm transaction manager: fix corruption due to non-atomic transaction commit 2014-03-27 16:56:23 -04:00
dm-btree-internal.h dm btree: add ref counting ops for the leaves of top level btrees 2015-09-03 13:29:48 +01:00
dm-btree-remove.c dm btree: add ref counting ops for the leaves of top level btrees 2015-09-03 13:29:48 +01:00
dm-btree-spine.c dm btree: add ref counting ops for the leaves of top level btrees 2015-09-03 13:29:48 +01:00
dm-btree.c dm btree: add ref counting ops for the leaves of top level btrees 2015-09-03 13:29:48 +01:00
dm-btree.h dm btree: add dm_btree_find_lowest_key 2014-01-09 16:29:17 -05:00
dm-persistent-data-internal.h dm: add persistent data library 2011-10-31 20:19:11 +00:00
dm-space-map-common.c dm space map common: make sure new space is used during extend 2014-01-07 21:05:17 -05:00
dm-space-map-common.h dm persistent data: only commit space map if index changed 2012-07-27 15:08:06 +01:00
dm-space-map-disk.c dm space map disk: optimise sm_disk_dec_block 2013-11-09 18:20:24 -05:00
dm-space-map-disk.h dm: add persistent data library 2011-10-31 20:19:11 +00:00
dm-space-map-metadata.c dm space map metadata: fix occasional leak of a metadata block on resize 2015-07-15 10:00:40 +01:00
dm-space-map-metadata.h dm thin: allow metadata space larger than supported to go unused 2014-02-27 11:49:08 -05:00
dm-space-map.h dm persistent data: add threshold callback to space map 2013-05-10 14:37:20 +01:00
dm-transaction-manager.c dm transaction manager: fix corruption due to non-atomic transaction commit 2014-03-27 16:56:23 -04:00
dm-transaction-manager.h dm transaction manager: fix corruption due to non-atomic transaction commit 2014-03-27 16:56:23 -04:00
Kconfig dm: fix Kconfig indentation 2014-03-03 17:31:07 -05:00
Makefile dm persistent data: add bitset 2013-03-01 22:45:51 +00:00