From 0b058a28507d5602789db97614f8074501a3dfa7 Mon Sep 17 00:00:00 2001 From: Ming-Hung Tsai Date: Sun, 31 May 2020 01:18:45 +0800 Subject: [PATCH] [thin_pool] Encapsulate metadata into the pool class --- thin-provisioning/thin_pool.cc | 15 +++++++++++++-- thin-provisioning/thin_pool.h | 5 ++++- 2 files changed, 17 insertions(+), 3 deletions(-) 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);