diff --git a/man8/thin_dump.8 b/man8/thin_dump.8 index 4d8c1a8..28b6d8b 100644 --- a/man8/thin_dump.8 +++ b/man8/thin_dump.8 @@ -39,10 +39,13 @@ the thin provisioning device-mapper target, else try the one at block#. See the thin provisioning target documentation on how to create or release a metadata snapshot and retrieve the block number from the kernel. -.IP "\fN\-\-dev\-id\fP ". +.IP "\fB\-\-dev\-id\fP ". Dump the specified device. This option may be specified multiple times to select more than one thin device. +.IP "\fB\-\-skip\-mappings". +Do not dump the mappings. + .IP "\fB\-h, \-\-help\fP". Print help and exit. diff --git a/thin-provisioning/metadata_dumper.cc b/thin-provisioning/metadata_dumper.cc index 96f64a3..ba29bfa 100644 --- a/thin-provisioning/metadata_dumper.cc +++ b/thin-provisioning/metadata_dumper.cc @@ -195,7 +195,8 @@ namespace { d.snapshotted_time_); try { - emit_mappings(tree_root); + if (!opts_.skip_mappings_) + emit_mappings(tree_root); } catch (exception &e) { cerr << e.what(); e_->end_device(); diff --git a/thin-provisioning/metadata_dumper.h b/thin-provisioning/metadata_dumper.h index a615a9e..15bf668 100644 --- a/thin-provisioning/metadata_dumper.h +++ b/thin-provisioning/metadata_dumper.h @@ -31,7 +31,8 @@ namespace thin_provisioning { class dump_options { public: dump_options() - : repair_(false) { + : repair_(false), + skip_mappings_(false) { } bool selected_dev(uint64_t dev_id) const { @@ -46,6 +47,7 @@ namespace thin_provisioning { } bool repair_; + bool skip_mappings_; using dev_set = std::set; using maybe_dev_set = boost::optional; diff --git a/thin-provisioning/thin_dump.cc b/thin-provisioning/thin_dump.cc index 515b31a..932fa3a 100644 --- a/thin-provisioning/thin_dump.cc +++ b/thin-provisioning/thin_dump.cc @@ -128,6 +128,7 @@ thin_dump_cmd::run(int argc, char **argv) { "format", required_argument, NULL, 'f' }, { "repair", no_argument, NULL, 'r'}, { "dev-id", required_argument, NULL, 1 }, + { "skip-mappings", no_argument, NULL, 2 }, { "version", no_argument, NULL, 'V'}, { NULL, no_argument, NULL, 0 } }; @@ -175,6 +176,10 @@ thin_dump_cmd::run(int argc, char **argv) flags.opts.select_dev(dev_id); break; + case 2: + flags.opts.skip_mappings_ = true; + break; + case 'V': cout << THIN_PROVISIONING_TOOLS_VERSION << endl; return 0;