Rename metadata -> thin_pool/thin
This commit is contained in:
parent
9a4ebc8c25
commit
c2dfb0b462
2
Makefile
2
Makefile
@ -8,12 +8,12 @@ SOURCE=\
|
|||||||
error_set.cc \
|
error_set.cc \
|
||||||
hex_dump.cc \
|
hex_dump.cc \
|
||||||
human_readable_format.cc \
|
human_readable_format.cc \
|
||||||
metadata.cc \
|
|
||||||
metadata_checker.cc \
|
metadata_checker.cc \
|
||||||
metadata_dumper.cc \
|
metadata_dumper.cc \
|
||||||
metadata_ll.cc \
|
metadata_ll.cc \
|
||||||
metadata_disk_structures.cc \
|
metadata_disk_structures.cc \
|
||||||
space_map_disk.cc \
|
space_map_disk.cc \
|
||||||
|
thin_pool.cc \
|
||||||
transaction_manager.cc \
|
transaction_manager.cc \
|
||||||
xml_format.cc
|
xml_format.cc
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
#include "metadata.h"
|
#include "thin_pool.h"
|
||||||
|
|
||||||
#include "btree_checker.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),
|
: dev_(dev),
|
||||||
metadata_(metadata)
|
pool_(pool)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ thin::maybe_address
|
|||||||
thin::lookup(block_address thin_block)
|
thin::lookup(block_address thin_block)
|
||||||
{
|
{
|
||||||
uint64_t key[2] = {dev_, thin_block};
|
uint64_t key[2] = {dev_, thin_block};
|
||||||
return metadata_->md_->mappings_.lookup(key);
|
return pool_->md_->mappings_.lookup(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -41,33 +41,33 @@ thin::insert(block_address thin_block, block_address data_block)
|
|||||||
block_time bt;
|
block_time bt;
|
||||||
bt.block_ = data_block;
|
bt.block_ = data_block;
|
||||||
bt.time_ = 0; // FIXME: use current time.
|
bt.time_ = 0; // FIXME: use current time.
|
||||||
return metadata_->md_->mappings_.insert(key, bt);
|
return pool_->md_->mappings_.insert(key, bt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
thin::remove(block_address thin_block)
|
thin::remove(block_address thin_block)
|
||||||
{
|
{
|
||||||
uint64_t key[2] = {dev_, thin_block};
|
uint64_t key[2] = {dev_, thin_block};
|
||||||
metadata_->md_->mappings_.remove(key);
|
pool_->md_->mappings_.remove(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
thin::set_snapshot_time(uint32_t time)
|
thin::set_snapshot_time(uint32_t time)
|
||||||
{
|
{
|
||||||
uint64_t key[1] = { dev_ };
|
uint64_t key[1] = { dev_ };
|
||||||
optional<device_details> mdetail = metadata_->md_->details_.lookup(key);
|
optional<device_details> mdetail = pool_->md_->details_.lookup(key);
|
||||||
if (!mdetail)
|
if (!mdetail)
|
||||||
throw runtime_error("no such device");
|
throw runtime_error("no such device");
|
||||||
|
|
||||||
mdetail->snapshotted_time_ = time;
|
mdetail->snapshotted_time_ = time;
|
||||||
metadata_->md_->details_.insert(key, *mdetail);
|
pool_->md_->details_.insert(key, *mdetail);
|
||||||
}
|
}
|
||||||
|
|
||||||
block_address
|
block_address
|
||||||
thin::get_mapped_blocks() const
|
thin::get_mapped_blocks() const
|
||||||
{
|
{
|
||||||
uint64_t key[1] = { dev_ };
|
uint64_t key[1] = { dev_ };
|
||||||
optional<device_details> mdetail = metadata_->md_->details_.lookup(key);
|
optional<device_details> mdetail = pool_->md_->details_.lookup(key);
|
||||||
if (!mdetail)
|
if (!mdetail)
|
||||||
throw runtime_error("no such device");
|
throw runtime_error("no such device");
|
||||||
|
|
||||||
@ -78,28 +78,28 @@ void
|
|||||||
thin::set_mapped_blocks(block_address count)
|
thin::set_mapped_blocks(block_address count)
|
||||||
{
|
{
|
||||||
uint64_t key[1] = { dev_ };
|
uint64_t key[1] = { dev_ };
|
||||||
optional<device_details> mdetail = metadata_->md_->details_.lookup(key);
|
optional<device_details> mdetail = pool_->md_->details_.lookup(key);
|
||||||
if (!mdetail)
|
if (!mdetail)
|
||||||
throw runtime_error("no such device");
|
throw runtime_error("no such device");
|
||||||
|
|
||||||
mdetail->mapped_blocks_ = count;
|
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)
|
: md_(md)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
metadata::~metadata()
|
thin_pool::~thin_pool()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
metadata::create_thin(thin_dev_t dev)
|
thin_pool::create_thin(thin_dev_t dev)
|
||||||
{
|
{
|
||||||
uint64_t key[1] = {dev};
|
uint64_t key[1] = {dev};
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ metadata::create_thin(thin_dev_t dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
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 snap_key[1] = {dev};
|
||||||
uint64_t origin_key[1] = {origin};
|
uint64_t origin_key[1] = {origin};
|
||||||
@ -138,62 +138,62 @@ metadata::create_snap(thin_dev_t dev, thin_dev_t origin)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
metadata::del(thin_dev_t dev)
|
thin_pool::del(thin_dev_t dev)
|
||||||
{
|
{
|
||||||
uint64_t key[1] = {dev};
|
uint64_t key[1] = {dev};
|
||||||
md_->mappings_top_level_.remove(key);
|
md_->mappings_top_level_.remove(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
metadata::set_transaction_id(uint64_t id)
|
thin_pool::set_transaction_id(uint64_t id)
|
||||||
{
|
{
|
||||||
md_->sb_.trans_id_ = id;
|
md_->sb_.trans_id_ = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t
|
uint64_t
|
||||||
metadata::get_transaction_id() const
|
thin_pool::get_transaction_id() const
|
||||||
{
|
{
|
||||||
return md_->sb_.trans_id_;
|
return md_->sb_.trans_id_;
|
||||||
}
|
}
|
||||||
|
|
||||||
block_address
|
block_address
|
||||||
metadata::get_held_root() const
|
thin_pool::get_held_root() const
|
||||||
{
|
{
|
||||||
return md_->sb_.held_root_;
|
return md_->sb_.held_root_;
|
||||||
}
|
}
|
||||||
|
|
||||||
block_address
|
block_address
|
||||||
metadata::alloc_data_block()
|
thin_pool::alloc_data_block()
|
||||||
{
|
{
|
||||||
return md_->data_sm_->new_block();
|
return md_->data_sm_->new_block();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
metadata::free_data_block(block_address b)
|
thin_pool::free_data_block(block_address b)
|
||||||
{
|
{
|
||||||
md_->data_sm_->dec(b);
|
md_->data_sm_->dec(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
block_address
|
block_address
|
||||||
metadata::get_nr_free_data_blocks() const
|
thin_pool::get_nr_free_data_blocks() const
|
||||||
{
|
{
|
||||||
return md_->data_sm_->get_nr_free();
|
return md_->data_sm_->get_nr_free();
|
||||||
}
|
}
|
||||||
|
|
||||||
sector_t
|
sector_t
|
||||||
metadata::get_data_block_size() const
|
thin_pool::get_data_block_size() const
|
||||||
{
|
{
|
||||||
return md_->sb_.data_block_size_;
|
return md_->sb_.data_block_size_;
|
||||||
}
|
}
|
||||||
|
|
||||||
block_address
|
block_address
|
||||||
metadata::get_data_dev_size() const
|
thin_pool::get_data_dev_size() const
|
||||||
{
|
{
|
||||||
return md_->data_sm_->get_nr_blocks();
|
return md_->data_sm_->get_nr_blocks();
|
||||||
}
|
}
|
||||||
|
|
||||||
thin::ptr
|
thin::ptr
|
||||||
metadata::open_thin(thin_dev_t dev)
|
thin_pool::open_thin(thin_dev_t dev)
|
||||||
{
|
{
|
||||||
uint64_t key[1] = {dev};
|
uint64_t key[1] = {dev};
|
||||||
optional<device_details> mdetails = md_->details_.lookup(key);
|
optional<device_details> mdetails = md_->details_.lookup(key);
|
||||||
@ -206,7 +206,7 @@ metadata::open_thin(thin_dev_t dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
metadata::device_exists(thin_dev_t dev) const
|
thin_pool::device_exists(thin_dev_t dev) const
|
||||||
{
|
{
|
||||||
uint64_t key[1] = {dev};
|
uint64_t key[1] = {dev};
|
||||||
return md_->details_.lookup(key);
|
return md_->details_.lookup(key);
|
@ -9,7 +9,11 @@
|
|||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
|
|
||||||
namespace thin_provisioning {
|
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 {
|
class thin {
|
||||||
public:
|
public:
|
||||||
typedef boost::shared_ptr<thin> ptr;
|
typedef boost::shared_ptr<thin> ptr;
|
||||||
@ -26,19 +30,19 @@ namespace thin_provisioning {
|
|||||||
void set_mapped_blocks(block_address count);
|
void set_mapped_blocks(block_address count);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class metadata;
|
friend class thin_pool;
|
||||||
thin(thin_dev_t dev, metadata *metadata);
|
thin(thin_dev_t dev, thin_pool *pool); // FIXME: pass a reference rather than a ptr
|
||||||
|
|
||||||
thin_dev_t dev_;
|
thin_dev_t dev_;
|
||||||
metadata *metadata_;
|
thin_pool *pool_;
|
||||||
};
|
};
|
||||||
|
|
||||||
class metadata {
|
class thin_pool {
|
||||||
public:
|
public:
|
||||||
typedef boost::shared_ptr<metadata> ptr;
|
typedef boost::shared_ptr<thin_pool> ptr;
|
||||||
|
|
||||||
metadata(metadata_ll::ptr md);
|
thin_pool(metadata_ll::ptr md);
|
||||||
~metadata();
|
~thin_pool();
|
||||||
|
|
||||||
void create_thin(thin_dev_t dev);
|
void create_thin(thin_dev_t dev);
|
||||||
void create_snap(thin_dev_t dev, thin_dev_t origin);
|
void create_snap(thin_dev_t dev, thin_dev_t origin);
|
||||||
@ -61,7 +65,6 @@ namespace thin_provisioning {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
friend class thin;
|
friend class thin;
|
||||||
|
|
||||||
bool device_exists(thin_dev_t dev) const;
|
bool device_exists(thin_dev_t dev) const;
|
||||||
|
|
||||||
metadata_ll::ptr md_;
|
metadata_ll::ptr md_;
|
Loading…
x
Reference in New Issue
Block a user