Merge branch 'master' of github.com:jthornber/thin-provisioning-tools

This commit is contained in:
Joe Thornber 2013-10-30 13:15:39 +00:00
commit 15627ecd69
9 changed files with 258 additions and 5 deletions

View File

@ -299,6 +299,10 @@ distclean: clean
install: $(PROGRAMS) install: $(PROGRAMS)
$(INSTALL_DIR) $(BINDIR) $(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_check $(BINDIR)
$(INSTALL_PROGRAM) thin_dump $(BINDIR) $(INSTALL_PROGRAM) thin_dump $(BINDIR)
$(INSTALL_PROGRAM) thin_repair $(BINDIR) $(INSTALL_PROGRAM) thin_repair $(BINDIR)
@ -306,6 +310,10 @@ install: $(PROGRAMS)
$(INSTALL_PROGRAM) thin_rmap $(BINDIR) $(INSTALL_PROGRAM) thin_rmap $(BINDIR)
$(INSTALL_PROGRAM) thin_metadata_size $(BINDIR) $(INSTALL_PROGRAM) thin_metadata_size $(BINDIR)
$(INSTALL_DIR) $(MANPATH)/man8 $(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_check.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_dump.8 $(MANPATH)/man8 $(INSTALL_DATA) man8/thin_dump.8 $(MANPATH)/man8
$(INSTALL_DATA) man8/thin_repair.8 $(MANPATH)/man8 $(INSTALL_DATA) man8/thin_repair.8 $(MANPATH)/man8

62
man8/cache_check.8 Normal file
View File

@ -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 <ejt@redhat.com>
.br
Heinz Mauelshagen <HeinzM@RedHat.com>

59
man8/cache_dump.8 Normal file
View File

@ -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 <ejt@redhat.com>
.br
Heinz Mauelshagen <HeinzM@RedHat.com>

61
man8/cache_repair.8 Normal file
View File

@ -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 <ejt@redhat.com>
.br
Heinz Mauelshagen <HeinzM@RedHat.com>

64
man8/cache_restore.8 Normal file
View File

@ -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<integer>\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 <ejt@redhat.com>
.br
Heinz Mauelshagen <HeinzM@RedHat.com>

View File

@ -41,7 +41,7 @@ namespace persistent_data {
// guarantees. // guarantees.
// //
// Alignment must be a power of two. // Alignment must be a power of two.
template <uint32_t Size = DEFAULT_BUFFER_SIZE, uint32_t Alignment = 512> template <uint32_t Size = DEFAULT_BUFFER_SIZE, uint32_t Alignment = 4096>
class buffer : private boost::noncopyable { class buffer : private boost::noncopyable {
public: public:
BOOST_STATIC_ASSERT((Alignment > 1) & !(Alignment & (Alignment - 1))); BOOST_STATIC_ASSERT((Alignment > 1) & !(Alignment & (Alignment - 1)));

View File

@ -21,6 +21,7 @@
#include "persistent-data/space-maps/recursive.h" #include "persistent-data/space-maps/recursive.h"
#include "persistent-data/space-maps/careful_alloc.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/checksum.h"
#include "persistent-data/endian_utils.h" #include "persistent-data/endian_utils.h"
#include "persistent-data/math_utils.h" #include "persistent-data/math_utils.h"

View File

@ -19,8 +19,7 @@
#ifndef SPACE_MAP_DISK_H #ifndef SPACE_MAP_DISK_H
#define SPACE_MAP_DISK_H #define SPACE_MAP_DISK_H
// FIXME: why is btree_checker needed? #include "persistent-data/transaction_manager.h"
#include "persistent-data/data-structures/btree_checker.h"
#include "persistent-data/space_map.h" #include "persistent-data/space_map.h"
//---------------------------------------------------------------- //----------------------------------------------------------------

View File

@ -17,10 +17,9 @@
// <http://www.gnu.org/licenses/>. // <http://www.gnu.org/licenses/>.
#include "gmock/gmock.h" #include "gmock/gmock.h"
#include "persistent-data/space-maps/disk.h" #include "persistent-data/endian_utils.h"
using namespace base; using namespace base;
using namespace persistent_data;
using namespace std; using namespace std;
using namespace testing; using namespace testing;