tweaks to metadata constructor, and some updated features.

This commit is contained in:
Joe Thornber 2013-06-19 11:34:01 +01:00
parent 172353d1a5
commit 055b237126
5 changed files with 25 additions and 13 deletions

View File

@ -1,6 +1,6 @@
Given(/^valid metadata$/) do Given(/^valid metadata$/) do
in_current_dir do in_current_dir do
write_valid_xml(xml_file) system("thinp_xml create --nr-thins uniform[4..9] --nr-mappings uniform[1000..10000] > #{xml_file}")
end end
run_simple("dd if=/dev/zero of=#{dev_file} bs=4k count=1024") run_simple("dd if=/dev/zero of=#{dev_file} bs=4k count=1024")

View File

@ -1,3 +1,7 @@
Before do
@aruba_timeout_seconds = 10
end
module ThinpWorld module ThinpWorld
def tools_version def tools_version
"0.1.5+" "0.1.5+"
@ -21,8 +25,8 @@ module ThinpWorld
File.open(path, "w+") do |f| File.open(path, "w+") do |f|
f.write <<EOF f.write <<EOF
<superblock uuid="" time="0" transaction="0" data_block_size="128" nr_data_blocks="1000"> <superblock uuid="" time="0" transaction="0" data_block_size="128" nr_data_blocks="1000">
<device dev_id="0" mapped_blocks="2" transaction="0" creation_time="0" snap_time="0"> <device dev_id="0" mapped_blocks="100" transaction="0" creation_time="0" snap_time="0">
<range_mapping origin_begin="0" data_begin="0" length="2" time="0"/> <range_mapping origin_begin="25" data_begin="0" length="100" time="0"/>
</device> </device>
</superblock> </superblock>
EOF EOF

View File

@ -48,6 +48,7 @@ Feature: thin_rmap
When I run `thin_rmap --unleash-the-hedeghogs` When I run `thin_rmap --unleash-the-hedeghogs`
Then it should fail Then it should fail
@announce
Scenario: Valid region format should pass Scenario: Valid region format should pass
Given valid metadata Given valid metadata
When I run thin_rmap with --region 23..7890 When I run thin_rmap with --region 23..7890

View File

@ -34,7 +34,7 @@ using namespace base;
using namespace thin_provisioning; using namespace thin_provisioning;
//---------------------------------------------------------------- //----------------------------------------------------------------
#if 0
namespace { namespace {
using namespace superblock_detail; using namespace superblock_detail;
@ -108,11 +108,18 @@ metadata::metadata(std::string const &dev_path, open_type ot,
tm_->set_sm(metadata_sm_); tm_->set_sm(metadata_sm_);
data_sm_ = open_disk_sm(tm_, static_cast<void *>(&sb_.data_space_map_root_)); data_sm_ = open_disk_sm(tm_, static_cast<void *>(&sb_.data_space_map_root_));
details_ = device_tree::ptr(new device_tree(tm_, sb_.device_details_root_, device_tree_detail::device_details_traits::ref_counter()));
mappings_top_level_ = dev_tree::ptr(new dev_tree(tm_, sb_.data_mapping_root_, details_ = device_tree::ptr(
mapping_tree_detail::mtree_ref_counter(tm_))); new device_tree(tm_, sb_.device_details_root_,
mappings_ = mapping_tree::ptr(new mapping_tree(tm_, sb_.data_mapping_root_, device_tree_detail::device_details_traits::ref_counter()));
mapping_tree_detail::block_time_ref_counter(data_sm_)));
mappings_top_level_ = dev_tree::ptr(
new dev_tree(tm_, sb_.data_mapping_root_,
mapping_tree_detail::mtree_ref_counter(tm_)));
mappings_ = mapping_tree::ptr(
new mapping_tree(tm_, sb_.data_mapping_root_,
mapping_tree_detail::block_time_ref_counter(data_sm_)));
break; break;
case CREATE: case CREATE:
@ -142,10 +149,11 @@ metadata::metadata(std::string const &dev_path, open_type ot,
} }
} }
metadata::metadata(std::string const &dev_path, block_address metadata_snap) metadata::metadata(std::string const &dev_path)
{ {
tm_ = open_tm(open_bm(dev_path, false)); tm_ = open_tm(open_bm(dev_path, false));
sb_ = read_superblock(tm_->get_bm(), metadata_snap); sb_ = read_superblock(tm_->get_bm());
// We don't open the metadata sm for a held root // We don't open the metadata sm for a held root
//metadata_sm_ = open_metadata_sm(tm_, &sb_.metadata_space_map_root_); //metadata_sm_ = open_metadata_sm(tm_, &sb_.metadata_space_map_root_);
tm_->set_sm(metadata_sm_); tm_->set_sm(metadata_sm_);
@ -227,4 +235,3 @@ metadata::commit()
} }
//---------------------------------------------------------------- //----------------------------------------------------------------
#endif

View File

@ -65,7 +65,7 @@ namespace thin_provisioning {
sector_t data_block_size = 128, sector_t data_block_size = 128,
block_address nr_data_blocks = 0); // Only used if CREATE block_address nr_data_blocks = 0); // Only used if CREATE
metadata(std::string const &dev_path, block_address metadata_snap); metadata(std::string const &dev_path);
// ... use these instead ... // ... use these instead ...
metadata(block_manager<>::ptr bm, open_type ot, metadata(block_manager<>::ptr bm, open_type ot,