From 87fa6dc07954fb6e897962b49b734e69634ddee8 Mon Sep 17 00:00:00 2001 From: Joe Thornber Date: Mon, 9 Jun 2014 10:37:46 +0100 Subject: [PATCH] [thin_delta] --version/-V --- Makefile.in | 29 +++++++++++++++++++++++++++++ features/thin_delta.feature | 8 ++++++++ thin-provisioning/thin_delta.cc | 29 +++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 features/thin_delta.feature create mode 100644 thin-provisioning/thin_delta.cc diff --git a/Makefile.in b/Makefile.in index 27d0292..eab3006 100644 --- a/Makefile.in +++ b/Makefile.in @@ -31,6 +31,7 @@ PROGRAMS=\ era_invalidate \ \ thin_check \ + thin_delta \ thin_dump \ thin_restore \ thin_repair \ @@ -95,6 +96,7 @@ CXX_PROGRAM_SOURCE=\ caching/cache_restore.cc \ \ thin-provisioning/thin_check.cc \ + thin-provisioning/thin_delta.cc \ thin-provisioning/thin_dump.cc \ thin-provisioning/thin_restore.cc \ thin-provisioning/thin_repair.cc \ @@ -187,6 +189,28 @@ THIN_CHECK_SOURCE=\ thin-provisioning/metadata_checker.cc \ thin-provisioning/superblock.cc +THIN_DELTA_SOURCE=\ + base/error_state.cc \ + base/endian_utils.cc \ + \ + persistent-data/checksum.cc \ + persistent-data/error_set.cc \ + persistent-data/file_utils.cc \ + persistent-data/hex_dump.cc \ + persistent-data/lock_tracker.cc \ + persistent-data/data-structures/btree.cc \ + persistent-data/space_map.cc \ + persistent-data/space-maps/disk.cc \ + persistent-data/space-maps/recursive.cc \ + persistent-data/space-maps/careful_alloc.cc \ + persistent-data/transaction_manager.cc \ + \ + thin-provisioning/device_tree.cc \ + thin-provisioning/mapping_tree.cc \ + thin-provisioning/metadata.cc \ + thin-provisioning/metadata_checker.cc \ + thin-provisioning/superblock.cc + THIN_RMAP_SOURCE=\ base/endian_utils.cc \ \ @@ -213,6 +237,7 @@ THIN_DUMP_OBJECTS=$(subst .cc,.o,$(THIN_DUMP_SOURCE)) THIN_REPAIR_OBJECTS=$(subst .cc,.o,$(THIN_REPAIR_SOURCE)) THIN_RESTORE_OBJECTS=$(subst .cc,.o,$(THIN_RESTORE_SOURCE)) THIN_CHECK_OBJECTS=$(subst .cc,.o,$(THIN_CHECK_SOURCE)) +THIN_DELTA_OBJECTS=$(subst .cc,.o,$(THIN_DELTA_SOURCE)) THIN_RMAP_OBJECTS=$(subst .cc,.o,$(THIN_RMAP_SOURCE)) thin_debug: $(THIN_DEBUG_OBJECTS) thin-provisioning/thin_debug.o @@ -235,6 +260,10 @@ thin_check: $(THIN_CHECK_OBJECTS) thin-provisioning/thin_check.o @echo " [LD] $@" $(V) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $+ $(LIBS) +thin_delta: $(THIN_DELTA_OBJECTS) thin-provisioning/thin_delta.o + @echo " [LD] $@" + $(V) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $+ $(LIBS) + thin_rmap: $(THIN_RMAP_OBJECTS) thin-provisioning/thin_rmap.o @echo " [LD] $@" $(V) $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $+ $(LIBS) diff --git a/features/thin_delta.feature b/features/thin_delta.feature new file mode 100644 index 0000000..9fd55b4 --- /dev/null +++ b/features/thin_delta.feature @@ -0,0 +1,8 @@ +Feature: thin_delta + Scenario: print version (-V flag) + When I run `thin_delta -V` + Then it should pass with version + + Scenario: print version (--version flag) + When I run `thin_delta --version` + Then it should pass with version diff --git a/thin-provisioning/thin_delta.cc b/thin-provisioning/thin_delta.cc new file mode 100644 index 0000000..0959c2b --- /dev/null +++ b/thin-provisioning/thin_delta.cc @@ -0,0 +1,29 @@ +#include +#include + +#include "version.h" + +using namespace std; + +//---------------------------------------------------------------- + +int main(int argc, char **argv) +{ + int c; + char const shortopts[] = "V"; + option const longopts[] = { + { "version", no_argument, NULL, 'V'} + }; + + while ((c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1) { + switch (c) { + case 'V': + cout << THIN_PROVISIONING_TOOLS_VERSION << endl; + return 0; + } + } + + return 0; +} + +//----------------------------------------------------------------