diff --git a/.device-mapper-persistent-data.metadata b/.device-mapper-persistent-data.metadata index 18d5067..49d0282 100644 --- a/.device-mapper-persistent-data.metadata +++ b/.device-mapper-persistent-data.metadata @@ -1 +1 @@ -9a65b3d51d2258e8954812488f9002296b41efa5 SOURCES/thin-provisioning-tools-0.7.0-rc6.tar.gz +7739e03d525aaac3f5c8d86db01c2b1610f5790e SOURCES/v0.7.3.tar.gz diff --git a/.gitignore b/.gitignore index 7444861..600a64e 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/thin-provisioning-tools-0.7.0-rc6.tar.gz +SOURCES/v0.7.3.tar.gz diff --git a/SOURCES/device-mapper-persistent-data-add-era_restore-and-cache_metadata_size-man-pages.patch b/SOURCES/device-mapper-persistent-data-add-era_restore-and-cache_metadata_size-man-pages.patch deleted file mode 100644 index ac2e687..0000000 --- a/SOURCES/device-mapper-persistent-data-add-era_restore-and-cache_metadata_size-man-pages.patch +++ /dev/null @@ -1,116 +0,0 @@ ---- thin-provisioning-tools-0.4.1/man8/era_restore.8.orig 2014-10-28 14:24:43.356272471 +0100 -+++ thin-provisioning-tools-0.4.1/man8/era_restore.8 2014-10-28 14:28:56.358133852 +0100 -@@ -0,0 +1,63 @@ -+.TH ERA_RESTORE 8 "Thin Provisioning Tools" "Red Hat, Inc." \" -*- nroff -*- -+.SH NAME -+era_restore \- restore era metadata file to device or file -+ -+.SH SYNOPSIS -+.B era_restore -+.RB [ options ] -+.RB -i -+.I {device|file} -+.RB -o -+.I {device|file} -+ -+.SH DESCRIPTION -+.B era_restore -+restores binary era metadata created by the -+respective device-mapper target dumped into an XML formatted (see -+.BR era_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\-q, \-\-quiet\fP" -+Suppress output messages, return only exit code. -+ -+.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\-h, \-\-help\fP" -+Print help and exit. -+ -+.IP "\fB\-V, \-\-version\fP" -+Output version information and exit. -+ -+.SH EXAMPLE -+Restores the XML formatted era metadata on file -+.B metadata -+to logical volume /dev/vg/metadata for further processing by the -+respective device-mapper target: -+.sp -+.B era_restore -i metadata -o /dev/vg/metadata -+ -+.SH DIAGNOSTICS -+.B era_restore -+returns an exit code of 0 for success or 1 for error. -+ -+.SH SEE ALSO -+.B era_check(8) -+.B era_dump(8) -+.B era_invaidate(8) -+.B era_restore(8) -+ -+.SH AUTHOR -+Joe Thornber -+.br -+Heinz Mauelshagen ---- thin-provisioning-tools-0.4.1/man8/cache_metadata_size.8.orig 2014-10-28 14:31:49.116087709 +0100 -+++ thin-provisioning-tools-0.4.1/man8/cache_metadata_size.8 2014-10-28 14:50:29.337238755 +0100 -@@ -0,0 +1,47 @@ -+.TH CACHE_METADATA_SIZE 8 "Thin Provisioning Tools" "Red Hat, Inc." \" -*- nroff -*- -+.SH NAME -+cache_metadata_size \- cache metadata device/file size calculator. -+ -+.SH SYNOPSIS -+.B cache_metadata_size -+.RB [ options ] -+ -+.SH DESCRIPTION -+.B cache_metadata_size -+calculates the size of the cache metadata based on the block size -+of the cache device and the cache block size. -+All relates to the size of the fast device (eg, SSD), rather -+than the whole cached (i.e. origin) device. -+ -+.IP "\fB\\-\-block\-size \fP -+Block size of cache in units of sectors. -+ -+.IP "\fB\\-\-device\-size \fP -+Device size of the cache device in units of sectors. -+ -+.IP "\fB\\-\-nr\-blocks \fP -+Capacity of the cache in number of blocks. -+ -+.IP "\fB\-h, \-\-help\fP" -+Print help and exit. -+ -+.IP "\fB\-V, \-\-version\fP" -+Output version information and exit. -+ -+.SH EXAMPLES -+Calculates the cache metadata device size for block size 256 sectors.and device size of 2GiB -+.sp -+.B cache_metadata_size --block-size 256 --device-size $((2*1024*1024)) -+ -+.SH DIAGNOSTICS -+.B cache_metadata_size -+returns an exit code of 0 for success or 1 for error. -+ -+.SH SEE ALSO -+.B cache_check(8) -+.B cache_dump(8) -+.B cache_repair(8) -+.B cache_restore(8) -+ -+.SH AUTHOR -+Heinz Mauelshagen diff --git a/SOURCES/device-mapper-persistent-data-avoid-strip.patch b/SOURCES/device-mapper-persistent-data-avoid-strip.patch index 3b7379a..6b3410e 100644 --- a/SOURCES/device-mapper-persistent-data-avoid-strip.patch +++ b/SOURCES/device-mapper-persistent-data-avoid-strip.patch @@ -1,8 +1,12 @@ -diff -purN thin-provisioning-tools-0.6.0.orig/Makefile.in thin-provisioning-tools-0.6.0.new/Makefile.in ---- thin-provisioning-tools-0.6.0.orig/Makefile.in 2016-01-20 16:43:21.000000000 +0100 -+++ thin-provisioning-tools-0.6.0.new/Makefile.in 2016-01-20 17:26:11.943664295 +0100 -@@ -174,7 +174,6 @@ distclean: clean - install: bin/pdata_tools + Makefile.in | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Makefile.in b/Makefile.in +index 0aa9401..0f4f7cb 100644 +--- a/Makefile.in ++++ b/Makefile.in +@@ -262,7 +262,6 @@ MANPAGES:=$(patsubst %,man8/%.8,$(TOOLS)) + install: bin/pdata_tools $(MANPAGES) $(INSTALL_DIR) $(BINDIR) $(INSTALL_PROGRAM) bin/pdata_tools $(BINDIR) - $(STRIP) $(BINDIR)/pdata_tools diff --git a/SOURCES/device-mapper-persistent-data-cache_restore-fix-metadata-version-and-clean-shutdown.patch b/SOURCES/device-mapper-persistent-data-cache_restore-fix-metadata-version-and-clean-shutdown.patch deleted file mode 100644 index 0387ab9..0000000 --- a/SOURCES/device-mapper-persistent-data-cache_restore-fix-metadata-version-and-clean-shutdown.patch +++ /dev/null @@ -1,58 +0,0 @@ - caching/cache_restore.cc | 5 +++-- - caching/restore_emitter.cc | 4 ++-- - caching/restore_emitter.h | 8 +++++++- - 3 files changed, 12 insertions(+), 5 deletions(-) - -diff --git a/caching/cache_restore.cc b/caching/cache_restore.cc -index f62306d..e430c11 100644 ---- a/caching/cache_restore.cc -+++ b/caching/cache_restore.cc -@@ -69,8 +69,9 @@ namespace { - try { - block_manager<>::ptr bm = open_bm(*fs.output, block_manager<>::READ_WRITE); - metadata::ptr md(new metadata(bm, metadata::CREATE)); -- emitter::ptr restorer = create_restore_emitter(md, fs.clean_shutdown, -- fs.metadata_version); -+ emitter::ptr restorer = create_restore_emitter(md, -+ fs.metadata_version, -+ fs.clean_shutdown ? CLEAN_SHUTDOWN : NO_CLEAN_SHUTDOWN); - - check_file_exists(*fs.input); - ifstream in(fs.input->c_str(), ifstream::in); -diff --git a/caching/restore_emitter.cc b/caching/restore_emitter.cc -index 34c5020..b7a573f 100644 ---- a/caching/restore_emitter.cc -+++ b/caching/restore_emitter.cc -@@ -115,9 +115,9 @@ namespace { - - emitter::ptr - caching::create_restore_emitter(metadata::ptr md, unsigned metadata_version, -- bool clean_shutdown) -+ shutdown_type st) - { -- return emitter::ptr(new restorer(md, clean_shutdown, metadata_version)); -+ return emitter::ptr(new restorer(md, st == CLEAN_SHUTDOWN, metadata_version)); - } - - //---------------------------------------------------------------- -diff --git a/caching/restore_emitter.h b/caching/restore_emitter.h -index 5c077af..a1d45d6 100644 ---- a/caching/restore_emitter.h -+++ b/caching/restore_emitter.h -@@ -7,9 +7,15 @@ - //---------------------------------------------------------------- - - namespace caching { -+ -+ enum shutdown_type { -+ CLEAN_SHUTDOWN, -+ NO_CLEAN_SHUTDOWN -+ }; -+ - emitter::ptr create_restore_emitter(metadata::ptr md, - unsigned metadata_version, -- bool clean_shutdown = true); -+ shutdown_type st = CLEAN_SHUTDOWN); - } - - //---------------------------------------------------------------- diff --git a/SOURCES/device-mapper-persistent-data-cache_restore-v2-dirty-bitset-root-not-written.patch b/SOURCES/device-mapper-persistent-data-cache_restore-v2-dirty-bitset-root-not-written.patch deleted file mode 100644 index a6f377d..0000000 --- a/SOURCES/device-mapper-persistent-data-cache_restore-v2-dirty-bitset-root-not-written.patch +++ /dev/null @@ -1,18 +0,0 @@ - caching/metadata.cc | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/caching/metadata.cc b/caching/metadata.cc -index 7d8bfae..5457533 100644 ---- a/caching/metadata.cc -+++ b/caching/metadata.cc -@@ -124,6 +124,10 @@ void - metadata::commit_mappings() - { - sb_.mapping_root = mappings_->get_root(); -+ if (sb_.version >= 2) { -+ dirty_bits_->flush(); -+ sb_.dirty_root = dirty_bits_->get_root(); -+ } - } - - void diff --git a/SOURCES/device-mapper-persistent-data-cache_restore-v2-dirty-bitset.patch b/SOURCES/device-mapper-persistent-data-cache_restore-v2-dirty-bitset.patch new file mode 100644 index 0000000..278b07d --- /dev/null +++ b/SOURCES/device-mapper-persistent-data-cache_restore-v2-dirty-bitset.patch @@ -0,0 +1,15 @@ +diff --git a/caching/metadata.cc b/caching/metadata.cc +index 91806f4..7b150be 100644 +--- a/caching/metadata.cc ++++ b/caching/metadata.cc +@@ -128,6 +128,10 @@ void + metadata::commit_mappings() + { + sb_.mapping_root = mappings_->get_root(); ++ if (sb_.version >= 2) { ++ dirty_bits_->flush(); ++ sb_.dirty_root = dirty_bits_->get_root(); ++ } + } + + void diff --git a/SOURCES/device-mapper-persistent-data-document-clear-needs-check-flag.patch b/SOURCES/device-mapper-persistent-data-document-clear-needs-check-flag.patch deleted file mode 100644 index 6fa4163..0000000 --- a/SOURCES/device-mapper-persistent-data-document-clear-needs-check-flag.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- thin-provisioning-tools-0.4.1/man8/thin_check.8.orig 2014-10-28 14:19:02.800420873 +0100 -+++ thin-provisioning-tools-0.4.1/man8/thin_check.8 2014-10-28 14:19:47.335924554 +0100 -@@ -25,6 +25,12 @@ - .IP "\fB\-V, \-\-version\fP" - Output version information and exit. - -+.IP "\fB\-\-clear\-needs\-check\-flag\fP" -+Clear the needs-check-flag in case the check of the thin pool metadata succeeded. -+If the metadata check failed, the flag is not cleared and a thin_repair run is -+needed to fix any issues. -+After thin_repair succeeded, you may run thin_check again. -+ - .IP "\fB\-\-super\-block\-only\fP" - Only check the superblock is present. - diff --git a/SPECS/device-mapper-persistent-data.spec b/SPECS/device-mapper-persistent-data.spec index 91d4ef5..d321824 100644 --- a/SPECS/device-mapper-persistent-data.spec +++ b/SPECS/device-mapper-persistent-data.spec @@ -2,25 +2,17 @@ # Copyright (C) 2011-2017 Red Hat, Inc # -%define pre_release_upstream -rc6 -%define pre_release rc6 - Summary: Device-mapper Persistent Data Tools Name: device-mapper-persistent-data -Version: 0.7.0 -Release: 0.1.%{pre_release}%{?dist}.1 +Version: 0.7.3 +Release: 3%{?dist} License: GPLv3+ Group: System Environment/Base URL: https://github.com/jthornber/thin-provisioning-tools -Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-%{version}%{pre_release_upstream}.tar.gz -# Source1: https://github.com/jthornber/thin-provisioning-tools/archive/v%{version}.tar.gz -Patch0: device-mapper-persistent-data-document-clear-needs-check-flag.patch -Patch1: device-mapper-persistent-data-add-era_restore-and-cache_metadata_size-man-pages.patch -Patch2: device-mapper-persistent-data-avoid-strip.patch -# Commit: 4da8d19f296a9 -Patch3: device-mapper-persistent-data-cache_restore-fix-metadata-version-and-clean-shutdown.patch -# Commit: e3b7d825696c2 -Patch4: device-mapper-persistent-data-cache_restore-v2-dirty-bitset-root-not-written.patch +#Source0: https://github.com/jthornber/thin-provisioning-tools/archive/thin-provisioning-tools-% {version}.tar.gz +Source0: https://github.com/jthornber/thin-provisioning-tools/archive/v%{version}.tar.gz +Patch0: device-mapper-persistent-data-avoid-strip.patch +Patch1: device-mapper-persistent-data-cache_restore-v2-dirty-bitset.patch BuildRequires: autoconf, expat-devel, libaio-devel, libstdc++-devel, boost-devel Requires: expat @@ -34,12 +26,9 @@ are included and era check, dump, restore and invalidate to manage snapshot eras %prep -%setup -q -n thin-provisioning-tools-%{version}%{pre_release_upstream} -%patch0 -p1 -b .clear_needs_check_flag -%patch1 -p1 -b .man_pages -%patch2 -p1 -b .avoid_strip -%patch3 -p1 -b .fix_flags -%patch4 -p1 -b .v2_dirty_bitset_root +%setup -q -n thin-provisioning-tools-%{version} +%patch0 -p1 -b .avoid_strip +%patch1 -p1 -b .v2_dirty_bitset echo %{version}-%{release} > VERSION %build @@ -56,12 +45,14 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install %doc COPYING README.md %{_mandir}/man8/cache_check.8.gz %{_mandir}/man8/cache_dump.8.gz +%{_mandir}/man8/cache_metadata_size.8.gz %{_mandir}/man8/cache_repair.8.gz %{_mandir}/man8/cache_restore.8.gz %{_mandir}/man8/cache_writeback.8.gz %{_mandir}/man8/era_check.8.gz %{_mandir}/man8/era_dump.8.gz %{_mandir}/man8/era_invalidate.8.gz +%{_mandir}/man8/era_restore.8.gz %{_mandir}/man8/thin_check.8.gz %{_mandir}/man8/thin_delta.8.gz %{_mandir}/man8/thin_dump.8.gz @@ -91,11 +82,25 @@ make DESTDIR=%{buildroot} MANDIR=%{_mandir} install %{_sbindir}/thin_restore %{_sbindir}/thin_rmap %{_sbindir}/thin_trim -%{_sbindir}/thin_show_duplicates %changelog -* Mon Nov 20 2017 Marian Csontos - 0.7.0-0.1-rc6.el7_4.1 -- Fix v2 metadata corruption in cache_restore. +* Tue Nov 14 2017 Marian Csontos - 0.7.3-3 +- Fix version 2 metadata corruption in cache_restore. + +* Tue Oct 10 2017 Marian Csontos - 0.7.3-2 +- Rebuilding with updated source tarball. + +* Fri Oct 06 2017 Marian Csontos - 0.7.3-1 +- Update to latest bugfix and documentation update release. +- *_restore tools wipe superblock as a last resort. +- Add thin_check --override-mapping-root. + +* Fri Sep 22 2017 Marian Csontos - 0.7.2-1 +- Update to latest upstream release including various bug fixes and new features. +- Fix segfault when dump tools are given a tiny metadata file. +- Fix -V exiting with 1. +- Fix thin_check when running on XML dump instead of binary data. +- Speed up free block searches. * Mon Mar 27 2017 Peter Rajnoha - 0.7.0-0.1-rc6 - Don't open devices as writeable if --clear-needs-check-flag is not set.