From 3e20ed058ffafa92c5d0feea8f931cc89b4d99f2 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 21 Jan 2020 16:42:26 -0500 Subject: [PATCH] import device-mapper-persistent-data-0.8.5-3.el8 --- .device-mapper-persistent-data.metadata | 1 + .gitignore | 1 + ...e-mapper-persistent-data-avoid-strip.patch | 15 + ...ool-inactive-from-thin_trim-man-page.patch | 17 + ...tests-lib-bcache-rename-raise-raise_.patch | 77 ++++ ...pair-Check-input-file-exists-earlier.patch | 298 +++++++++++++++ SPECS/device-mapper-persistent-data.spec | 342 ++++++++++++++++++ 7 files changed, 751 insertions(+) create mode 100644 .device-mapper-persistent-data.metadata create mode 100644 .gitignore create mode 100644 SOURCES/device-mapper-persistent-data-avoid-strip.patch create mode 100644 SOURCES/dmpd-remove-pool-inactive-from-thin_trim-man-page.patch create mode 100644 SOURCES/dmpd-tests-lib-bcache-rename-raise-raise_.patch create mode 100644 SOURCES/dmpd-thin_repair-cache_repair-Check-input-file-exists-earlier.patch create mode 100644 SPECS/device-mapper-persistent-data.spec diff --git a/.device-mapper-persistent-data.metadata b/.device-mapper-persistent-data.metadata new file mode 100644 index 0000000..066bcba --- /dev/null +++ b/.device-mapper-persistent-data.metadata @@ -0,0 +1 @@ +250ac419422b2eb36a3de4af44d8d0a99aad8e69 SOURCES/v0.8.5.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..281b0ca --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/v0.8.5.tar.gz diff --git a/SOURCES/device-mapper-persistent-data-avoid-strip.patch b/SOURCES/device-mapper-persistent-data-avoid-strip.patch new file mode 100644 index 0000000..6b3410e --- /dev/null +++ b/SOURCES/device-mapper-persistent-data-avoid-strip.patch @@ -0,0 +1,15 @@ + 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 + ln -s -f pdata_tools $(BINDIR)/cache_check + ln -s -f pdata_tools $(BINDIR)/cache_dump + ln -s -f pdata_tools $(BINDIR)/cache_metadata_size diff --git a/SOURCES/dmpd-remove-pool-inactive-from-thin_trim-man-page.patch b/SOURCES/dmpd-remove-pool-inactive-from-thin_trim-man-page.patch new file mode 100644 index 0000000..cb32de9 --- /dev/null +++ b/SOURCES/dmpd-remove-pool-inactive-from-thin_trim-man-page.patch @@ -0,0 +1,17 @@ + man8/thin_trim.txt | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/man8/thin_trim.txt b/man8/thin_trim.txt +index 1d24a06..e19d8bd 100644 +--- a/man8/thin_trim.txt ++++ b/man8/thin_trim.txt +@@ -12,9 +12,6 @@ DESCRIPTION + OPTIONS + -h, --help Print help and exit. + -V, --version Print version information and exit. +- --pool-inactive Indicates you are aware the pool should be inactive. +- +- Suppresses a warning message and prompt. + + SEE ALSO + thin_dump(8), thin_repair(8), thin_restore(8), thin_rmap(8), thin_metadata_size(8) diff --git a/SOURCES/dmpd-tests-lib-bcache-rename-raise-raise_.patch b/SOURCES/dmpd-tests-lib-bcache-rename-raise-raise_.patch new file mode 100644 index 0000000..b3db209 --- /dev/null +++ b/SOURCES/dmpd-tests-lib-bcache-rename-raise-raise_.patch @@ -0,0 +1,77 @@ + ft-lib/bcache.c | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/ft-lib/bcache.c b/ft-lib/bcache.c +index 0dca503..ee5b6c5 100644 +--- a/ft-lib/bcache.c ++++ b/ft-lib/bcache.c +@@ -31,7 +31,7 @@ static void warn(const char *fmt, ...) + } + + // FIXME: raise a condition somehow? +-static void raise(const char *fmt, ...) ++static void raise_(const char *fmt, ...) + { + va_list ap; + +@@ -51,7 +51,7 @@ static inline struct list_head *list_pop(struct list_head *head) + struct list_head *l; + + if (head->next == head) +- raise("list is empty\n"); ++ raise_("list is empty\n"); + + l = head->next; + list_del(l); +@@ -98,7 +98,7 @@ static struct cb_set *cb_set_create(unsigned nr) + static void cb_set_destroy(struct cb_set *cbs) + { + if (!list_empty(&cbs->allocated)) +- raise("async io still in flight"); ++ raise_("async io still in flight"); + + free(cbs->vec); + free(cbs); +@@ -713,13 +713,13 @@ struct bcache *bcache_simple(const char *path, unsigned nr_cache_blocks) + uint64_t s; + + if (fd < 0) { +- raise("couldn't open cache file"); ++ raise_("couldn't open cache file"); + return NULL; + } + + r = fstat(fd, &info); + if (r < 0) { +- raise("couldn't stat cache file"); ++ raise_("couldn't stat cache file"); + return NULL; + } + +@@ -751,7 +751,7 @@ void bcache_destroy(struct bcache *cache) + static void check_index(struct bcache *cache, block_address index) + { + if (index >= cache->nr_data_blocks) +- raise("block out of bounds (%llu >= %llu)", ++ raise_("block out of bounds (%llu >= %llu)", + (unsigned long long) index, + (unsigned long long) cache->nr_data_blocks); + } +@@ -802,7 +802,7 @@ static struct block *lookup_or_read_block(struct bcache *cache, + // FIXME: this is insufficient. We need to also catch a read + // lock of a write locked block. Ref count needs to distinguish. + if (b->ref_count && (flags & (GF_DIRTY | GF_ZERO))) +- raise("concurrent write lock attempt"); ++ raise_("concurrent write lock attempt"); + + if (test_flags(b, BF_IO_PENDING)) { + miss(cache, flags); +@@ -858,7 +858,7 @@ struct block *get_block(struct bcache *cache, block_address index, unsigned flag + return b; + } + +- raise("couldn't get block"); ++ raise_("couldn't get block"); + return NULL; + } + diff --git a/SOURCES/dmpd-thin_repair-cache_repair-Check-input-file-exists-earlier.patch b/SOURCES/dmpd-thin_repair-cache_repair-Check-input-file-exists-earlier.patch new file mode 100644 index 0000000..9e66799 --- /dev/null +++ b/SOURCES/dmpd-thin_repair-cache_repair-Check-input-file-exists-earlier.patch @@ -0,0 +1,298 @@ + base/file_utils.cc | 4 ++-- + base/file_utils.h | 2 +- + caching/cache_repair.cc | 8 +++++++- + functional-tests/cache-functional-tests.scm | 32 ++++++++++++++++++++++++++--- + functional-tests/era-functional-tests.scm | 4 ++-- + functional-tests/functional-tests.scm | 4 ++-- + functional-tests/thin-functional-tests.scm | 27 ++++++++++++++++++++++-- + thin-provisioning/thin_repair.cc | 8 +++++++- + 8 files changed, 75 insertions(+), 14 deletions(-) + +diff --git a/base/file_utils.cc b/base/file_utils.cc +index ba8957c..7883cfe 100644 +--- a/base/file_utils.cc ++++ b/base/file_utils.cc +@@ -66,13 +66,13 @@ file_utils::file_exists(string const &path) { + } + + void +-file_utils::check_file_exists(string const &file) { ++file_utils::check_file_exists(string const &file, bool must_be_regular_file) { + struct stat info; + int r = ::stat(file.c_str(), &info); + if (r) + throw runtime_error("Couldn't stat file"); + +- if (!S_ISREG(info.st_mode)) ++ if (must_be_regular_file && !S_ISREG(info.st_mode)) + throw runtime_error("Not a regular file"); + } + +diff --git a/base/file_utils.h b/base/file_utils.h +index 2ee20ab..3edcc9e 100644 +--- a/base/file_utils.h ++++ b/base/file_utils.h +@@ -10,7 +10,7 @@ + namespace file_utils { + int open_file(std::string const &path, int flags); + bool file_exists(std::string const &path); +- void check_file_exists(std::string const &file); ++ void check_file_exists(std::string const &file, bool must_be_regular_file = true); + int create_block_file(std::string const &path, off_t file_size); + int open_block_file(std::string const &path, off_t min_size, bool writeable, bool excl = true); + uint64_t get_file_length(std::string const &file); +diff --git a/caching/cache_repair.cc b/caching/cache_repair.cc +index 9587d5f..8a837a8 100644 +--- a/caching/cache_repair.cc ++++ b/caching/cache_repair.cc +@@ -2,6 +2,7 @@ + #include + #include + ++#include "base/file_utils.h" + #include "base/output_file_requirements.h" + #include "caching/commands.h" + #include "caching/metadata.h" +@@ -29,12 +30,17 @@ namespace { + } + + int repair(string const &old_path, string const &new_path) { ++ bool metadata_touched = false; + try { ++ file_utils::check_file_exists(new_path, false); ++ metadata_touched = true; + metadata_dump(open_metadata_for_read(old_path), + output_emitter(new_path), + true); + + } catch (std::exception &e) { ++ if (metadata_touched) ++ file_utils::zero_superblock(new_path); + cerr << e.what() << endl; + return 1; + } +@@ -110,7 +116,7 @@ cache_repair_cmd::run(int argc, char **argv) + check_output_file_requirements(*output_path); + + else { +- cerr << "no output file provided" << endl; ++ cerr << "No output file provided." << endl; + usage(cerr); + return 1; + } +diff --git a/functional-tests/cache-functional-tests.scm b/functional-tests/cache-functional-tests.scm +index 0e70b94..9b3a203 100644 +--- a/functional-tests/cache-functional-tests.scm ++++ b/functional-tests/cache-functional-tests.scm +@@ -15,6 +15,7 @@ + (define-tool cache-dump) + (define-tool cache-restore) + (define-tool cache-metadata-size) ++ (define-tool cache-repair) + + (define-syntax with-cache-xml + (syntax-rules () +@@ -35,7 +36,8 @@ + (syntax-rules () + ((_ (md) b1 b2 ...) + (with-temp-file-sized ((md "cache.bin" (to-bytes (meg 4)))) +- b1 b2 ...)))) ++ (system (fmt #f "dd if=/usr/bin/ls of=" md " bs=4096 > /dev/null 2>&1")) ++ b1 b2 ...)))) + + (define-syntax with-empty-metadata + (syntax-rules () +@@ -180,7 +182,7 @@ + "the input file can't be found" + (with-empty-metadata (md) + (run-fail-rcv (_ stderr) (cache-restore "-i no-such-file -o" md) +- (assert-superblock-untouched md) ++ (assert-superblock-all-zeroes md) + (assert-starts-with "Couldn't stat file" stderr)))) + + (define-scenario (cache-restore garbage-input-file) +@@ -188,7 +190,7 @@ + (with-empty-metadata (md) + (with-temp-file-sized ((xml "cache.xml" 4096)) + (run-fail-rcv (_ stderr) (cache-restore "-i" xml "-o" md) +- (assert-superblock-untouched md))))) ++ (assert-superblock-all-zeroes md))))) + + (define-scenario (cache-restore missing-output-file) + "the output file can't be found" +@@ -354,4 +356,28 @@ + (run-ok-rcv (stdout stderr) (cache-metadata-size "--nr-blocks 67108864") + (assert-equal "3678208 sectors" stdout) + (assert-eof stderr))) ++ ++ ;;;----------------------------------------------------------- ++ ;;; cache_repair scenarios ++ ;;;----------------------------------------------------------- ++ (define-scenario (cache-repair missing-input-file) ++ "the input file can't be found" ++ (with-empty-metadata (md) ++ (run-fail-rcv (_ stderr) (cache-repair "-i no-such-file -o" md) ++ (assert-superblock-all-zeroes md) ++ (assert-starts-with "Couldn't stat path" stderr)))) ++ ++ (define-scenario (cache-repair garbage-input-file) ++ "the input file is just zeroes" ++ (with-empty-metadata (md1) ++ (with-corrupt-metadata (md2) ++ (run-fail-rcv (_ stderr) (cache-repair "-i" md1 "-o" md2) ++ (assert-superblock-all-zeroes md2))))) ++ ++ (define-scenario (cache-repair missing-output-file) ++ "the output file can't be found" ++ (with-cache-xml (xml) ++ (run-fail-rcv (_ stderr) (cache-repair "-i" xml) ++ (assert-starts-with "No output file provided." stderr)))) ++ + ) +diff --git a/functional-tests/era-functional-tests.scm b/functional-tests/era-functional-tests.scm +index 373fe34..890f0ff 100644 +--- a/functional-tests/era-functional-tests.scm ++++ b/functional-tests/era-functional-tests.scm +@@ -153,7 +153,7 @@ + "the input file can't be found" + (with-empty-metadata (md) + (run-fail-rcv (_ stderr) (era-restore "-i no-such-file -o" md) +- (assert-superblock-untouched md) ++ (assert-superblock-all-zeroes md) + (assert-starts-with "Couldn't stat file" stderr)))) + + (define-scenario (era-restore garbage-input-file) +@@ -161,7 +161,7 @@ + (with-empty-metadata (md) + (with-temp-file-sized ((xml "era.xml" 4096)) + (run-fail-rcv (_ stderr) (era-restore "-i " xml "-o" md) +- (assert-superblock-untouched md))))) ++ (assert-superblock-all-zeroes md))))) + + (define-scenario (era-restore output-unspecified) + "Fails if no metadata dev specified" +diff --git a/functional-tests/functional-tests.scm b/functional-tests/functional-tests.scm +index aa5b95c..758498e 100644 +--- a/functional-tests/functional-tests.scm ++++ b/functional-tests/functional-tests.scm +@@ -21,7 +21,7 @@ + assert-eof + assert-starts-with + assert-matches +- assert-superblock-untouched ++ assert-superblock-all-zeroes + assert-member? + assert-raises-thunk + assert-raises +@@ -259,7 +259,7 @@ + (loop (+ i 1)) + #f))))) + +- (define (assert-superblock-untouched md) ++ (define (assert-superblock-all-zeroes md) + (with-bcache (cache md 1) + (with-block (b cache 0 (get-flags)) + (unless (all-zeroes? (block-data b) 4096) +diff --git a/functional-tests/thin-functional-tests.scm b/functional-tests/thin-functional-tests.scm +index d096b78..6bb7d24 100644 +--- a/functional-tests/thin-functional-tests.scm ++++ b/functional-tests/thin-functional-tests.scm +@@ -37,10 +37,12 @@ + b1 b2 ...))))) + + ;;; It would be nice if the metadata was at least similar to valid data. ++ ;;; Here I'm just using the start of the ls binary as 'random' data. + (define-syntax with-corrupt-metadata + (syntax-rules () + ((_ (md) b1 b2 ...) + (with-temp-file-sized ((md "thin.bin" (meg 4))) ++ (system (fmt #f "dd if=/usr/bin/ls of=" md " bs=4096 > /dev/null 2>&1")) + b1 b2 ...)))) + + (define-syntax with-empty-metadata +@@ -167,7 +169,7 @@ + "the input file can't be found" + (with-empty-metadata (md) + (run-fail-rcv (_ stderr) (thin-restore "-i no-such-file -o" md) +- (assert-superblock-untouched md) ++ (assert-superblock-all-zeroes md) + (assert-starts-with "Couldn't stat file" stderr)))) + + (define-scenario (thin-restore garbage-input-file) +@@ -175,7 +177,7 @@ + (with-empty-metadata (md) + (with-temp-file-sized ((xml "thin.xml" 4096)) + (run-fail-rcv (_ stderr) (thin-restore "-i " xml "-o" md) +- (assert-superblock-untouched md))))) ++ (assert-superblock-all-zeroes md))))) + + (define-scenario (thin-restore missing-output-file) + "the output file can't be found" +@@ -333,4 +335,25 @@ + (with-empty-metadata (md) + (run-fail-rcv (_ stderr) (thin-repair "-i" xml "-o" md) + #t)))) ++ ++ (define-scenario (thin-repair missing-input-file) ++ "the input file can't be found" ++ (with-empty-metadata (md) ++ (run-fail-rcv (_ stderr) (thin-repair "-i no-such-file -o" md) ++ (assert-superblock-all-zeroes md) ++ (assert-starts-with "Couldn't stat file" stderr)))) ++ ++ (define-scenario (thin-repair garbage-input-file) ++ "the input file is just zeroes" ++ (with-empty-metadata (md1) ++ (with-corrupt-metadata (md2) ++ (run-fail-rcv (_ stderr) (thin-repair "-i " md1 "-o" md2) ++ (assert-superblock-all-zeroes md2))))) ++ ++ (define-scenario (thin-repair missing-output-file) ++ "the output file can't be found" ++ (with-thin-xml (xml) ++ (run-fail-rcv (_ stderr) (thin-repair "-i " xml) ++ (assert-starts-with "No output file provided." stderr)))) ++ + ) +diff --git a/thin-provisioning/thin_repair.cc b/thin-provisioning/thin_repair.cc +index e22b193..0673753 100644 +--- a/thin-provisioning/thin_repair.cc ++++ b/thin-provisioning/thin_repair.cc +@@ -2,6 +2,7 @@ + #include + #include + ++#include "base/file_utils.h" + #include "base/output_file_requirements.h" + #include "persistent-data/file_utils.h" + #include "thin-provisioning/commands.h" +@@ -17,15 +18,20 @@ using namespace thin_provisioning; + + namespace { + int repair(string const &old_path, string const &new_path) { ++ bool metadata_touched = false; + try { + // block size gets updated by the restorer + block_manager<>::ptr new_bm = open_bm(new_path, block_manager<>::READ_WRITE); ++ file_utils::check_file_exists(old_path, false); ++ metadata_touched = true; + metadata::ptr new_md(new metadata(new_bm, metadata::CREATE, 128, 0)); + emitter::ptr e = create_restore_emitter(new_md); + block_manager<>::ptr old_bm = open_bm(old_path, block_manager<>::READ_ONLY); + metadata_repair(old_bm, e); + + } catch (std::exception &e) { ++ if (metadata_touched) ++ file_utils::zero_superblock(new_path); + cerr << e.what() << endl; + return 1; + } +@@ -101,7 +107,7 @@ thin_repair_cmd::run(int argc, char **argv) + check_output_file_requirements(*output_path); + + else { +- cerr << "no output file provided" << endl; ++ cerr << "No output file provided." << endl; + usage(cerr); + return 1; + } diff --git a/SPECS/device-mapper-persistent-data.spec b/SPECS/device-mapper-persistent-data.spec new file mode 100644 index 0000000..92a8f01 --- /dev/null +++ b/SPECS/device-mapper-persistent-data.spec @@ -0,0 +1,342 @@ +# +# Copyright (C) 2011-2017 Red Hat, Inc +# + +Summary: Device-mapper Persistent Data Tools +Name: device-mapper-persistent-data +Version: 0.8.5 +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}.tar.gz +Source0: https://github.com/jthornber/thin-provisioning-tools/archive/v%{version}.tar.gz +Patch0: device-mapper-persistent-data-avoid-strip.patch +Patch1: dmpd-remove-pool-inactive-from-thin_trim-man-page.patch +Patch2: dmpd-thin_repair-cache_repair-Check-input-file-exists-earlier.patch +Patch3: dmpd-tests-lib-bcache-rename-raise-raise_.patch + +BuildRequires: autoconf, expat-devel, libaio-devel, libstdc++-devel, boost-devel, gcc-c++ +Requires: expat + +%description +thin-provisioning-tools contains check,dump,restore,repair,rmap +and metadata_size tools to manage device-mapper thin provisioning +target metadata devices; cache check,dump,metadata_size,restore +and repair tools to manage device-mapper cache metadata devices +are included and era check, dump, restore and invalidate to manage +snapshot eras + +%prep +%setup -q -n thin-provisioning-tools-%{version} +%patch0 -p1 -b .avoid_strip +%patch1 -p1 -b .remove_pool_inactive_option +%patch2 -p1 -b .check_input_file_erlier +%patch3 -p1 -b .backup3 +echo %{version}-%{release} > VERSION + +%build +autoconf +%configure --with-optimisation= +make %{?_smp_mflags} V= + +%install +make DESTDIR=%{buildroot} MANDIR=%{_mandir} install + +%clean + +%files +%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 +%{_mandir}/man8/thin_ls.8.gz +%{_mandir}/man8/thin_metadata_size.8.gz +%{_mandir}/man8/thin_repair.8.gz +%{_mandir}/man8/thin_restore.8.gz +%{_mandir}/man8/thin_rmap.8.gz +%{_mandir}/man8/thin_trim.8.gz +%{_sbindir}/pdata_tools +%{_sbindir}/cache_check +%{_sbindir}/cache_dump +%{_sbindir}/cache_metadata_size +%{_sbindir}/cache_repair +%{_sbindir}/cache_restore +%{_sbindir}/cache_writeback +%{_sbindir}/era_check +%{_sbindir}/era_dump +%{_sbindir}/era_invalidate +%{_sbindir}/era_restore +%{_sbindir}/thin_check +%{_sbindir}/thin_delta +%{_sbindir}/thin_dump +%{_sbindir}/thin_ls +%{_sbindir}/thin_metadata_size +%{_sbindir}/thin_repair +%{_sbindir}/thin_restore +%{_sbindir}/thin_rmap +%{_sbindir}/thin_trim +#% {_sbindir}/thin_show_duplicates + +%changelog +* Wed Nov 27 2019 Marian Csontos - 0.8.5-3 +- Remove obsolete pool-inactive option from thin_trim man page. +- Check input file exists eralier, and prevent writing incorrect metadata. + +* Tue Jun 04 2019 Marian Csontos - 0.8.5-2 +- Bump release + +* Tue Jun 04 2019 Marian Csontos - 0.8.5-1 +- Update to latest upstream version + +* Tue Apr 24 2018 Marian Csontos - 0.7.6-1 +- Update to latest upstream version + +* Wed Feb 07 2018 Fedora Release Engineering - 0.7.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 23 2018 Jonathan Wakely - 0.7.5-2 +- Rebuilt for Boost 1.66 + +* Tue Nov 14 2017 Marian Csontos - 0.7.5-1 +- Fix version 2 metadata corruption in cache_restore. + +* 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 searching. + +* Wed Aug 02 2017 Fedora Release Engineering - 0.7.0-0.6.rc6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 0.7.0-0.5.rc6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon Jul 03 2017 Jonathan Wakely - 0.7.0-0.4.rc6 +- Rebuilt for Boost 1.64 + +* Tue May 23 2017 Marian Csontos - 0.7.0-0.3.rc6 +- Rebuilt for mass rebuild incorrectly tagging master to .fc26 + +* Mon May 15 2017 Fedora Release Engineering - 0.7.0-0.2.rc6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_27_Mass_Rebuild + +* 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. +- Fix cache metadata format version 2 superblock packing. + +* Wed Mar 22 2017 Peter Rajnoha - 0.7.0-0.1-rc5 +- Switch to a faster implementation of crc32 used for checksums. + +* Tue Mar 21 2017 Peter Rajnoha - 0.7.0-0.1-rc4 +- Add support for cache metadata format version 2 in cache tools. + +* Thu Mar 16 2017 Peter Rajnoha - 0.7.0-0.1-rc3 +- Fix compilation warnings and further code cleanup. + +* Thu Mar 09 2017 Peter Rajnoha - 0.7.0-0.1-rc2 +- Update to latest upstream release including various bug fixes and new features. +- New thin_show_duplicates command. +- Add '--skip-mappings' and '--format custom' options to thin_dump. + +* Fri Feb 10 2017 Fedora Release Engineering - 0.6.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Fri Jan 27 2017 Jonathan Wakely - 0.6.3-2 +- Rebuilt for Boost 1.63 + +* Thu Sep 22 2016 Peter Rajnoha - 0.6.3-1 +- Preallocate output file for thin_repair and thin_restore. + +* Mon Jul 11 2016 Peter Rajnoha - 0.6.2-1 +- Fixes providing proper use of compiler flags. + +* Mon Apr 11 2016 Peter Rajnoha - 0.6.2-0.1.rc8 +- Fixes for thin_trim. + +* Tue Mar 22 2016 Peter Rajnoha - 0.6.2-0.1.rc7 +- Fixes for thin_repair. + +* Wed Mar 09 2016 Peter Rajnoha - 0.6.2-0.1.rc6 +- Add new fields to thin_ls: MAPPED_BYTES, EXCLUSIVE_BYTES and SHARED_BYTES. + +* Thu Feb 18 2016 Peter Rajnoha - 0.6.2-0.1.rc5 +- Fixes for thin_delta. + +* Mon Feb 15 2016 Peter Rajnoha - 0.6.2-0.1.rc4 +- Fix bug in mapping comparison while using thin_delta. + +* Mon Feb 15 2016 Peter Rajnoha - 0.6.2-0.1.rc3 +- Fix recent regression in thin_repair. +- Force g++-98 dialect. + +* Mon Feb 15 2016 Peter Rajnoha - 0.6.2-0.1.rc1 +- Fix bug in thin_dump when using metadata snaps. + +* Wed Feb 03 2016 Fedora Release Engineering - 0.6.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jan 20 2016 Peter Rajnoha - 0.6.0-1 +- New thin_ls command. + +* Wed Jan 20 2016 Peter Rajnoha - 0.5.6-1 +- era_invalidate may be run on live metadata if the --metadata-snap + option is given. + +* Fri Jan 15 2016 Jonathan Wakely - 0.5.5-3 +- Rebuilt for Boost 1.60 + +* Thu Aug 27 2015 Jonathan Wakely - 0.5.5-2 +- Rebuilt for Boost 1.59 + +* Thu Aug 13 2015 Peter Rajnoha - 0.5.5-1 +- Support thin_delta's --metadata_snap option without specifying snap location. +- Update man pages to make it clearer that tools shoulnd't be run on live metadata. +- Fix bugs in the metadata reference counting for thin_check. + +* Wed Jul 29 2015 Fedora Release Engineering - 0.5.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Changes/F23Boost159 + +* Wed Jul 22 2015 David Tardon - 0.5.4-2 +- rebuild for Boost 1.58 + +* Fri Jul 17 2015 Peter Rajnoha - 0.5.4-1 +- Fix cache_check with --clear-needs-check-flag option to + make sure metadata device is not open already by the tool + when open with O_EXCL mode is requested. + +* Fri Jul 03 2015 Peter Rajnoha - 0.5.3-1 +- Tools now open the metadata device in O_EXCL mode to stop + running the tools on active metadata. + +* Fri Jul 03 2015 Peter Rajnoha - 0.5.2-1 +- Fix bug in damage reporting in thin_dump and thin_check. + +* Thu Jun 25 2015 Peter Rajnoha - 0.5.1-1 +- Fix crash if tools are given a very large metadata device to restore to. + +* Mon Jun 22 2015 Peter Rajnoha - 0.5.0-1 +- Add space map checking for thin_check. +- Add --clear-needs-check option for cache_check. +- Update to latest upstream release. + +* Wed Jun 17 2015 Fedora Release Engineering - 0.4.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Mon Jun 08 2015 Peter Rajnoha - 0.4.2-1 +- New thin_delta and thin_trim commands. +- Update to latest upstream release. + +* Sat May 02 2015 Kalev Lember - 0.4.1-4 +- Rebuilt for GCC 5 C++11 ABI change + +* Mon Jan 26 2015 Petr Machata - 0.4.1-3 +- Rebuild for boost 1.57.0 + +* Wed Oct 29 2014 Heinz Mauelshagen - 0.4.1-2 +- Resolves: bz#1159466 + +* Wed Oct 29 2014 Heinz Mauelshagen - 0.4.1-1 +- New upstream version +- Manual header additions/fixes + +* Sat Aug 16 2014 Fedora Release Engineering - 0.3.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 0.3.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Thu May 22 2014 Petr Machata - 0.3.2-2 +- Rebuild for boost 1.55.0 + +* Fri Apr 11 2014 Heinz Mauelshagen - 0.3.2-1 +- New upstream version 0.3.2 fixing needs_check flag processing + +* Thu Mar 27 2014 Heinz Mauelshagen - 0.3.0-1 +- New upstream version 0.3.0 introducing era_{check,dump,invalidate} + +* Fri Oct 18 2013 Heinz Mauelshagen - 0.2.8-1 +- New upstream version 0.2.8 introducing cache_{check,dump,repair,restore} + +* Tue Sep 17 2013 Heinz Mauelshagen - 0.2.7-1 +- New upstream version 0.2.7 + +* Wed Jul 31 2013 Heinz Mauelshagen - 0.2.3-1 +- New upstream version + +* Tue Jul 30 2013 Dennis Gilmore - 0.2.2-2 +- rebuild against boost 1.54.0 + +* Tue Jul 30 2013 Heinz Mauelshagen - 0.2.2-1 +- New upstream version +- manual header fixes + +* Tue Jul 30 2013 Petr Machata - 0.2.1-6 +- Rebuild for boost 1.54.0 + +* Thu Jul 25 2013 Heinz Mauelshagen - 0.2.1-5 +- enhance manual pages and fix typos + +* Thu Jul 18 2013 Heinz Mauelshagen - 0.2.1-4 +- Update thin_metadata_size manual page +- thin_dump: support dumping default metadata snapshot + +* Thu Jul 18 2013 Heinz Mauelshagen - 0.2.1-3 +- New thin_metadata_size tool to estimate amount of metadata space + based on block size, pool size and maximum amount of thin devs and snapshots +- support metadata snapshots in thin_dump tool +- New man pages for thin_metadata_size, thin_repair and thin_rmap and man page fixes + +* Tue Jul 16 2013 Heinz Mauelshagen - 0.2.1-2 +- Build with nostrip fix from Ville Skyttä + +* Mon Jul 15 2013 Ville Skyttä - 0.2.1-2 +- Let rpmbuild strip binaries, don't override optflags, build more verbose. + +* Fri Jul 12 2013 Heinz Mauelshagen - 0.2.1-1 +- New upstream version. + +* Wed Feb 13 2013 Fedora Release Engineering - 0.1.4-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Jul 18 2012 Fedora Release Engineering - 0.1.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Apr 19 2012 Milan Broz - 0.1.4-1 +- Fix thin_check man page (add -q option). +- Install utilities in /usr/sbin. + +* Tue Mar 13 2012 Milan Broz - 0.1.2-1 +- New upstream version. + +* Mon Mar 05 2012 Milan Broz - 0.1.1-1 +- Fix quiet option. + +* Fri Mar 02 2012 Milan Broz - 0.1.0-1 +- New upstream version. + +* Tue Feb 28 2012 Fedora Release Engineering - 0.0.1-3 +- Rebuilt for c++ ABI breakage + +* Fri Jan 13 2012 Fedora Release Engineering - 0.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Wed Dec 21 2011 Milan Broz - 0.0.1-1 +- Initial version