diff --git a/Makefile b/Makefile index 04d0902..6e5827d 100644 --- a/Makefile +++ b/Makefile @@ -10,8 +10,8 @@ SOURCE=\ human_readable_format.cc \ metadata.cc \ metadata_checker.cc \ + metadata_dumper.cc \ metadata_ll.cc \ - metadata_dump.cc \ metadata_disk_structures.cc \ space_map_disk.cc \ transaction_manager.cc \ diff --git a/metadata.h b/metadata.h index 8c64482..2ac2a9a 100644 --- a/metadata.h +++ b/metadata.h @@ -1,7 +1,6 @@ #ifndef MULTISNAP_METADATA_H #define MULTISNAP_METADATA_H -#include "emitter.h" #include "metadata_ll.h" #include @@ -60,10 +59,6 @@ namespace thin_provisioning { thin::ptr open_thin(thin_dev_t); - // FIXME: split out into a separate interface - // Dumping metadata - void dump(emitter::ptr e); - private: friend class thin; diff --git a/metadata_dump.cc b/metadata_dumper.cc similarity index 91% rename from metadata_dump.cc rename to metadata_dumper.cc index e9bd9ed..fb0f6c6 100644 --- a/metadata_dump.cc +++ b/metadata_dumper.cc @@ -1,4 +1,4 @@ -#include "metadata.h" +#include "metadata_dumper.h" using namespace persistent_data; using namespace thin_provisioning; @@ -120,14 +120,16 @@ namespace { }; } +//---------------------------------------------------------------- + void -metadata::dump(emitter::ptr e) +thin_provisioning::metadata_dump(metadata_ll::ptr md, emitter::ptr e) { - e->begin_superblock("", md_->sb_.time_, md_->sb_.trans_id_, md_->sb_.data_block_size_); + e->begin_superblock("", md->sb_.time_, md->sb_.trans_id_, md->sb_.data_block_size_); details_extractor::ptr de(new details_extractor); - md_->details_.visit(de); + md->details_.visit(de); map const &devs = de->get_devices(); map::const_iterator it, end = devs.end(); @@ -141,8 +143,8 @@ metadata::dump(emitter::ptr e) dd.creation_time_, dd.snapshotted_time_); - mappings_extractor::ptr me(new mappings_extractor(dev_id, e, md_->metadata_sm_, md_->data_sm_)); - md_->mappings_.visit(me); + mappings_extractor::ptr me(new mappings_extractor(dev_id, e, md->metadata_sm_, md->data_sm_)); + md->mappings_.visit(me); e->end_device(); } diff --git a/metadata_dumper.h b/metadata_dumper.h new file mode 100644 index 0000000..ba6073e --- /dev/null +++ b/metadata_dumper.h @@ -0,0 +1,15 @@ +#ifndef METADATA_DUMPER_H +#define METADATA_DUMPER_H + +#include "emitter.h" +#include "metadata_ll.h" + +//---------------------------------------------------------------- + +namespace thin_provisioning { + void metadata_dump(metadata_ll::ptr md, emitter::ptr e); +} + +//---------------------------------------------------------------- + +#endif diff --git a/thin_dump.cc b/thin_dump.cc index 22500b4..49ae3a2 100644 --- a/thin_dump.cc +++ b/thin_dump.cc @@ -1,7 +1,8 @@ #include #include "human_readable_format.h" -#include "metadata.h" +#include "metadata_dumper.h" +#include "metadata_ll.h" #include "xml_format.h" #include @@ -16,8 +17,7 @@ namespace po = boost::program_options; namespace { void dump(string const &path, string const &format) { - metadata_ll::ptr ll(new metadata_ll(path)); - metadata md(ll); + metadata_ll::ptr md(new metadata_ll(path)); emitter::ptr e; if (format == "xml") @@ -29,7 +29,7 @@ namespace { exit(1); } - md.dump(e); + metadata_dump(md, e); } void usage(po::options_description const &desc) {