[thin_check] detail and mapping trees weren't being counted properly for the metadata snap.
This could result in block counts being unexpectedly non zero.
This commit is contained in:
parent
b67cc29609
commit
5d28c05dc3
@ -169,23 +169,9 @@ namespace {
|
|||||||
bool clear_needs_check_flag_on_success;
|
bool clear_needs_check_flag_on_success;
|
||||||
};
|
};
|
||||||
|
|
||||||
error_state check_space_map_counts(flags const &fs, nested_output &out,
|
void count_trees(transaction_manager::ptr tm,
|
||||||
superblock_detail::superblock &sb,
|
superblock_detail::superblock &sb,
|
||||||
block_manager<>::ptr bm,
|
block_counter &bc) {
|
||||||
transaction_manager::ptr tm) {
|
|
||||||
block_counter bc;
|
|
||||||
|
|
||||||
// Count the superblock
|
|
||||||
bc.inc(superblock_detail::SUPERBLOCK_LOCATION);
|
|
||||||
|
|
||||||
// Count the metadata snap, if present
|
|
||||||
if (sb.metadata_snap_ != superblock_detail::SUPERBLOCK_LOCATION) {
|
|
||||||
bc.inc(sb.metadata_snap_);
|
|
||||||
|
|
||||||
superblock_detail::superblock snap = read_superblock(bm, sb.metadata_snap_);
|
|
||||||
bc.inc(snap.data_mapping_root_);
|
|
||||||
bc.inc(snap.device_details_root_);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Count the device tree
|
// Count the device tree
|
||||||
{
|
{
|
||||||
@ -202,6 +188,25 @@ namespace {
|
|||||||
mapping_tree_detail::block_traits::ref_counter(tm->get_sm()));
|
mapping_tree_detail::block_traits::ref_counter(tm->get_sm()));
|
||||||
count_btree_blocks(mtree, bc, vc);
|
count_btree_blocks(mtree, bc, vc);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
error_state check_space_map_counts(flags const &fs, nested_output &out,
|
||||||
|
superblock_detail::superblock &sb,
|
||||||
|
block_manager<>::ptr bm,
|
||||||
|
transaction_manager::ptr tm) {
|
||||||
|
block_counter bc;
|
||||||
|
|
||||||
|
// Count the superblock
|
||||||
|
bc.inc(superblock_detail::SUPERBLOCK_LOCATION);
|
||||||
|
count_trees(tm, sb, bc);
|
||||||
|
|
||||||
|
// Count the metadata snap, if present
|
||||||
|
if (sb.metadata_snap_ != superblock_detail::SUPERBLOCK_LOCATION) {
|
||||||
|
bc.inc(sb.metadata_snap_);
|
||||||
|
|
||||||
|
superblock_detail::superblock snap = read_superblock(bm, sb.metadata_snap_);
|
||||||
|
count_trees(tm, snap, bc);
|
||||||
|
}
|
||||||
|
|
||||||
// Count the metadata space map
|
// Count the metadata space map
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user