parent
8f9f9c74f6
commit
8806dfe4f4
@ -301,7 +301,7 @@ namespace {
|
|||||||
|
|
||||||
int writeback_(flags const &f) {
|
int writeback_(flags const &f) {
|
||||||
block_manager::ptr bm = open_bm(*f.metadata_dev, block_manager::READ_WRITE);
|
block_manager::ptr bm = open_bm(*f.metadata_dev, block_manager::READ_WRITE);
|
||||||
metadata md(bm);
|
metadata md(bm, true);
|
||||||
|
|
||||||
// FIXME: we're going to have to copy runs to get the through put with small block sizes
|
// FIXME: we're going to have to copy runs to get the through put with small block sizes
|
||||||
unsigned max_ios = f.cache_size / (md.sb_.data_block_size << SECTOR_SHIFT);
|
unsigned max_ios = f.cache_size / (md.sb_.data_block_size << SECTOR_SHIFT);
|
||||||
|
@ -45,9 +45,9 @@ metadata::metadata(block_manager::ptr bm, open_type ot, unsigned metadata_versio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
metadata::metadata(block_manager::ptr bm)
|
metadata::metadata(block_manager::ptr bm, bool read_space_map)
|
||||||
{
|
{
|
||||||
open_metadata(bm);
|
open_metadata(bm, read_space_map);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -90,11 +90,16 @@ metadata::create_metadata(block_manager::ptr bm, unsigned metadata_version)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
metadata::open_metadata(block_manager::ptr bm)
|
metadata::open_metadata(block_manager::ptr bm, bool read_space_map)
|
||||||
{
|
{
|
||||||
tm_ = open_tm(bm);
|
tm_ = open_tm(bm);
|
||||||
sb_ = read_superblock(tm_->get_bm());
|
sb_ = read_superblock(tm_->get_bm());
|
||||||
|
|
||||||
|
if (read_space_map) {
|
||||||
|
metadata_sm_ = open_metadata_sm(*tm_, &sb_.metadata_space_map_root);
|
||||||
|
tm_->set_sm(metadata_sm_);
|
||||||
|
}
|
||||||
|
|
||||||
mappings_ = mapping_array::ptr(
|
mappings_ = mapping_array::ptr(
|
||||||
new mapping_array(*tm_,
|
new mapping_array(*tm_,
|
||||||
mapping_array::ref_counter(),
|
mapping_array::ref_counter(),
|
||||||
|
@ -27,7 +27,7 @@ namespace caching {
|
|||||||
typedef std::shared_ptr<metadata> ptr;
|
typedef std::shared_ptr<metadata> ptr;
|
||||||
|
|
||||||
metadata(block_manager::ptr bm, open_type ot, unsigned metadata_version = 2); // Create only
|
metadata(block_manager::ptr bm, open_type ot, unsigned metadata_version = 2); // Create only
|
||||||
metadata(block_manager::ptr bm);
|
metadata(block_manager::ptr bm, bool read_space_map = false);
|
||||||
|
|
||||||
void commit(bool clean_shutdown = true);
|
void commit(bool clean_shutdown = true);
|
||||||
void setup_hint_array(size_t width);
|
void setup_hint_array(size_t width);
|
||||||
@ -46,7 +46,7 @@ namespace caching {
|
|||||||
void init_superblock();
|
void init_superblock();
|
||||||
|
|
||||||
void create_metadata(block_manager::ptr bm, unsigned metadata_version);
|
void create_metadata(block_manager::ptr bm, unsigned metadata_version);
|
||||||
void open_metadata(block_manager::ptr bm);
|
void open_metadata(block_manager::ptr bm, bool read_space_map);
|
||||||
|
|
||||||
void commit_space_map();
|
void commit_space_map();
|
||||||
void commit_mappings();
|
void commit_mappings();
|
||||||
|
Loading…
Reference in New Issue
Block a user