diff --git a/.gitignore b/.gitignore index 57af34c..f378134 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/kvdo-8df6805.tar.gz +SOURCES/kvdo-7806cbf.tar.gz diff --git a/.kmod-kvdo.metadata b/.kmod-kvdo.metadata index ccca557..63faadd 100644 --- a/.kmod-kvdo.metadata +++ b/.kmod-kvdo.metadata @@ -1 +1 @@ -9ed5f38006bf5a9b4e3f4da5ccb80bed22a1aba6 SOURCES/kvdo-8df6805.tar.gz +c4f1923ec5935a35c3c795fc6cc887422c108980 kvdo-7806cbf.tar.gz diff --git a/SPECS/kmod-kvdo.spec b/SPECS/kmod-kvdo.spec new file mode 100644 index 0000000..03d83d2 --- /dev/null +++ b/SPECS/kmod-kvdo.spec @@ -0,0 +1,771 @@ +%global commit 7806cbf0b693ea3ac82cafe567b1a964bcd69924 +%global gittag 6.2.1.138 +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%define spec_release 57 + +%define kmod_name kvdo +%define kmod_driver_version %{gittag} +%define kmod_rpm_release %{spec_release} +%define kmod_kernel_version 4.18.0-144.el8 +%define kmod_headers_version %(rpm -qa kernel-devel | sed 's/^kernel-devel-//') +%define kmod_kbuild_dir . +%define kmod_dependencies %{nil} +%define kmod_build_dependencies %{nil} +%define kmod_devel_package 0 + +Source0: https://github.com/dm-vdo/%{kmod_name}/archive/%{commit}/%{kmod_name}-%{shortcommit}.tar.gz + +%define findpat %( echo "%""P" ) + +Name: kmod-kvdo +Version: %{kmod_driver_version} +Release: %{kmod_rpm_release}%{?dist} +Summary: Kernel Modules for Virtual Data Optimizer +License: GPLv2+ +URL: http://github.com/dm-vdo/kvdo +BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) +BuildRequires: elfutils-libelf-devel +BuildRequires: glibc +BuildRequires: kernel-devel >= %{kmod_kernel_version} + +# Disable the kernel-debug requirement for now +%if 0 +# kernel-debug appears to not be necessary at the moment. +BuildRequires: kernel-debug >= %{kmod_kernel_version} +%endif + +BuildRequires: libuuid-devel +BuildRequires: redhat-rpm-config +ExcludeArch: i686 +ExcludeArch: ppc +ExcludeArch: ppc64 +ExcludeArch: s390 + +%global kernel_source() /usr/src/kernels/%{kmod_headers_version} + +%global _use_internal_dependency_generator 0 +Provides: kernel-modules = %{kmod_kernel_version}.%{_target_cpu} +Provides: kmod-%{kmod_name} = %{?epoch:%{epoch}:}%{version}-%{release} +Requires(post): %{_sbindir}/weak-modules +Requires(postun): %{_sbindir}/weak-modules +Requires: kernel >= %{kmod_kernel_version} + +%if "%{kmod_build_dependencies}" != "" +BuildRequires: %{kmod_build_dependencies} +%endif +%if "%{kmod_dependencies}" != "" +Requires: %{kmod_dependencies} +%endif + +%description +Virtual Data Optimizer (VDO) is a device mapper target that delivers +block-level deduplication, compression, and thin provisioning. + +This package provides the kernel modules for VDO. + +%pre +# During the install, check whether kvdo or uds is loaded. A warning here +# indicates that a previous install was not completely removed. This message +# is purely informational to the user. +for module in kvdo uds; do + if grep -q "^${module}" /proc/modules; then + if [ "${module}" == "kvdo" ]; then + echo "WARNING: Found ${module} module previously loaded (Version: $(cat /sys/kvdo/version 2>/dev/null || echo Unknown)). A reboot is recommended before attempting to use the newly installed module." + else + echo "WARNING: Found ${module} module previously loaded. A reboot is recommended before attempting to use the newly installed module." + fi + fi +done + +%post +modules=( $(find /lib/modules/%{kmod_headers_version}/extra/kmod-%{kmod_name} | grep '\.ko$') ) +printf '%s\n' "${modules[@]}" >> /var/lib/rpm-kmod-posttrans-weak-modules-add + +%pretrans -p +posix.unlink("/var/lib/rpm-kmod-posttrans-weak-modules-add") + +%posttrans +if [ -f "/var/lib/rpm-kmod-posttrans-weak-modules-add" ]; then + modules=( $(cat /var/lib/rpm-kmod-posttrans-weak-modules-add) ) + rm -rf /var/lib/rpm-kmod-posttrans-weak-modules-add + printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --dracut=/usr/bin/dracut --add-modules +fi + +%preun +rpm -ql kmod-kvdo-%{kmod_driver_version}-%{kmod_rpm_release}%{?dist}.$(arch) | grep '\.ko$' > /var/run/rpm-kmod-%{kmod_name}-modules +# Check whether kvdo or uds is loaded, and if so attempt to remove it. A +# failure to unload means there is still something using the module. To make +# sure the user is aware, we print a warning with recommended instructions. +for module in kvdo uds; do + if grep -q "^${module}" /proc/modules; then + warnMessage="WARNING: ${module} in use. Changes will take effect after a reboot." + modprobe -r ${module} 2>/dev/null || echo ${warnMessage} && /usr/bin/true + fi +done + +%postun +modules=( $(cat /var/run/rpm-kmod-%{kmod_name}-modules) ) +rm /var/run/rpm-kmod-%{kmod_name}-modules +printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --dracut=/usr/bin/dracut --remove-modules + +%files +%defattr(644,root,root,755) +/lib/modules/%{kmod_headers_version} +/etc/depmod.d/%{kmod_name}.conf +/usr/share/doc/kmod-%{kmod_name}/greylist.txt + +%prep +%setup -n %{kmod_name}-%{commit} +%{nil} +set -- * +mkdir source +mv "$@" source/ +mkdir obj + +%build +rm -rf obj +cp -r source obj +make -C %{kernel_source} M=$PWD/obj/%{kmod_kbuild_dir} V=1 \ + NOSTDINC_FLAGS="-I $PWD/obj/include -I $PWD/obj/include/uapi" +# mark modules executable so that strip-to-file can strip them +find obj/%{kmod_kbuild_dir} -name "*.ko" -type f -exec chmod u+x '{}' + + +whitelist="/lib/modules/kabi-current/kabi_whitelist_%{_target_cpu}" + +for modules in $( find obj/%{kmod_kbuild_dir} -name "*.ko" -type f -printf "%{findpat}\n" | sed 's|\.ko$||' | sort -u ) ; do + # update depmod.conf + module_weak_path=$(echo $modules | sed 's/[\/]*[^\/]*$//') + if [ -z "$module_weak_path" ]; then + module_weak_path=%{name} + else + module_weak_path=%{name}/$module_weak_path + fi + echo "override $(echo $modules | sed 's/.*\///') $(echo %{kmod_headers_version} | sed 's/\.[^\.]*$//').* weak-updates/$module_weak_path" >> source/depmod.conf + + # update greylist + nm -u obj/%{kmod_kbuild_dir}/$modules.ko | sed 's/.*U //' | sed 's/^\.//' | sort -u | while read -r symbol; do + grep -q "^\s*$symbol\$" $whitelist || echo "$symbol" >> source/greylist + done +done +sort -u source/greylist | uniq > source/greylist.txt + +%install +export INSTALL_MOD_PATH=$RPM_BUILD_ROOT +export INSTALL_MOD_DIR=extra/%{name} +make -C %{kernel_source} modules_install V=1 \ + M=$PWD/obj/%{kmod_kbuild_dir} +# Cleanup unnecessary kernel-generated module dependency files. +find $INSTALL_MOD_PATH/lib/modules -iname 'modules.*' -exec rm {} \; + +install -m 644 -D source/depmod.conf $RPM_BUILD_ROOT/etc/depmod.d/%{kmod_name}.conf +install -m 644 -D source/greylist.txt $RPM_BUILD_ROOT/usr/share/doc/kmod-%{kmod_name}/greylist.txt + +%clean +rm -rf $RPM_BUILD_ROOT + +%changelog +* Fri Sep 13 2019 - Andy Walsh - 6.2.1.138-57 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1695330 + +* Thu Aug 08 2019 - Andy Walsh - 6.2.1.138-56 +- Fixed a crash on allocation failure and a use-after-free race introduced by + the changes to avoid issuing I/O while suspended. +- Resolves: rhbz#1659303 + +* Fri Aug 02 2019 - Andy Walsh - 6.2.1.134-56 +- Finished converting the VDO device to conform to the DM convention of not + issuing I/O while suspended. +- Resolves: rhbz#1659303 +- Fixed a bug where crash recovery could use the wrong threads for certain + operations potentially resulting in memory corruption. +- Resolves: rhbz#1703621 +- Fixed a bug which could cause segfaults when running the vdostatus + command. +- Resolves: rhbz#1669960 +- Eliminated a backtrace from the error logged when creating a VDO device + with an erroneous physical size in the table line. +- Resolves: rhbz#1717435 +- Fixed a possible use-after-free of the UDSConfiguration. +- Resolves: rhbz#1653802 +- Made VDO a singleton device because multi-segment devices containing a + VDO have a number of issues. +- Resolves: rhbz#1725077 +- Converted the VDO device to conform to the DM convention of not issuing + writes from the constructor. +- Resolves: rhbz#1669086 + +* Mon Jul 29 2019 - Andy Walsh - 6.2.1.102-56 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1695330 + +* Fri Jul 12 2019 - Andy Walsh - 6.2.1.102-55 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1695330 + +* Thu Jun 27 2019 - Andy Walsh - 6.2.1.102-54 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1695330 + +* Fri Jun 14 2019 - Andy Walsh - 6.2.1.102-53 +- Continued converting the VDO device to conform to the DM convention of + not issuing I/O while suspended. + - Resolves: rhbz#1659303 +- Added more rate limiting of error logging in both the kvdo and uds + modules in order to avoid soft-lockups on newer kernels. + - Resolves: rhbz#1703243 +- Eliminated the passing of addresses of unaligned fields in packed + - Resolves: rhbz#1718058 + +* Tue May 21 2019 - Andy Walsh - 6.2.1.48-53 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1695330 + +* Tue May 21 2019 - Andy Walsh - 6.2.1.48-52 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1695330 + +* Sun May 05 2019 - Andy Walsh - 6.2.1.48-51 +- Modified the setting of the dm target version for VDO devices to only + change when the dm interface (i.e. table line) changes instead of tying + it to the VDO version. + - Resolves: rhbz#1665298 +- Improved error handling when resizing VDO devices. + - Resolves: rhbz#1659247 +- Reduced, removed, and/or rate limited error logging to avoid + soft-lockups. + - Resolves: rhbz#1678785 + - Resolves: rhbz#1698664 +- Began converting the VDO device to conform to the DM convention of not + issuing I/O while suspended. + - Relates: rhbz#1659303 +- Added a dmsetup message to close the UDS index of a running VDO device. + - Relates: rhbz#1643291 + +* Fri May 03 2019 - Andy Walsh - 6.2.0.293-51 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1695330 + +* Mon Feb 25 2019 - Andy Walsh - 6.2.0.293-50 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Fri Feb 15 2019 - Andy Walsh - 6.2.0.293-49 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Feb 13 2019 - Andy Walsh - 6.2.0.293-48 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Sat Feb 09 2019 - Andy Walsh - 6.2.0.293-47 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Fri Feb 08 2019 - Andy Walsh - 6.2.0.293-46 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Feb 06 2019 - Andy Walsh - 6.2.0.293-45 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Jan 16 2019 - Andy Walsh - 6.2.0.293-44 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Mon Jan 14 2019 - Andy Walsh - 6.2.0.293-43 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Fri Jan 11 2019 - Andy Walsh - 6.2.0.293-42 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Mon Jan 07 2019 - Andy Walsh - 6.2.0.293-41 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Dec 19 2018 - Andy Walsh - 6.2.0.293-40 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Mon Dec 17 2018 - Andy Walsh - 6.2.0.293-39 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Fri Dec 14 2018 - Andy Walsh - 6.2.0.293-38 +- Improved dmsetup error reporting of invalid thread counts. +- rhbz#1645324 +- Allowed VDO backing devices to specified by device number. +- Resolves: rhbz#1594285 +- Eliminated memory allocations when suspended. +- Resolves: rhbz#1658348 +- Improved error handling during suspend. +- Resolves: rhbz#1658348 + +* Wed Dec 12 2018 - Andy Walsh - 6.2.0.239-38 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Mon Dec 10 2018 - Andy Walsh - 6.2.0.239-37 +- Bumped NVR for driver signing +- Relates: rhbz#1589873 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Thu Nov 29 2018 - Andy Walsh - 6.2.0.239-36 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Fri Nov 16 2018 - Andy Walsh - 6.2.0.273-35 +- Fixed more error path memory leaks in the uds and kvdo modules. +- Resolves: rhbz#1639854 +- Removed the read cache. +- Resolves: rhbz#1639512 +- Fixed a bug which prevented parsing of version 0 table lines. +- Resolves: rhbz#1643639 +- In order to properly handle version 0 table lines, made no-op physical + growth not an error. +- Resolves: rhbz#1643639 +- Limited the number of logical zones to 60. +- Resolves: rhbz#1645324 +- Converted to use the kernel's bio zeroing method instead of a VDO + specific one. +- Resolves: rhbz#1647446 +- Added a missing call to flush_cache_page() after writing pages which may + be owned by the page cache or a user as required by the kernel. +- Resolves: rhbz#1647446 +- Added a version 2 table line which uses DM-style optional parameters. +- Resolves: rhbz#1648469 +- Fixed a bug in the statistics tracking partial I/Os. +- Resolves: rhbz#1648496 +- Added a maximum discard size table line parameter and removed the + corresponding sysfs parameter which applied to all VDO devices. +- Resolves: rhbz#1648469 + +* Wed Nov 07 2018 - Andy Walsh - 6.2.0.239-35 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Oct 24 2018 - Andy Walsh - 6.2.0.239-34 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Oct 24 2018 - Andy Walsh - 6.2.0.239-33 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Fri Oct 19 2018 - Andy Walsh - 6.2.0.239-32 +- Depend on more of the NVR for the kernel package. +- Resolves: rhbz#1640699 + +* Tue Oct 16 2018 - Andy Walsh - 6.2.0.239-31 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Tue Oct 16 2018 - Tomas Kopecek - 6.2.0.239-30 +- Bumped NVR for driver signing +- Relates: rhbz#1589873 + +* Mon Oct 15 2018 - Andy Walsh - 6.2.0.239-29 +- Bumped NVR for driver signing +- Relates: rhbz#1589873 + +* Thu Oct 11 2018 - Andy Walsh - 6.2.0.239-28 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Oct 10 2018 - Andy Walsh - 6.2.0.239-27 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Sun Oct 07 2018 - Andy Walsh - 6.2.0.239-26 +- Fixed error path memory leaks in the uds and kvdo modules. +- Resolves: rhbz#1609403 +- Modified the physical and logical growth procedures to be consistent with + other device mapper targets. +- Resolves: rhbz#1631868 + +* Fri Sep 28 2018 - Andy Walsh - 6.2.0.219-26 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Thu Sep 27 2018 - Andy Walsh - 6.2.0.219-25 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Tue Sep 25 2018 - Andy Walsh - 6.2.0.219-24 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Tue Sep 25 2018 - Joseph Chapman - 6.2.0.219-23 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Mon Sep 24 2018 - Andy Walsh - 6.2.0.219-22 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Fri Sep 21 2018 - Andy Walsh - 6.2.0.219-21 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Thu Sep 20 2018 - Andy Walsh - 6.2.0.219-20 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Sep 19 2018 - Andy Walsh - 6.2.0.219-19 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Tue Sep 18 2018 - Andy Walsh - 6.2.0.219-18 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Mon Sep 17 2018 - Andy Walsh - 6.2.0.219-17 +- Fixed error path memory leaks in the uds and kvdo modules. +- Resolves: rhbz#1609403 +- Fixed conflict errors when installing RPMs via dnf. +- Resolves: rhbz#1601103 +- Fixed a hang when recovering a VDO volume with a physical size larger + than 16TB. +- Resolves: rhbz#1628316 +- Fixed some potential initialization issues in the UDS module. +- Resolves: rhbz#1609403 +- Fixed a use-after-free bug in a UDS error path. +- Resolves: rhbz#1609403 +- Added missing va_end() calls. +- Resolves: rhbz#1627953 +- Modified Makefile to take build flags from rpmbuild. +- Resolves: rhbz#1624184 + +* Fri Sep 14 2018 - Andy Walsh - 6.2.0.197-16 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Thu Sep 13 2018 - Andy Walsh - 6.2.0.197-15 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Sep 12 2018 - Andy Walsh - 6.2.0.197-14 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Aug 29 2018 - Andy Walsh - 6.2.0.197-13 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Wed Aug 29 2018 - Joseph Chapman - 6.2.0.197-12 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Tue Aug 28 2018 - Josh Boyer - 6.2.0.197-11 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1623006 + +* Fri Aug 24 2018 - Andy Walsh - 6.2.0.197-10 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1611663 + +* Mon Aug 20 2018 - Andy Walsh - 6.2.0.197-9 +- Patched a new compiler warning out +- Relates: rhbz#1611663 + +* Mon Aug 20 2018 - Andy Walsh - 6.2.0.197-8 +- Bumped NVR for new 4.18 kernel +- Relates: rhbz#1611663 + +* Mon Aug 13 2018 - Andy Walsh - 6.2.0.197-7 +- Bumped NVR for 4.18 rebase +- Resolves: rhbz#1534087 + +* Wed Aug 8 2018 - Andy Walsh - 6.2.0.197-6 +- Enabled the setting of max_discard_sectors for VDO devices via sysfs. + This allows users stacking dm-thin devices on top of VDO to set a value which + is large enough that dm-thin will send discards to VDO. +- Resolves: rhbz#1612349 + +* Sat Jul 28 2018 - Andy Walsh - 6.2.0.187-6 +- No longer attempt to unload modules in %preun +- Resolves: rhbz#1553420 +- Fixed a bug in %preun that was attempting to call 'dnf' +- Resolves: rhbz#1598924 +- Fixed weak-modules calls to use proper location for dracut +- Resolves: rhbz#1609178 +- Fixed a potential deadlock in the UDS index by using the kernel supplied + struct callback instead of our own implementation of synchronous + callbacks. +- Eliminated obsolete code and fields from UDS. +- Converted the VDO module to use numeric.h from the UDS module instead of + having its own version. +- Fixed a bug which would cause incorrect encoding of VDO data structures + on disk. +- Removed or modified logging which prints pointers from the kernel since + newer kernels obfuscate the pointer values for security reasons. +- Eliminated confusing and spurious error messages when rebuilding a UDS + index. +- Improved memory allocation by not using the incorrect __GFP_NORETRY flag + and by using the memalloc_noio_save mechanism. +- Finished conversion of the encoding and decoding of the VDO's on-disk + structures to be platform independent. +- Converted VDO to use the atomic API from the UDS module instead of its + own. +- Fixed memory leaks in UDS error paths. +- Fixed a potential stack overflow when reaping the recovery journal. + +* Fri Jul 06 2018 - Andy Walsh - 6.2.0.132-5 +- Rebuilt to work with 4.18 kernel. + +* Thu Jun 28 2018 - Andy Walsh - 6.2.0.132-4 +Note: This is a pre-release version, future versions of VDO may not support +VDO devices created with this version. +- Removed obsolete code. +- Continued conversion of the encoding and decoding of the VDO's on-disk + structures to be platform independent. +- Adopted use of gcc's built-in byte order macros. +- Converted the VDO module to use the platform independent version of the + Murmur3 hash from the UDS module. +- Improved counting of dedupe timeouts by including in the count queries + which are not made due to their being a lack of resources from previous + queries taking too long. +- Improved checking that VDO does not allocate memory from its own threads + during normal operation. +- Fixed a bug which caused crashes with VDO on top of RAID-50. +- Fixed a bug which caused VDO to ignore most flush requests on kernels + later than 4.10 +- Resolves: rhbz#1594062 + +* Thu Jun 21 2018 - Andy Walsh - 6.2.0.109-4 +Note: This is a pre-release version, future versions of VDO may not support +VDO devices created with this version. +- Removed obsolete code. +- Made uses of memory barriers and atomics more portable across platforms. +- Converted the encoding and decoding of many of VDO's on-disk structures + to be platform independent. +- Made the implementation of VDO's in-memory data structures platform + independent. +- Fixed a logging bug which resulted in single log message being split + across multiple log lines on newer kernels. +- Fixed a bug which would cause attempts to grow the physical size of a VDO + device to fail if the device below the VDO was resized while the VDO was + offline. +- Converted to use GCC's built-in macros for determining endianness. +- Converted some non-performance critical atomics to be spinlock protected + in order to avoid dealing with memory barrier portability issues. +- Fixed a bug which could cause data loss when discarding unused portions + of a VDO's logical space. +- Reduced memory usage (slightly) by rearranging structures to pack better + in memory. +- Modified grow physical to fail in the prepare step if the size isn't + changing, avoiding a suspend-and-resume cycle. +- Added support for building with a 4.18 kernel. + +* Mon Jun 04 2018 - Andy Walsh - 6.2.0.71-4 +Note: This is a pre-release version, future versions of VDO may not support +VDO devices created with this version. +- Updated to compile on aarch64, ppc64le, and s390x processor architectures + in addition to x86. +- Updated atomics, memory barriers, and other synchronization mechanisms to + work on aarch64, ppc64le, and s390x processor architectures in addition + to x86. +- Fixed thread safety issues in the UDS page cache. +- Removed obsolete code and interfaces from the UDS module. +- Added /sys/kvdo/version which contains the currently loaded version of + the kvdo module. +- Updated the UDS module to consistently generate and encode on-disk data + regardless of the processor architecture. +- Began Updating the VDO module to consistently encode on-disk data + regardless of the processor architecture. +- Added logging of normal operation when a VDO device starts normally. +- Fixed a potential use-after-free race when shutting down a VDO device. +- Modified allocations made from VDO index threads to use the correct flags. +- Exported the MurmurHash3 implementation from the UDS module rather than + having a seperate copy in the VDO module. +- Fixed handling of I/O errors in 4.13 and later kernels. +- Exported functions for handling endian conversions from the UDS module + for use by the VDO module. + +* Tue May 01 2018 - Andy Walsh - 6.2.0.35-3 +- Enabled aarch64 builds + +* Fri Apr 27 2018 - Andy Walsh - 6.2.0.35-2 +Note: This is a pre-release version, future versions of VDO may not support +VDO devices created with this version. +- Added validation that the release version numbers in the geometry and + super block match on load. +- Fixed compilation problems on newer versions of GCC. + +* Tue Apr 24 2018 - Andy Walsh - 6.2.0.32-2 +Note: This is a pre-release version, future versions of VDO may not support +VDO devices created with this version. +- Merged the funnel queue implementations in the uds and kvdo modules. +- Improved deduplication of concurrent requests containing the same data. +- Enabled loading of VDO devices created with version 6.0 or 6.1. +- Moved atomic.h from the UDS module to the VDO module since the UDS module + doesn't use it. +- Removed spurious error messages when first creating the index for a new + VDO. +- Added validation that the release version numbers in the geometry block + and VDO super block match. +- Fixed bug in UDS on architectures with page sizes larger than 4K. +- Reflected kernel change of SECTOR_SHIFT and SECTOR_SIZE from enums to + macros. +- Continued to remove obsolete functionality from the UDS module. +- Continued to add support for architectures other than x86. +- Fixed a thread-safety issue in UDS module's chapter cache. + +* Tue Apr 17 2018 - Andy Walsh - 6.2.0.4-2 +- Fixed path to _sbindir for weak-mldules +- Resolves: rhbz#1566144 + +* Fri Apr 13 2018 - Andy Walsh - 6.2.0.4-1 +- Updated to use github for Source0 +- Removed unused sections +- Initial RHEL8 RPM rhbz#1534087 + +* Fri Apr 13 2018 - J. corwin Coburn - 6.2.0.4-1 +- Initial pre-release for RHEL 8. + - Please be aware that this version is not compatible with previous versions + of VDO. Support for loading or upgrading devices created with VDO version + 6.1 will be available soon. +- Management tools will work with both python 2 and python 3. +- Dedupe path improvements. +- Beginnings of support for non-x86 architectures. +- Removed obsolete code from UDS. + +* Tue Feb 27 2018 - Andy Walsh - 6.1.0.153-15 +- Fixed preun handling of loaded modules +- Resolves: rhbz#1549178 + +* Fri Feb 16 2018 - Joseph Chapman - 6.1.0.149-13 +- Sync mode is safe if underlying storage changes to requiring flushes +- Resolves: rhbz#1540777 + +* Wed Feb 07 2018 - Joseph Chapman - 6.1.0.146-13 +- Module target is now "vdo" instead of "dedupe" +- Fixed a bug where crash recovery led to failed kernel page request +- Improved modification log messages +- Improved package description and summary fields +- Resolves: rhbz#1535127 +- Resolves: rhbz#1535597 +- Resolves: rhbz#1540696 +- Resolves: rhbz#1541409 + +* Tue Feb 06 2018 - Andy Walsh - 6.1.0.144-13 +- Updated summary and descriptions +- Resolves: rhbz#1541409 + +* Thu Feb 01 2018 - Joseph Chapman - 6.1.0.130-12 +- Fix General Protection Fault unlocking UDS callback mutex +- Removing kmod-kvdo package unloads kernel module +- Fix URL to point to GitHub tree +- Resolves: rhbz#1510176 +- Resolves: rhbz#1533260 +- Resolves: rhbz#1539061 + +* Fri Jan 19 2018 - Joseph Chapman - 6.1.0.124-11 +- Fixed provisional referencing for dedupe. +- Only log a bio submission from a VDO to itself. +- vdoformat cleans up metadata properly after fail. +- Resolves: rhbz#1511587 +- Resolves: rhbz#1520972 +- Resolves: rhbz#1532481 + +* Wed Jan 10 2018 - Joseph Chapman - 6.1.0.114-11 +- /sys/uds permissions now resticted to superuser only +- Remove /sys/uds files that should not be used in production +- Removing kvdo module reports version +- VDO automatically chooses the proper write policy by default +- Fixed a Coverity-detected error path leak +- Resolves: rhbz#1525305 +- Resolves: rhbz#1527734 +- Resolves: rhbz#1527737 +- Resolves: rhbz#1527924 +- Resolves: rhbz#1528399 + +* Thu Dec 21 2017 - Joseph Chapman - 6.1.0.106-11 +- Detect journal overflow after 160E of writes +- Clean up UDS threads when removing last VDO +- Resolves: rhbz#1512968 +- Resolves: rhbz#1523240 + +* Tue Dec 12 2017 Joe Chapman 6.1.0.97-11 +- Default logical size is no longer over-provisioned +- Remove debug logging when verifying dedupe advice +- Resolves: rhbz#1519330 + +* Fri Dec 08 2017 Joe Chapman 6.1.0.89-11 +- improve metadata cleanup after vdoformat failure +- log REQ_FLUSH & REQ_FUA at level INFO +- improve performance of cuncurrent write requests with the same data +- Resolves: rhbz#1520972 +- Resolves: rhbz#1521200 + +* Fri Dec 01 2017 Joe Chapman 6.1.0.72-10 +- clear VDO metadata on a vdo remove call +- fix create of new dedupe indices +- add magic number to VDO geometry block +- do less logging when stopping a VDO +- add a UUID +- Resolves: rhbz#1512127 +- Resolves: rhbz#1516081 +- Resolves: rhbz#1511109 +- Resolves: rhbz#1515183 + +* Fri Nov 17 2017 Joe Chapman 6.1.0.55-9 +- fail loading an uncreated index more gracefully +- remove spurious/unnecessary files from the distribution +- fix kernel module version +- make logging less chatty +- fix an integer overflow in makeVDOLayout +- Resolves: rhbz#1511034 +- Resolves: rhbz#1511109 +- Resolves: rhbz#1511096 + +* Fri Nov 10 2017 Joe Chapman 6.1.0.44-8 +- fix readCacheSize handling large numbers +- vdoformat signals error when it finds a geometry block +- prevent kernel oops when loading an old geometry block +- vdoformat silently rounds down physical sizes to a block boundary +- UDS threads identify related VDO device +- clean up contents of source tarballs +- Resolves: rhbz#1505936 +- Resolves: rhbz#1507996 +- Resolves: rhbz#1509466 +- Resolves: rhbz#1510558 +- Resolves: rhbz#1510585 +- Resolves: rhbz#1511201 +- Resolves: rhbz#1511209 + +* Fri Nov 03 2017 Joe Chapman 6.1.0.34-7 +- Bugfixes +- Resolves: rhbz#1491422 + +* Mon Oct 30 2017 Joe Chapman 6.1.0.13-6 +- Fixed some scanning tool complaints +- Resolves: rhbz#1491422 + +* Tue Oct 24 2017 Andy Walsh 6.1.0.0-6 +- Fixed kernel requirement to allow subsequent releases without updating spec +- Resolves: rhbz#1491422 + +* Fri Oct 20 2017 John Wiele 6.1.0.0-5 +- Bumped kernel requirement to 3.10.0-741 +- Resolves: rhbz#1491422 + +* Tue Oct 17 2017 John Wiele 6.1.0.0-4 +- Resolved some missing symbols +- Resolves: rhbz#1491422 + +* Mon Oct 16 2017 John Wiele 6.1.0.0-3 +- Updated to provide a useable package +- Resolves: rhbz#1491422 + +* Sat Oct 14 2017 Andy Walsh 6.1.0.0-2 +- Removed invalid requirement and some unnecessary comments in spec +- Resolves: rhbz#1491422 + +* Wed Oct 11 2017 John Wiele 6.1.0.0-1 +- Initial vdo module for Driver Update Program +- Resolves: rhbz#1491422