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..68b0660 100644
--- a/.kmod-kvdo.metadata
+++ b/.kmod-kvdo.metadata
@@ -1 +1 @@
-9ed5f38006bf5a9b4e3f4da5ccb80bed22a1aba6 SOURCES/kvdo-8df6805.tar.gz
+c4f1923ec5935a35c3c795fc6cc887422c108980 SOURCES/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 <lua>
+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 <awalsh@redhat.com> - 6.2.1.138-57
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1695330
+
+* Thu Aug 08 2019 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.1.102-56
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1695330
+
+* Fri Jul 12 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.1.102-55
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1695330
+
+* Thu Jun 27 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.1.102-54
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1695330
+
+* Fri Jun 14 2019 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.1.48-53
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1695330
+
+* Tue May 21 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.1.48-52
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1695330
+
+* Sun May 05 2019 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.293-51
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1695330
+
+* Mon Feb 25 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-50
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Fri Feb 15 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-49
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Feb 13 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-48
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Sat Feb 09 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-47
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Fri Feb 08 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-46
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Feb 06 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-45
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Jan 16 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-44
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Mon Jan 14 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-43
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Fri Jan 11 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-42
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Mon Jan 07 2019 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-41
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Dec 19 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-40
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Mon Dec 17 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.293-39
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Fri Dec 14 2018 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.239-38
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Mon Dec 10 2018 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.239-36
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Fri Nov 16 2018 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.239-35
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Oct 24 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.239-34
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Oct 24 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.239-33
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Fri Oct 19 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.239-32
+- Depend on more of the NVR for the kernel package.
+- Resolves: rhbz#1640699
+
+* Tue Oct 16 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.239-31
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Tue Oct 16 2018 - Tomas Kopecek <tkopecek@redhat.com> - 6.2.0.239-30
+- Bumped NVR for driver signing
+- Relates: rhbz#1589873
+
+* Mon Oct 15 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.239-29
+- Bumped NVR for driver signing
+- Relates: rhbz#1589873
+
+* Thu Oct 11 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.239-28
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Oct 10 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.239-27
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Sun Oct 07 2018 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.219-26
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Thu Sep 27 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.219-25
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Tue Sep 25 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.219-24
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Tue Sep 25 2018 - Joseph Chapman <jochapma@redhat.com> - 6.2.0.219-23
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Mon Sep 24 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.219-22
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Fri Sep 21 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.219-21
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Thu Sep 20 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.219-20
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Sep 19 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.219-19
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Tue Sep 18 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.219-18
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Mon Sep 17 2018 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.197-16
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Thu Sep 13 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.197-15
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Sep 12 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.197-14
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Aug 29 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.197-13
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Wed Aug 29 2018 - Joseph Chapman <jochapma@redhat.com> - 6.2.0.197-12
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Tue Aug 28 2018 - Josh Boyer <jwboyer@redhat.com> - 6.2.0.197-11
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1623006
+
+* Fri Aug 24 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.197-10
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1611663
+
+* Mon Aug 20 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.197-9
+- Patched a new compiler warning out
+- Relates: rhbz#1611663
+
+* Mon Aug 20 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.197-8
+- Bumped NVR for new 4.18 kernel
+- Relates: rhbz#1611663
+
+* Mon Aug 13 2018 - Andy Walsh <awalsh@redhat.com> - 6.2.0.197-7
+- Bumped NVR for 4.18 rebase
+- Resolves: rhbz#1534087
+
+* Wed Aug  8 2018 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.132-5
+- Rebuilt to work with 4.18 kernel.
+
+* Thu Jun 28 2018 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.35-3
+- Enabled aarch64 builds
+
+* Fri Apr 27 2018 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.4-2
+- Fixed path to _sbindir for weak-mldules
+- Resolves: rhbz#1566144
+         
+* Fri Apr 13 2018 - Andy Walsh <awalsh@redhat.com> - 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 <corwin@redhat.com> - 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 <awalsh@redhat.com> - 6.1.0.153-15
+- Fixed preun handling of loaded modules
+- Resolves: rhbz#1549178
+
+* Fri Feb 16 2018 - Joseph Chapman <jochapma@redhat.com> - 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 <jochapma@redhat.com> - 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 <awalsh@redhat.com> - 6.1.0.144-13
+- Updated summary and descriptions
+- Resolves: rhbz#1541409
+
+* Thu Feb 01 2018 - Joseph Chapman <jochapma@redhat.com> - 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 <jochapma@redhat.com> - 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 <jochapma@redhat.com> - 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 <jochapma@redhat.com> - 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 <jochapma@redhat.com> 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 <jochapma@redhat.com> 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 <jochapma@redhat.com> 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 <jochapma@redhat.com> 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 <jochapma@redhat.com> 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 <jochapma@redhat.com> 6.1.0.34-7
+- Bugfixes
+- Resolves: rhbz#1491422
+
+* Mon Oct 30 2017 Joe Chapman <jochapma@redhat.com> 6.1.0.13-6
+- Fixed some scanning tool complaints
+- Resolves: rhbz#1491422
+
+* Tue Oct 24 2017 Andy Walsh <awalsh@redhat.com> 6.1.0.0-6
+- Fixed kernel requirement to allow subsequent releases without updating spec
+- Resolves: rhbz#1491422
+
+* Fri Oct 20 2017 John Wiele <jwiele@redhat.com> 6.1.0.0-5
+- Bumped kernel requirement to 3.10.0-741
+- Resolves: rhbz#1491422
+
+* Tue Oct 17 2017 John Wiele <jwiele@redhat.com> 6.1.0.0-4
+- Resolved some missing symbols
+- Resolves: rhbz#1491422
+
+* Mon Oct 16 2017 John Wiele <jwiele@redhat.com> 6.1.0.0-3
+- Updated to provide a useable package
+- Resolves: rhbz#1491422
+
+* Sat Oct 14 2017 Andy Walsh <awalsh@redhat.com> 6.1.0.0-2
+- Removed invalid requirement and some unnecessary comments in spec
+- Resolves: rhbz#1491422
+
+* Wed Oct 11 2017 John Wiele <jwiele@redhat.com> 6.1.0.0-1
+- Initial vdo module for Driver Update Program
+- Resolves: rhbz#1491422
diff --git a/SPECS/kvdo.spec b/SPECS/kvdo.spec
deleted file mode 100644
index 309c894..0000000
--- a/SPECS/kvdo.spec
+++ /dev/null
@@ -1,701 +0,0 @@
-%global commit                  8df6805f0c4eddae59c9edcebeeab885c835f93c
-%global gittag                  6.2.0.293
-%global shortcommit             %(c=%{commit}; echo ${c:0:7})
-%define spec_release            53
-
-%define kmod_name		kvdo
-%define kmod_driver_version	%{gittag}
-%define kmod_rpm_release	%{spec_release}
-%define kmod_kernel_version	4.18.0-80.11.2.el8_0
-%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 <lua>
-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
-* Wed Aug 07 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-53
-- Bumped NVR for new 4.18 kernel
-- Resolves: rhbz#1739186
-
-* Tue Jun 25 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-52
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1722371
-
-* Wed Jun 19 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-51
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1722371
-
-* Mon Feb 25 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-50
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Fri Feb 15 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-49
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Feb 13 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-48
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Sat Feb 09 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-47
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Fri Feb 08 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-46
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Feb 06 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-45
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Jan 16 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-44
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Mon Jan 14 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-43
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Fri Jan 11 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-42
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Mon Jan 07 2019 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-41
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Dec 19 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-40
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Mon Dec 17 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.293-39
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Fri Dec 14 2018 - Andy Walsh <awalsh@redhat.com> 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 <awalsh@redhat.com> 6.2.0.239-38
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Mon Dec 10 2018 - Andy Walsh <awalsh@redhat.com> 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 <awalsh@redhat.com> 6.2.0.239-36
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Fri Nov 16 2018 - Andy Walsh <awalsh@redhat.com> 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 <awalsh@redhat.com> 6.2.0.239-35
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Oct 24 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.239-34
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Oct 24 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.239-33
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Fri Oct 19 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.239-32
-- Depend on more of the NVR for the kernel package.
-- Resolves: rhbz#1640699
-
-* Tue Oct 16 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.239-31
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Tue Oct 16 2018 - Tomas Kopecek <tkopecek@redhat.com> 6.2.0.239-30
-- Bumped NVR for driver signing
-- Relates: rhbz#1589873
-
-* Mon Oct 15 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.239-29
-- Bumped NVR for driver signing
-- Relates: rhbz#1589873
-
-* Thu Oct 11 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.239-28
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Oct 10 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.239-27
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Sun Oct 07 2018 - Andy Walsh <awalsh@redhat.com> 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 <awalsh@redhat.com> 6.2.0.219-26
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Thu Sep 27 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.219-25
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Tue Sep 25 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.219-24
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Tue Sep 25 2018 - Joseph Chapman <jochapma@redhat.com> 6.2.0.219-23
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Mon Sep 24 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.219-22
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Fri Sep 21 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.219-21
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Thu Sep 20 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.219-20
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Sep 19 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.219-19
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Tue Sep 18 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.219-18
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Mon Sep 17 2018 - Andy Walsh <awalsh@redhat.com> 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 <awalsh@redhat.com> 6.2.0.197-16
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Thu Sep 13 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.197-15
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Sep 12 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.197-14
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Aug 29 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.197-13
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Wed Aug 29 2018 - Joseph Chapman <jochapma@redhat.com> 6.2.0.197-12
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Tue Aug 28 2018 - Josh Boyer <jwboyer@redhat.com> 6.2.0.197-11
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1623006
-
-* Fri Aug 24 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.197-10
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1611663
-
-* Mon Aug 20 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.197-9
-- Patched a new compiler warning out
-- Relates: rhbz#1611663
-
-* Mon Aug 20 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.197-8
-- Bumped NVR for new 4.18 kernel
-- Relates: rhbz#1611663
-
-* Mon Aug 13 2018 - Andy Walsh <awalsh@redhat.com> 6.2.0.197-7
-- Bumped NVR for 4.18 rebase
-- Resolves: rhbz#1534087
-
-* Wed Aug  8 2018 - Andy Walsh <awalsh@redhat.com> 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 <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.132-5
-- Rebuilt to work with 4.18 kernel.
-
-* Thu Jun 28 2018 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.35-3
-- Enabled aarch64 builds
-
-* Fri Apr 27 2018 - Andy Walsh <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 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 <awalsh@redhat.com> - 6.2.0.4-2
-- Fixed path to _sbindir for weak-mldules
-- Resolves: rhbz#1566144
-         
-* Fri Apr 13 2018 - Andy Walsh <awalsh@redhat.com> - 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 <corwin@redhat.com> - 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 <awalsh@redhat.com> - 6.1.0.153-15
-- Fixed preun handling of loaded modules
-- Resolves: rhbz#1549178
-
-* Fri Feb 16 2018 - Joseph Chapman <jochapma@redhat.com> - 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 <jochapma@redhat.com> - 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 <awalsh@redhat.com> - 6.1.0.144-13
-- Updated summary and descriptions
-- Resolves: rhbz#1541409
-
-* Thu Feb 01 2018 - Joseph Chapman <jochapma@redhat.com> - 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 <jochapma@redhat.com> - 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 <jochapma@redhat.com> - 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 <jochapma@redhat.com> - 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 <jochapma@redhat.com> 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 <jochapma@redhat.com> 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 <jochapma@redhat.com> 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 <jochapma@redhat.com> 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 <jochapma@redhat.com> 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 <jochapma@redhat.com> 6.1.0.34-7
-- Bugfixes
-- Resolves: rhbz#1491422
-
-* Mon Oct 30 2017 Joe Chapman <jochapma@redhat.com> 6.1.0.13-6
-- Fixed some scanning tool complaints
-- Resolves: rhbz#1491422
-
-* Tue Oct 24 2017 Andy Walsh <awalsh@redhat.com> 6.1.0.0-6
-- Fixed kernel requirement to allow subsequent releases without updating spec
-- Resolves: rhbz#1491422
-
-* Fri Oct 20 2017 John Wiele <jwiele@redhat.com> 6.1.0.0-5
-- Bumped kernel requirement to 3.10.0-741
-- Resolves: rhbz#1491422
-
-* Tue Oct 17 2017 John Wiele <jwiele@redhat.com> 6.1.0.0-4
-- Resolved some missing symbols
-- Resolves: rhbz#1491422
-
-* Mon Oct 16 2017 John Wiele <jwiele@redhat.com> 6.1.0.0-3
-- Updated to provide a useable package
-- Resolves: rhbz#1491422
-
-* Sat Oct 14 2017 Andy Walsh <awalsh@redhat.com> 6.1.0.0-2
-- Removed invalid requirement and some unnecessary comments in spec
-- Resolves: rhbz#1491422
-
-* Wed Oct 11 2017 John Wiele <jwiele@redhat.com> 6.1.0.0-1
-- Initial vdo module for Driver Update Program
-- Resolves: rhbz#1491422