diff --git a/Makefile b/Makefile index 6e5827d..ffb728a 100644 --- a/Makefile +++ b/Makefile @@ -8,12 +8,12 @@ SOURCE=\ error_set.cc \ hex_dump.cc \ human_readable_format.cc \ - metadata.cc \ metadata_checker.cc \ metadata_dumper.cc \ metadata_ll.cc \ metadata_disk_structures.cc \ space_map_disk.cc \ + thin_pool.cc \ transaction_manager.cc \ xml_format.cc diff --git a/metadata.cc b/thin_pool.cc similarity index 74% rename from metadata.cc rename to thin_pool.cc index 49a98e3..eccd6b1 100644 --- a/metadata.cc +++ b/thin_pool.cc @@ -1,4 +1,4 @@ -#include "metadata.h" +#include "thin_pool.h" #include "btree_checker.h" @@ -15,9 +15,9 @@ using namespace thin_provisioning; //---------------------------------------------------------------- -thin::thin(thin_dev_t dev, metadata *metadata) +thin::thin(thin_dev_t dev, thin_pool *pool) : dev_(dev), - metadata_(metadata) + pool_(pool) { } @@ -31,7 +31,7 @@ thin::maybe_address thin::lookup(block_address thin_block) { uint64_t key[2] = {dev_, thin_block}; - return metadata_->md_->mappings_.lookup(key); + return pool_->md_->mappings_.lookup(key); } void @@ -41,33 +41,33 @@ thin::insert(block_address thin_block, block_address data_block) block_time bt; bt.block_ = data_block; bt.time_ = 0; // FIXME: use current time. - return metadata_->md_->mappings_.insert(key, bt); + return pool_->md_->mappings_.insert(key, bt); } void thin::remove(block_address thin_block) { uint64_t key[2] = {dev_, thin_block}; - metadata_->md_->mappings_.remove(key); + pool_->md_->mappings_.remove(key); } void thin::set_snapshot_time(uint32_t time) { uint64_t key[1] = { dev_ }; - optional mdetail = metadata_->md_->details_.lookup(key); + optional mdetail = pool_->md_->details_.lookup(key); if (!mdetail) throw runtime_error("no such device"); mdetail->snapshotted_time_ = time; - metadata_->md_->details_.insert(key, *mdetail); + pool_->md_->details_.insert(key, *mdetail); } block_address thin::get_mapped_blocks() const { uint64_t key[1] = { dev_ }; - optional mdetail = metadata_->md_->details_.lookup(key); + optional mdetail = pool_->md_->details_.lookup(key); if (!mdetail) throw runtime_error("no such device"); @@ -78,28 +78,28 @@ void thin::set_mapped_blocks(block_address count) { uint64_t key[1] = { dev_ }; - optional mdetail = metadata_->md_->details_.lookup(key); + optional mdetail = pool_->md_->details_.lookup(key); if (!mdetail) throw runtime_error("no such device"); mdetail->mapped_blocks_ = count; - metadata_->md_->details_.insert(key, *mdetail); + pool_->md_->details_.insert(key, *mdetail); } //-------------------------------- -metadata::metadata(metadata_ll::ptr md) +thin_pool::thin_pool(metadata_ll::ptr md) : md_(md) { } -metadata::~metadata() +thin_pool::~thin_pool() { } void -metadata::create_thin(thin_dev_t dev) +thin_pool::create_thin(thin_dev_t dev) { uint64_t key[1] = {dev}; @@ -112,7 +112,7 @@ metadata::create_thin(thin_dev_t dev) } void -metadata::create_snap(thin_dev_t dev, thin_dev_t origin) +thin_pool::create_snap(thin_dev_t dev, thin_dev_t origin) { uint64_t snap_key[1] = {dev}; uint64_t origin_key[1] = {origin}; @@ -138,62 +138,62 @@ metadata::create_snap(thin_dev_t dev, thin_dev_t origin) } void -metadata::del(thin_dev_t dev) +thin_pool::del(thin_dev_t dev) { uint64_t key[1] = {dev}; md_->mappings_top_level_.remove(key); } void -metadata::set_transaction_id(uint64_t id) +thin_pool::set_transaction_id(uint64_t id) { md_->sb_.trans_id_ = id; } uint64_t -metadata::get_transaction_id() const +thin_pool::get_transaction_id() const { return md_->sb_.trans_id_; } block_address -metadata::get_held_root() const +thin_pool::get_held_root() const { return md_->sb_.held_root_; } block_address -metadata::alloc_data_block() +thin_pool::alloc_data_block() { return md_->data_sm_->new_block(); } void -metadata::free_data_block(block_address b) +thin_pool::free_data_block(block_address b) { md_->data_sm_->dec(b); } block_address -metadata::get_nr_free_data_blocks() const +thin_pool::get_nr_free_data_blocks() const { return md_->data_sm_->get_nr_free(); } sector_t -metadata::get_data_block_size() const +thin_pool::get_data_block_size() const { return md_->sb_.data_block_size_; } block_address -metadata::get_data_dev_size() const +thin_pool::get_data_dev_size() const { return md_->data_sm_->get_nr_blocks(); } thin::ptr -metadata::open_thin(thin_dev_t dev) +thin_pool::open_thin(thin_dev_t dev) { uint64_t key[1] = {dev}; optional mdetails = md_->details_.lookup(key); @@ -206,7 +206,7 @@ metadata::open_thin(thin_dev_t dev) } bool -metadata::device_exists(thin_dev_t dev) const +thin_pool::device_exists(thin_dev_t dev) const { uint64_t key[1] = {dev}; return md_->details_.lookup(key); diff --git a/metadata.h b/thin_pool.h similarity index 76% rename from metadata.h rename to thin_pool.h index 2ac2a9a..4682121 100644 --- a/metadata.h +++ b/thin_pool.h @@ -9,7 +9,11 @@ //---------------------------------------------------------------- namespace thin_provisioning { - class metadata; + // This interface is very like that in the kernel. It'll allow us + // to write simulators to try out different space maps etc. Not + // currently used by the tools. + + class thin_pool; class thin { public: typedef boost::shared_ptr ptr; @@ -26,19 +30,19 @@ namespace thin_provisioning { void set_mapped_blocks(block_address count); private: - friend class metadata; - thin(thin_dev_t dev, metadata *metadata); + friend class thin_pool; + thin(thin_dev_t dev, thin_pool *pool); // FIXME: pass a reference rather than a ptr thin_dev_t dev_; - metadata *metadata_; + thin_pool *pool_; }; - class metadata { + class thin_pool { public: - typedef boost::shared_ptr ptr; + typedef boost::shared_ptr ptr; - metadata(metadata_ll::ptr md); - ~metadata(); + thin_pool(metadata_ll::ptr md); + ~thin_pool(); void create_thin(thin_dev_t dev); void create_snap(thin_dev_t dev, thin_dev_t origin); @@ -61,7 +65,6 @@ namespace thin_provisioning { private: friend class thin; - bool device_exists(thin_dev_t dev) const; metadata_ll::ptr md_;