%global commit a424751899366d135a81453402352e4330f4e634 %global gittag 6.2.3.91 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %define spec_release 73 %define kmod_name kvdo %define kmod_driver_version %{gittag} %define kmod_rpm_release %{spec_release} %define kmod_kernel_version 4.18.0-209.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 * Tue Jun 02 2020 - Andy Walsh - 6.2.3.91-73 - Removed unused UDS bio statistics. - Resolves: rhbz#1827762 - Removed support for old kernels. - Resolves: rhbz#1827762 - Fixed Coverity errors. - Resolves: rhbz#1827763 - Improved the error message when slab journal locks overflow. - Resolves: rhbz#1827761 - Fixed a bug which could result in VDO issuing I/O while suspended. - Resolves: rhbz#1824789 - Fixed a rare double-enqueue bug in the recovery journal. - Resolves: rhbz#1824802 - Modified VDO to not allocate an index if the VDO device is started with deduplication disabled. - Resolves: rhbz#1755448 - Nodified VDO to not log spurious journal lock warnings when cleaning up write requests which failed due to the VDO going read-only. - Resolves: rhbz#1840455 * Mon Apr 27 2020 - Andy Walsh - 6.2.2.117_8.3-73 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1812069 * Mon Apr 27 2020 - Andy Walsh - 6.2.2.117_8.3-72 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1812069 * Fri Apr 17 2020 - Andy Walsh - 6.2.2.117_8.3-71 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1812069 * Fri Apr 17 2020 - Andy Walsh - 6.2.2.117_8.3-70 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1812069 * Wed Mar 25 2020 - Andy Walsh - 6.2.2.117_8.3-69 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1812069 * Wed Mar 11 2020 - Andy Walsh - 6.2.2.117-68 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1812069 * Tue Mar 10 2020 - Andy Walsh - 6.2.2.117-67 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1812069 * Tue Mar 10 2020 - Andy Walsh - 6.2.2.117-66 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1812069 * Sat Mar 07 2020 - Andy Walsh - 6.2.2.117-65 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1764816 * Tue Feb 11 2020 - Andy Walsh - 6.2.2.117-63 - Fixed a bug which would cause the UDS index to be perceived as corrupt when a VDO volume is moved to a system with a different endianness. - Resolves: rhbz#1745211 - Modified UDS index rebuild to be interruptible so that shutting down a VDO whose index is rebuilding need not wait for the index rebuild to complete. - Resolves: rhbz#1737639 - Prevented two VDO devices from being started on the same storage. - Resolves: rhbz#1725052 - Fixed rare races which could result in VDO issuing I/O while suspended. - Resolves: rhbz#1766358 - Fixed crashes when re-suspending a VDO after it had been resumed. - Resolves: rhbz#1765253 - Made async mode ACID. Added async-unsafe mode to preserve the performance of the old implementation. - Resolves: rhbz#1657301 * Tue Jan 14 2020 - Andy Walsh - 6.2.2.24-63 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1764816 * Tue Dec 03 2019 - Andy Walsh - 6.2.2.24-62 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1764816 * Tue Nov 26 2019 - Andy Walsh - 6.2.2.24-61 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1764816 * Mon Nov 11 2019 - Andy Walsh - 6.2.2.24-60 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1764816 * Thu Oct 31 2019 - Andy Walsh - 6.2.2.24-59 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1764816 * Wed Oct 30 2019 - Andy Walsh - 6.2.2.24-58 - Incremented the dm target version to allow lvm to tell whether a VDO - Resolves: rhbz#1752893 * Thu Oct 24 2019 - Andy Walsh - 6.2.2.18-58 - Bumped NVR for new 4.18 kernel - Relates: rhbz#1764816 * Thu Oct 17 2019 - Andy Walsh - 6.2.2.18-57 - Reduced the default number of index zones as the previous default attempted to maximize index performance at the expense of all other processes. - Resolves: rhbz#1703507 - Fixed an assertion when resuming a VDO device which was not suspended with the no-flush flag. - Resolves: rhbz#1752893 * 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