[packages/vdo] - initial; with patches to allow build on 32-bit x86
qboosh
qboosh at pld-linux.org
Tue Jun 2 06:37:04 CEST 2020
commit 405f2dce509c4de4efaa06381ccb3709d5248622
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Tue Jun 2 06:37:29 2020 +0200
- initial; with patches to allow build on 32-bit x86
vdo-types.patch | 138 ++++++++++++++++++++++++++++++++++++++++++++++++
vdo-x86.patch | 49 +++++++++++++++++
vdo.spec | 159 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 346 insertions(+)
---
diff --git a/vdo.spec b/vdo.spec
new file mode 100644
index 0000000..9d530da
--- /dev/null
+++ b/vdo.spec
@@ -0,0 +1,159 @@
+Summary: Management tools for Virtual Data Optimizer
+Summary(pl.UTF-8): Narzędzia do zarządzania podsystemem Virtual Data Optimizer
+Name: vdo
+Version: 6.2.3.91
+Release: 1
+License: GPL v2
+Group: Applications/System
+#Source0Download: https://github.com/dm-vdo/vdo/releases
+Source0: https://github.com/dm-vdo/vdo/archive/%{version}/%{name}-%{version}.tar.gz
+# Source0-md5: a4eeab4f23938683ef3c0d0bcd2e34ad
+Patch0: %{name}-x86.patch
+Patch1: %{name}-types.patch
+URL: http://github.com/dm-vdo/vdo
+BuildRequires: device-mapper-devel
+BuildRequires: libblkid-devel
+BuildRequires: libuuid-devel >= 2.23
+BuildRequires: python3 >= 1:3.6
+BuildRequires: python3-devel >= 1:3.6
+BuildRequires: valgrind
+BuildRequires: zlib-devel
+Requires: libuuid >= 2.23
+Requires: lvm2
+Requires: python3 >= 1:3.6
+Requires: python3-PyYAML >= 3.10
+#Suggests: kernel-kvdo >= 6.2
+ExclusiveArch: %{ix86} %{x8664} x32 aarch64 ppc ppc64 s390x
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+Virtual Data Optimizer (VDO) is a device mapper target that delivers
+block-level deduplication, compression, and thin provisioning.
+
+This package provides the user-space management tools for VDO.
+
+%description -l pl.UTF-8
+Virtual Data Optimizer (VDO) to cel device mappera zapewniający
+deduplikację, kompresję i "thin provisioning" na poziomie bloków.
+
+Ten pakiet zawiera narzędzia przestrzeni użytkownika do zarządzania
+VDO.
+
+%package -n bash-completion-vdo
+Summary: Bash completion for VDO management commands
+Summary(pl.UTF-8): Bashowe uzupełnianie parametrów poleceń do zarządzania VDO
+Group: Applications/Shells
+Requires: %{name} = %{version}-%{release}
+Requires: bash-completion
+
+%description -n bash-completion-vdo
+Bash completion for VDO management commands.
+
+%description -n bash-completion-vdo -l pl.UTF-8
+Bashowe uzupełnianie parametrów poleceń do zarządzania VDO.
+
+%package support
+Summary: Support tools for Virtual Data Optimizer
+Summary(pl.UTF-8): Narzędzia wspomagające dla podsystemu Virtual Data Optimizer
+Group: Applications/System
+Requires: libuuid >= 2.23
+
+%description support
+Virtual Data Optimizer (VDO) is a device mapper target that delivers
+block-level deduplication, compression, and thin provisioning.
+
+This package provides the user-space support tools for VDO.
+
+%description support -l pl.UTF-8
+Virtual Data Optimizer (VDO) to cel device mappera zapewniający
+deduplikację, kompresję i "thin provisioning" na poziomie bloków.
+
+Ten pakiet zawiera narzędzia wspomagające przestrzeni użytkownika dla
+VDO.
+
+%prep
+%setup -q
+%patch0 -p1
+%patch1 -p1
+
+%build
+%{__make} \
+ CC="%{__cc}" \
+ OPT_FLAGS="%{rpmcflags} -fno-omit-frame-pointer"
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%{__make} install \
+ DESTDIR=$RPM_BUILD_ROOT \
+ INSTALLOWNER= \
+ bindir=%{_bindir} \
+ defaultdocdir=%{_docdir} \
+ python3_sitelib=%{py3_sitescriptdir} \
+ mandir=%{_mandir} \
+ unitdir=%{systemdunitdir} \
+ sysconfdir=%{_sysconfdir}
+
+%py3_comp $RPM_BUILD_ROOT%{py3_sitescriptdir}
+%py3_ocomp $RPM_BUILD_ROOT%{py3_sitescriptdir}
+
+# packaged as %doc
+%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/%{name}
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+%systemd_post vdo.service
+
+%preun
+%systemd_preun vdo.service
+
+%postun
+%systemd_postun_with_restart vdo.service
+
+%files
+%defattr(644,root,root,755)
+%doc CONTRIBUTORS.txt README.md examples/{ansible,monitor}
+%attr(755,root,root) %{_bindir}/vdo
+%attr(755,root,root) %{_bindir}/vdo-by-dev
+%attr(755,root,root) %{_bindir}/vdostats
+%attr(755,root,root) %{_bindir}/vdodmeventd
+%attr(755,root,root) %{_bindir}/vdodumpconfig
+%attr(755,root,root) %{_bindir}/vdoforcerebuild
+%attr(755,root,root) %{_bindir}/vdoformat
+%attr(755,root,root) %{_bindir}/vdosetuuid
+%{py3_sitescriptdir}/%{name}
+%{systemdunitdir}/vdo.service
+%{systemdunitdir}/vdo-start-by-dev at .service
+/lib/systemd/system-preset/97-vdo.preset
+%{_sysconfdir}/udev/rules.d/69-vdo-start-by-dev.rules
+%{_mandir}/man8/vdo.8*
+%{_mandir}/man8/vdostats.8*
+%{_mandir}/man8/vdodmeventd.8*
+%{_mandir}/man8/vdodumpconfig.8*
+%{_mandir}/man8/vdoforcerebuild.8*
+%{_mandir}/man8/vdoformat.8*
+%{_mandir}/man8/vdosetuuid.8*
+
+%files -n bash-completion-vdo
+%defattr(644,root,root,755)
+/etc/bash_completion.d/vdo
+/etc/bash_completion.d/vdostats
+
+%files support
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/vdoaudit
+%attr(755,root,root) %{_bindir}/vdodebugmetadata
+%attr(755,root,root) %{_bindir}/vdodumpblockmap
+%attr(755,root,root) %{_bindir}/vdodumpmetadata
+%attr(755,root,root) %{_bindir}/vdolistmetadata
+%attr(755,root,root) %{_bindir}/vdoreadonly
+%attr(755,root,root) %{_bindir}/vdoregenerategeometry
+%{_mandir}/man8/vdoaudit.8*
+%{_mandir}/man8/vdodebugmetadata.8*
+%{_mandir}/man8/vdodumpblockmap.8*
+%{_mandir}/man8/vdodumpmetadata.8*
+%{_mandir}/man8/vdolistmetadata.8*
+%{_mandir}/man8/vdoreadonly.8*
+%{_mandir}/man8/vdoregenerategeometry.8*
diff --git a/vdo-types.patch b/vdo-types.patch
new file mode 100644
index 0000000..c818a6c
--- /dev/null
+++ b/vdo-types.patch
@@ -0,0 +1,138 @@
+--- vdo-6.2.3.91/utils/uds/fileIORegion.c.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/uds/fileIORegion.c 2020-06-01 06:23:23.271248367 +0200
+@@ -65,7 +65,7 @@
+
+ if (offset + length > fior->size) {
+ return logErrorWithStringError(UDS_OUT_OF_RANGE,
+- "range %zd-%zd not in range 0 to %zu",
++ "range %"PRId64"-%"PRId64" not in range 0 to %zu",
+ offset, offset + length, fior->size);
+ }
+
+--- vdo-6.2.3.91/utils/uds/indexLayout.c.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/uds/indexLayout.c 2020-06-01 06:25:49.170457963 +0200
+@@ -955,7 +955,7 @@
+ }
+ if (iter.nextRegion != iter.lastRegion) {
+ return logErrorWithStringError(UDS_UNEXPECTED_RESULT,
+- "expected %ld additional regions",
++ "expected %td additional regions",
+ iter.lastRegion - iter.nextRegion);
+ }
+ if (iter.nextBlock != isl->indexSave.startBlock + isl->indexSave.numBlocks) {
+--- vdo-6.2.3.91/utils/uds/threadsLinuxUser.c.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/uds/threadsLinuxUser.c 2020-06-01 06:28:58.816097231 +0200
+@@ -112,7 +112,7 @@
+ int joinThreads(pthread_t th)
+ {
+ int result = pthread_join(th, NULL);
+- return ASSERT_WITH_ERROR_CODE((result == 0), result, "th: %zu", th);
++ return ASSERT_WITH_ERROR_CODE((result == 0), result, "th: %lu", th);
+ }
+
+ /**********************************************************************/
+--- vdo-6.2.3.91/utils/uds/timeUtils.c.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/uds/timeUtils.c 2020-06-01 06:31:48.701843548 +0200
+@@ -69,7 +69,7 @@
+ if (!isValidTime(time)) {
+ return time;
+ }
+- if ((reltime >= 0) && (reltime < 10 * BILLION)) {
++ if ((reltime >= 0) && (reltime < 10LL * BILLION)) {
+ reltime += time.tv_nsec;
+ while (reltime >= BILLION) {
+ reltime -= BILLION;
+@@ -80,7 +80,7 @@
+ }
+ // may not be accurate for times before the Epoch...
+ // (is the ns time positive or negative for negative time_t?)
+- int64_t ns = time.tv_sec * BILLION + time.tv_nsec;
++ int64_t ns = (int64_t)time.tv_sec * BILLION + time.tv_nsec;
+ if ((ns < INT64_MIN / 2) ||
+ (ns > INT64_MAX / 2) ||
+ (reltime < INT64_MIN / 2) ||
+@@ -130,8 +130,8 @@
+ RelTime timeDifference(AbsTime a, AbsTime b)
+ {
+ if (isValidTime(a) && isValidTime(b)) {
+- int64_t ans = a.tv_sec * BILLION + a.tv_nsec;
+- int64_t bns = b.tv_sec * BILLION + b.tv_nsec;
++ int64_t ans = (int64_t)a.tv_sec * BILLION + a.tv_nsec;
++ int64_t bns = (int64_t)b.tv_sec * BILLION + b.tv_nsec;
+ return ans - bns;
+ } else if (isValidTime(a)) {
+ return INT64_MAX;
+--- vdo-6.2.3.91/utils/vdo/user/fileLayer.c.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/vdo/user/fileLayer.c 2020-06-01 07:08:45.456501024 +0200
+@@ -291,8 +291,8 @@
+ layer->blockCount = deviceBlocks;
+ } else if (layer->blockCount != deviceBlocks) {
+ result = logErrorWithStringError(VDO_PARAMETER_MISMATCH,
+- "physical size %ld 4k blocks must match"
+- " physical size %ld 4k blocks of %s",
++ "physical size %"PRId64" 4k blocks must match"
++ " physical size %"PRId64" 4k blocks of %s",
+ layer->blockCount, deviceBlocks,
+ layer->name);
+ tryCloseFile(layer->fd);
+--- vdo-6.2.3.91/utils/vdo/user/vdodebugmetadata.c.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/vdo/user/vdodebugmetadata.c 2020-06-01 07:11:47.872179460 +0200
+@@ -320,7 +320,7 @@
+ result = layer->allocateIOBuffer(layer, journalBytes,
+ "recovery journal", &rawJournalBytes);
+ if (result != VDO_SUCCESS) {
+- errx(1, "Could not allocate %" PRIu64" bytes for the journal",
++ errx(1, "Could not allocate %zu bytes for the journal",
+ journalBytes);
+ }
+
+@@ -614,14 +614,14 @@
+ char *filename;
+ int result = ALLOCATE(MAX_PBNS, PhysicalBlockNumber, __func__, &pbns);
+ if (result != VDO_SUCCESS) {
+- errx(1, "Could not allocate %" PRIu64 " bytes",
++ errx(1, "Could not allocate %zu bytes",
+ sizeof(PhysicalBlockNumber) * MAX_PBNS);
+ }
+
+ result = ALLOCATE(MAX_SEARCH_LBNS, LogicalBlockNumber, __func__,
+ &searchLBNs);
+ if (result != VDO_SUCCESS) {
+- errx(1, "Could not allocate %" PRIu64 " bytes",
++ errx(1, "Could not allocate %zu bytes",
+ sizeof(LogicalBlockNumber) * MAX_SEARCH_LBNS);
+ }
+
+--- vdo-6.2.3.91/utils/vdo/user/vdodumpmetadata.c.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/vdo/user/vdodumpmetadata.c 2020-06-01 07:12:18.685345864 +0200
+@@ -350,7 +350,7 @@
+ {
+ int result = ALLOCATE(MAX_LBNS, PhysicalBlockNumber, __func__, &lbns);
+ if (result != VDO_SUCCESS) {
+- errx(1, "Could not allocate %" PRIu64 " bytes",
++ errx(1, "Could not allocate %zu bytes",
+ sizeof(PhysicalBlockNumber) * MAX_LBNS);
+ }
+
+--- vdo-6.2.3.91/utils/vdo/user/vdolistmetadata.c.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/vdo/user/vdolistmetadata.c 2020-06-01 07:12:54.471818659 +0200
+@@ -115,7 +115,7 @@
+ PhysicalBlockNumber startBlock,
+ BlockCount count)
+ {
+- printf("%ld .. %ld: %s\n", startBlock, startBlock + count - 1, label);
++ printf("%"PRId64" .. %"PRId64": %s\n", startBlock, startBlock + count - 1, label);
+ }
+
+ /**********************************************************************/
+--- vdo-6.2.3.91/utils/vdo/user/vdoregenerategeometry.c.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/vdo/user/vdoregenerategeometry.c 2020-06-01 07:14:56.551157299 +0200
+@@ -89,7 +89,7 @@
+ static int candidateCount = 0;
+
+ static char *fileName = NULL;
+-static size_t offset = 0;
++static uint64_t offset = 0;
+
+ /**
+ * Explain how this command-line tool is used.
diff --git a/vdo-x86.patch b/vdo-x86.patch
new file mode 100644
index 0000000..6618347
--- /dev/null
+++ b/vdo-x86.patch
@@ -0,0 +1,49 @@
+--- vdo-6.2.3.91/utils/uds/cpu.h.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/uds/cpu.h 2020-05-31 22:25:52.049798685 +0200
+@@ -36,7 +36,7 @@
+ #define CACHE_LINE_BYTES 128
+ #elif defined(__s390x__)
+ #define CACHE_LINE_BYTES 256
+-#elif defined(__x86_64__) || defined(__aarch64__)
++#elif defined(__x86_64__) || defined(__i386__) || defined(__aarch64__)
+ #define CACHE_LINE_BYTES 64
+ #else
+ #error "unknown cache line size"
+--- vdo-6.2.3.91/utils/uds/atomicDefs.h.orig 2020-05-30 04:20:46.000000000 +0200
++++ vdo-6.2.3.91/utils/uds/atomicDefs.h 2020-05-31 22:27:07.692722226 +0200
+@@ -81,7 +81,7 @@
+ **/
+ static INLINE void smp_mb(void)
+ {
+-#if defined __x86_64__
++#if defined __x86_64__ || defined __i386__
+ /*
+ * X86 full fence. Supposedly __sync_synchronize() will do this, but
+ * either the GCC documentation is a lie or GCC is broken.
+@@ -112,7 +112,7 @@
+ **/
+ static INLINE void smp_rmb(void)
+ {
+-#if defined __x86_64__
++#if defined __x86_64__ || defined __i386__
+ // XXX The implementation on x86 is more aggressive than necessary.
+ __asm__ __volatile__("lfence" : : : "memory");
+ #elif defined __aarch64__
+@@ -137,7 +137,7 @@
+ **/
+ static INLINE void smp_wmb(void)
+ {
+-#if defined __x86_64__
++#if defined __x86_64__ || defined __i386__
+ // XXX The implementation on x86 is more aggressive than necessary.
+ __asm__ __volatile__("sfence" : : : "memory");
+ #elif defined __aarch64__
+@@ -171,7 +171,7 @@
+ **/
+ static INLINE void smp_read_barrier_depends(void)
+ {
+-#if defined(__x86_64__) || defined(__PPC__) || defined(__s390__) \
++#if defined(__x86_64__) || defined(__i386__) || defined(__PPC__) || defined(__s390__) \
+ || defined(__aarch64__)
+ // Nothing needed for these architectures.
+ #else
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/vdo.git/commitdiff/405f2dce509c4de4efaa06381ccb3709d5248622
More information about the pld-cvs-commit
mailing list