[space map disk] Add get_nr_blocks_in_data_sm()

which just uses the root
This commit is contained in:
Joe Thornber 2016-03-21 17:16:41 +00:00
parent 2cf0c84ce3
commit a21f97e405
2 changed files with 16 additions and 0 deletions

View File

@ -773,4 +773,15 @@ persistent_data::open_metadata_sm(transaction_manager &tm, void *root)
checked_space_map::ptr(new sm_disk(store, tm, v)))); checked_space_map::ptr(new sm_disk(store, tm, v))));
} }
block_address
persistent_data::get_nr_blocks_in_data_sm(transaction_manager &tm, void *root)
{
sm_root_disk d;
sm_root v;
::memcpy(&d, root, sizeof(d));
sm_root_traits::unpack(d, v);
return v.nr_blocks_;
}
//---------------------------------------------------------------- //----------------------------------------------------------------

View File

@ -36,6 +36,11 @@ namespace persistent_data {
checked_space_map::ptr checked_space_map::ptr
open_metadata_sm(transaction_manager &tm, void *root); open_metadata_sm(transaction_manager &tm, void *root);
// Get the number of data blocks with minimal IO. Used when
// repairing to avoid the bulk of the space maps.
block_address
get_nr_blocks_in_data_sm(transaction_manager &tm, void *root);
} }
//---------------------------------------------------------------- //----------------------------------------------------------------