diff --git a/Makefile.in b/Makefile.in index e0ce06f..73326b1 100644 --- a/Makefile.in +++ b/Makefile.in @@ -299,6 +299,10 @@ distclean: clean install: $(PROGRAMS) $(INSTALL_DIR) $(BINDIR) + $(INSTALL_PROGRAM) cache_check $(BINDIR) + $(INSTALL_PROGRAM) cache_dump $(BINDIR) + $(INSTALL_PROGRAM) cache_repair $(BINDIR) + $(INSTALL_PROGRAM) cache_restore $(BINDIR) $(INSTALL_PROGRAM) thin_check $(BINDIR) $(INSTALL_PROGRAM) thin_dump $(BINDIR) $(INSTALL_PROGRAM) thin_repair $(BINDIR) @@ -306,6 +310,10 @@ install: $(PROGRAMS) $(INSTALL_PROGRAM) thin_rmap $(BINDIR) $(INSTALL_PROGRAM) thin_metadata_size $(BINDIR) $(INSTALL_DIR) $(MANPATH)/man8 + $(INSTALL_DATA) man8/cache_check.8 $(MANPATH)/man8 + $(INSTALL_DATA) man8/cache_dump.8 $(MANPATH)/man8 + $(INSTALL_DATA) man8/cache_repair.8 $(MANPATH)/man8 + $(INSTALL_DATA) man8/cache_restore.8 $(MANPATH)/man8 $(INSTALL_DATA) man8/thin_check.8 $(MANPATH)/man8 $(INSTALL_DATA) man8/thin_dump.8 $(MANPATH)/man8 $(INSTALL_DATA) man8/thin_repair.8 $(MANPATH)/man8 diff --git a/man8/cache_check.8 b/man8/cache_check.8 new file mode 100644 index 0000000..5cc7dff --- /dev/null +++ b/man8/cache_check.8 @@ -0,0 +1,62 @@ +.TH CACHE_CHECK 8 "Thin Provisioning Tools" "Red Hat, Inc." \" -*- nroff -*- +.SH NAME +cache_check \- repair cache metadata on device or file + +.SH SYNOPSIS +.B cache_check +.RB [ options ] +.I {device|file} + +.SH DESCRIPTION +.B cache_check +checks cache metadata created by +the device-mapper cache target on a +.I device +or +.I file. + +.SH OPTIONS +.IP "\fB\-q, \-\-quiet\fP" +Suppress output messages, return only exit code. + +.IP "\fB\-h, \-\-help\fP" +Print help and exit. + +.IP "\fB\-V, \-\-version\fP" +Output version information and exit. + +.IP "\fB\-\-super\-block\-only\fP" +Only check the superblock is present. + +.IP "\fB\-\-skip-mappings\fP" +Skip checking of the block mappings which make up the bulk of the +metadata. + +.IP "\fB\-\-skip-hints\fP" +Skip checking of the policy hint values metadata. + +.IP "\fB\-\-skip-discards\fP" +Skip checking of the discard bits in the metadata. + +.SH EXAMPLE +Analyses and repairs cache metadata on logical volume +/dev/vg/metadata: +.sp +.B cache_check /dev/vg/metadata + +The device may not be actively used by the target +when running. + +.SH DIAGNOSTICS +.B cache_check +returns an exit code of 0 for success or 1 for error. + +.SH SEE ALSO +.B cache_dump(8) +.B cache_repair(8) +.B cache_restore(8) + +.SH AUTHOR +Joe Thornber +.br +Heinz Mauelshagen diff --git a/man8/cache_dump.8 b/man8/cache_dump.8 new file mode 100644 index 0000000..a0c2924 --- /dev/null +++ b/man8/cache_dump.8 @@ -0,0 +1,59 @@ +.TH CACHE_DUMP 8 "Thin Provisioning Tools" "Red Hat, Inc." \" -*- nroff -*- +.SH NAME +cache_dump \- dump cache metadata from device or file to standard output + +.SH SYNOPSIS +.B cache_dump +.RB [options] +.I {device|file} + +.SH DESCRIPTION +.B cache_dump +dumps binary cache metadata created by +the device-mapper cache target on a +.I device +or +.I file +to standard output for +analysis or postprocessing in XML format. +XML formated metadata can be fed into cache_restore (see +.BR cache_restore(8) ) +in order to put it back onto a metadata +.I device +(to process by the device-mapper target) or +.I file. + +.IP "\fB\-r, \-\-repair\fP". +Repair the metadata whilst dumping it. + +.IP "\fB\-h, \-\-help\fP". +Print help and exit. + +.IP "\fB\-V, \-\-version\fP". +Output version information and exit. + +.SH EXAMPLES +Dumps the cache metadata on logical volume /dev/vg/metadata +to standard output in XML format: +.sp +.B cache_dump /dev/vg/metadata + +.SH EXAMPLES +Dumps the cache metadata on logical volume /dev/vg/metadata +whilst repairing it to standard output in XML format: +.sp +.B cache_dump --repair /dev/vg/metadata + +.SH DIAGNOSTICS +.B cache_dump +returns an exit code of 0 for success or 1 for error. + +.SH SEE ALSO +.B cache_check(8) +.B cache_repair(8) +.B cache_restore(8) + +.SH AUTHOR +Joe Thornber +.br +Heinz Mauelshagen diff --git a/man8/cache_repair.8 b/man8/cache_repair.8 new file mode 100644 index 0000000..ef04a7f --- /dev/null +++ b/man8/cache_repair.8 @@ -0,0 +1,61 @@ +.TH CACHE_REPAIR 8 "Thin Provisioning Tools" "Red Hat, Inc." \" -*- nroff -*- +.SH NAME +cache_repair \- repair cache binary metadata from device/file to device/file + +.SH SYNOPSIS +.B cache_repair +.RB [ options ] +.RB -i +.I {device|file} +.RB -o +.I {device|file} + +.SH DESCRIPTION +.B cache_repair +reads binary cache metadata created by the +respective device-mapper target from one +.I device +or +.I file +, repairs it and writes it to another +.I device +or +.I file. +If written to a metadata +.I device +, the metadata can be processed +by the device-mapper target. + +.IP "\fB\-i, \-\-input\fP \fI{device|file}\fP" +Input file or device with binary metadata. + +.IP "\fB\-o, \-\-output\fP \fI{device|file}\fP" +Output file or device for repaired binary metadata. + +.IP "\fB\-h, \-\-help\fP" +Print help and exit. + +.IP "\fB\-V, \-\-version\fP" +Output version information and exit. + +.SH EXAMPLE +Reads the binary cache metadata from file +.B metadata +, repairs it and writes it to logical volume /dev/vg/metadata +for further processing by the respective device-mapper target: +.sp +.B cache_repair -i metadata -o /dev/vg/metadata + +.SH DIAGNOSTICS +.B cache_repair +returns an exit code of 0 for success or 1 for error. + +.SH SEE ALSO +.B cache_dump(8) +.B cache_check(8) +.B cache_restore(8) + +.SH AUTHOR +Joe Thornber +.br +Heinz Mauelshagen diff --git a/man8/cache_restore.8 b/man8/cache_restore.8 new file mode 100644 index 0000000..5f9fdca --- /dev/null +++ b/man8/cache_restore.8 @@ -0,0 +1,64 @@ +.TH CACHE_RESTORE 8 "Thin Provisioning Tools" "Red Hat, Inc." \" -*- nroff -*- +.SH NAME +cache_restore \- restore cache metadata file to device or file + +.SH SYNOPSIS +.B cache_restore +.RB [ options ] +.RB -i +.I {device|file} +.RB -o +.I {device|file} + +.SH DESCRIPTION +.B cache_restore +restores cache metadata created by the respective +device-mapper target dumped into an XML formatted (see +.BR cache_dump(8) ) +.I file +, which optionally can be preprocessed before the restore to another +.I device +or +.I file. +If restored to a metadata +.I device +, the metadata can be processed by the device-mapper target. + +.IP "\fB\-i, \-\-input\fP \fI{device|file}\fP" +Input file or device with metadata. + +.IP "\fB\-o, \-\-output\fP \fI{device|file}\fP" +Output file or device. + +.IP "\fB{\-\-debug-override-metadata-version}\fP \fI\fP" +ONLY FOR DEBUGGING PURPOSES: +.br +override the version stored in the metadata. + +.IP "\fB\-h, \-\-help\fP" +Print help and exit. + +.IP "\fB\-V, \-\-version\fP" +Output version information and exit. + +.SH EXAMPLE +Restores the XML formatted cache metadata on file +.B metadata +to logical volume /dev/vg/metadata for further processing by the +respective device-mapper target: +.sp +.B cache_restore -i metadata -o /dev/vg/metadata + +.SH DIAGNOSTICS +.B cache_restore +returns an exit code of 0 for success or 1 for error. + +.SH SEE ALSO +.B cache_dump(8) +.B cache_check(8) +.B cache_repair(8) + +.SH AUTHOR +Joe Thornber +.br +Heinz Mauelshagen diff --git a/persistent-data/buffer.h b/persistent-data/buffer.h index b1a7989..527a239 100644 --- a/persistent-data/buffer.h +++ b/persistent-data/buffer.h @@ -41,7 +41,7 @@ namespace persistent_data { // guarantees. // // Alignment must be a power of two. - template + template class buffer : private boost::noncopyable { public: BOOST_STATIC_ASSERT((Alignment > 1) & !(Alignment & (Alignment - 1))); diff --git a/persistent-data/space-maps/disk.cc b/persistent-data/space-maps/disk.cc index 9e435b6..36937ec 100644 --- a/persistent-data/space-maps/disk.cc +++ b/persistent-data/space-maps/disk.cc @@ -21,6 +21,7 @@ #include "persistent-data/space-maps/recursive.h" #include "persistent-data/space-maps/careful_alloc.h" +#include "persistent-data/data-structures/btree_checker.h" #include "persistent-data/checksum.h" #include "persistent-data/endian_utils.h" #include "persistent-data/math_utils.h" diff --git a/persistent-data/space-maps/disk.h b/persistent-data/space-maps/disk.h index 070bc44..5241419 100644 --- a/persistent-data/space-maps/disk.h +++ b/persistent-data/space-maps/disk.h @@ -19,8 +19,7 @@ #ifndef SPACE_MAP_DISK_H #define SPACE_MAP_DISK_H -// FIXME: why is btree_checker needed? -#include "persistent-data/data-structures/btree_checker.h" +#include "persistent-data/transaction_manager.h" #include "persistent-data/space_map.h" //---------------------------------------------------------------- diff --git a/unit-tests/endian_t.cc b/unit-tests/endian_t.cc index b055318..9fbbc06 100644 --- a/unit-tests/endian_t.cc +++ b/unit-tests/endian_t.cc @@ -17,10 +17,9 @@ // . #include "gmock/gmock.h" -#include "persistent-data/space-maps/disk.h" +#include "persistent-data/endian_utils.h" using namespace base; -using namespace persistent_data; using namespace std; using namespace testing;