[space map disk] Add get_nr_blocks_in_data_sm()
which just uses the root
This commit is contained in:
		| @@ -773,4 +773,15 @@ persistent_data::open_metadata_sm(transaction_manager &tm, void *root) | ||||
| 			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_; | ||||
| } | ||||
|  | ||||
| //---------------------------------------------------------------- | ||||
|   | ||||
| @@ -36,6 +36,11 @@ namespace persistent_data { | ||||
|  | ||||
| 	checked_space_map::ptr | ||||
| 	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); | ||||
| } | ||||
|  | ||||
| //---------------------------------------------------------------- | ||||
|   | ||||
		Reference in New Issue
	
	Block a user