From 5027da2a54dd54ab9dbb3f336e0a301b837b3749 Mon Sep 17 00:00:00 2001 From: basebuilder_pel7ppc64bebuilder0 Date: Thu, 5 Apr 2018 18:19:15 +0200 Subject: [PATCH] add device-mapper-persistent-data package Signed-off-by: basebuilder_pel7ppc64bebuilder0 --- ...re-and-cache_metadata_size-man-pages.patch | 116 +++++++++ ...e-mapper-persistent-data-avoid-strip.patch | 11 + ...-metadata-version-and-clean-shutdown.patch | 58 +++++ ...ore-v2-dirty-bitset-root-not-written.patch | 18 ++ ...data-document-clear-needs-check-flag.patch | 15 ++ SPECS/device-mapper-persistent-data.spec | 240 ++++++++++++++++++ 6 files changed, 458 insertions(+) create mode 100644 SOURCES/device-mapper-persistent-data-add-era_restore-and-cache_metadata_size-man-pages.patch create mode 100644 SOURCES/device-mapper-persistent-data-avoid-strip.patch create mode 100644 SOURCES/device-mapper-persistent-data-cache_restore-fix-metadata-version-and-clean-shutdown.patch create mode 100644 SOURCES/device-mapper-persistent-data-cache_restore-v2-dirty-bitset-root-not-written.patch create mode 100644 SOURCES/device-mapper-persistent-data-document-clear-needs-check-flag.patch create mode 100644 SPECS/device-mapper-persistent-data.spec 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 new file mode 100644 index 00000000..ac2e6878 --- /dev/null +++ b/SOURCES/device-mapper-persistent-data-add-era_restore-and-cache_metadata_size-man-pages.patch @@ -0,0 +1,116 @@ +--- 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 new file mode 100644 index 00000000..3b7379ae --- /dev/null +++ b/SOURCES/device-mapper-persistent-data-avoid-strip.patch @@ -0,0 +1,11 @@ +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 + $(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/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 new file mode 100644 index 00000000..0387ab9d --- /dev/null +++ b/SOURCES/device-mapper-persistent-data-cache_restore-fix-metadata-version-and-clean-shutdown.patch @@ -0,0 +1,58 @@ + 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 new file mode 100644 index 00000000..a6f377db --- /dev/null +++ b/SOURCES/device-mapper-persistent-data-cache_restore-v2-dirty-bitset-root-not-written.patch @@ -0,0 +1,18 @@ + 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-document-clear-needs-check-flag.patch b/SOURCES/device-mapper-persistent-data-document-clear-needs-check-flag.patch new file mode 100644 index 00000000..6fa41634 --- /dev/null +++ b/SOURCES/device-mapper-persistent-data-document-clear-needs-check-flag.patch @@ -0,0 +1,15 @@ +--- 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 new file mode 100644 index 00000000..91d4ef5a --- /dev/null +++ b/SPECS/device-mapper-persistent-data.spec @@ -0,0 +1,240 @@ +# +# 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 +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 + +BuildRequires: autoconf, expat-devel, libaio-devel, libstdc++-devel, boost-devel +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}%{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 +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_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/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 +* Mon Nov 20 2017 Marian Csontos - 0.7.0-0.1-rc6.el7_4.1 +- Fix v2 metadata corruption in cache_restore. + +* 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 +- 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 Jul 22 2016 Peter Rajnoha - 0.6.3-1 +- Fix regression in thin_repair and thin_restore so it works again + when using device as output. + +* Thu Jul 21 2016 Peter Rajnoha - 0.6.2-2 +- Improve documentation and messages on output file preallocation + when using thin_repair and thin_restore. + +* Mon Jul 11 2016 Peter Rajnoha - 0.6.2-1 +- Fixes providing proper use of compiler flags. + +* Wed May 04 2016 Peter Rajnoha - 0.6.2-0.1.rc8 +- Fixes for thin_trim and 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. + +* Tue Mar 08 2016 Peter Rajnoha - 0.6.2-0.1.rc5 +- New thin_ls command. +- era_invalidate may be run on live metadata if the --metadata-snap + option is given. + +* 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. + +* 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. + +* Tue Jul 07 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. +- Update to latest upstream release. + +* Fri Jul 03 2015 Peter Rajnoha - 0.5.2-1 +- Fix bug in damage reporting in thin_dump and thin_check. +- Update to latest upstream release. + +* Thu Jun 25 2015 Peter Rajnoha - 0.5.1-1 +- Add space map checking for thin_check. +- Add --clear-needs-check option for cache_check. +- Update to latest upstream release. + +* Mon Jun 08 2015 Peter Rajnoha - 0.4.2-1 +- New thin_delta and thin_trim commands. +- Update to latest upstream release. + +* Wed Nov 12 2014 Heinz Mauelshagen - 0.4.1-2 +- Resolves: #1083394 +- Resolves: #1085620 +- Fixes empty debuginfo packages + +* Tue Oct 28 2014 Heinz Mauelshagen - 0.4.1-1 +- Resolves: #1083394 +- Resolves: #1085620 + +* Wed Apr 2 2014 Heinz Mauelshagen - 0.3.2-1 +- Resolves: #1081546 + +* Fri Mar 28 2014 Heinz Mauelshagen - 0.3.0-1 +- Resolves: #1081546 + +* Fri Feb 28 2014 Heinz Mauelshagen - 0.2.8-5 +- Resolves: #1057951 + +* Fri Jan 24 2014 Daniel Mach - 0.2.8-4 +- Mass rebuild 2014-01-24 + +* Fri Dec 27 2013 Daniel Mach - 0.2.8-3 +- Mass rebuild 2013-12-27 + +* Wed Oct 30 2013 Heinz Mauelshagen - 0.2.8-2 +- Resolves: #1022834 + +* Fri Oct 18 2013 Heinz Mauelshagen - 0.2.8-1 +- New upstream version 0.2.8 introducing cache_{check,dump,repair,restore} + Resolves: #1020825 + +* Tue Sep 17 2013 Heinz Mauelshagen - 0.2.7-1 +- New upstream version 0.2.7 + Resolves: #966264 + +* Wed Jul 31 2013 Heinz Mauelshagen - 0.2.3-1 +- New upstream version + +* Tue Jul 30 2013 Heinz Mauelshagen - 0.2.2-1 +- New upstream version with missing man pages, thin_metadata_size + calculator and thin_dump metadata snapshot support. +- Manual page header fixes + +* Wed Jul 10 2013 Heinz Mauelshagen - 0.2.1-1 +- New upstream version. + +* Wed Jul 10 2013 Heinz Mauelshagen - 0.2.0-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