diff --git a/thin-provisioning/thin_pool.cc b/thin-provisioning/thin_pool.cc index d133711..ffb9936 100644 --- a/thin-provisioning/thin_pool.cc +++ b/thin-provisioning/thin_pool.cc @@ -104,9 +104,20 @@ thin::set_mapped_blocks(block_address count) //-------------------------------- -thin_pool::thin_pool(metadata::ptr md) - : md_(md) +thin_pool::thin_pool(block_manager::ptr bm) { + md_ = metadata::ptr(new metadata(bm, true)); +} + +thin_pool::thin_pool(block_manager::ptr bm, + sector_t data_block_size, + block_address nr_data_blocks) +{ + md_ = metadata::ptr(new metadata(bm, + metadata::CREATE, + data_block_size, + nr_data_blocks)); + md_->commit(); } thin_pool::~thin_pool() diff --git a/thin-provisioning/thin_pool.h b/thin-provisioning/thin_pool.h index fe4248b..7b95e12 100644 --- a/thin-provisioning/thin_pool.h +++ b/thin-provisioning/thin_pool.h @@ -58,7 +58,10 @@ namespace thin_provisioning { public: typedef std::shared_ptr ptr; - thin_pool(metadata::ptr md); + thin_pool(block_manager::ptr bm); + thin_pool(block_manager::ptr bm, + sector_t data_block_size, + block_address nr_data_blocks); ~thin_pool(); void create_thin(thin_dev_t dev);