Updated to version 8.2.3.3

Adapted to backported kernel changes.
- Resolves: RHEL-11975

Signed-off-by: Susan LeGendre-McGhee <slegendr@redhat.com>
This commit is contained in:
Susan LeGendre-McGhee 2023-10-20 22:18:45 +00:00
parent 6023a2dd1e
commit 13ae0eeda9
4 changed files with 9 additions and 119 deletions

1
.gitignore vendored
View File

@ -10,3 +10,4 @@
/kvdo-883a960.tar.gz
/kvdo-e2a5ebb.tar.gz
/kvdo-c9bd224.tar.gz
/kvdo-c6254c6.tar.gz

View File

@ -1,113 +0,0 @@
diff -Naur kvdo-c9bd224d9c48b35f3db202e648c3abaece81f39e.orig/vdo/io-factory.c kvdo-c9bd224d9c48b35f3db202e648c3abaece81f39e/vdo/io-factory.c
--- kvdo-c9bd224d9c48b35f3db202e648c3abaece81f39e.orig/vdo/io-factory.c 2023-10-06 22:41:55.624013630 -0400
+++ kvdo-c9bd224d9c48b35f3db202e648c3abaece81f39e/vdo/io-factory.c 2023-10-06 23:03:22.482013630 -0400
@@ -6,10 +6,27 @@
#include <linux/atomic.h>
#include <linux/blkdev.h>
#include <linux/mount.h>
+#ifndef VDO_UPSTREAM
+#include <linux/version.h>
+#endif /* VDO_UPSTREAM */
#include "io-factory.h"
#include "logger.h"
#include "memory-alloc.h"
+#ifndef VDO_UPSTREAM
+#undef VDO_USE_ALTERNATE
+#ifdef RHEL_RELEASE_CODE
+#if (RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(9, 4))
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(6,5,0))
+#define VDO_USE_ALTERNATE
+#endif
+#endif
+#else /* !RHEL_RELEASE_CODE */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(6,5,0))
+#define VDO_USE_ALTERNATE
+#endif
+#endif /* !RHEL_RELEASE_CODE */
+#endif /* !VDO_UPSTREAM */
enum { BLK_FMODE = FMODE_READ | FMODE_WRITE };
@@ -30,16 +47,38 @@
static int get_block_device_from_name(const char *name,
struct block_device **bdev)
{
- dev_t device = name_to_dev_t(name);
-
- if (device != 0) {
+ dev_t device;
+ unsigned int major, minor;
+ char dummy;
+#ifndef VDO_USE_ALTERNATE
+ const struct blk_holder_ops hops = { NULL };
+#endif /* !VDO_USE_ALTERNATE */
+
+ /* Extract the major/minor numbers */
+ if (sscanf(name, "%u:%u%c", &major, &minor, &dummy) == 2) {
+ device = MKDEV(major, minor);
+ if (MAJOR(device) != major || MINOR(device) != minor) {
+ *bdev = NULL;
+ return uds_log_error_strerror(UDS_INVALID_ARGUMENT,
+ "%s is not a valid block device",
+ name);
+ }
+#ifdef VDO_USE_ALTERNATE
*bdev = blkdev_get_by_dev(device, BLK_FMODE, NULL);
+#else
+ *bdev = blkdev_get_by_dev(device, BLK_FMODE, NULL, &hops);
+#endif /* VDO_USE_ALTERNATE */
} else {
+#ifdef VDO_USE_ALTERNATE
*bdev = blkdev_get_by_path(name, BLK_FMODE, NULL);
+#else
+ *bdev = blkdev_get_by_path(name, BLK_FMODE, NULL, &hops);
+#endif /* VDO_USE_ALTERNATE */
}
+
if (IS_ERR(*bdev)) {
- uds_log_error_strerror(-PTR_ERR(*bdev),
- "%s is not a block device", name);
+ uds_log_error_strerror(-PTR_ERR(*bdev), "%s is not a block device", name);
+ *bdev = NULL;
return UDS_INVALID_ARGUMENT;
}
@@ -59,7 +98,11 @@
result = UDS_ALLOCATE(1, struct io_factory, __func__, &factory);
if (result != UDS_SUCCESS) {
+#ifdef VDO_USE_ALTERNATE
blkdev_put(bdev, BLK_FMODE);
+#else
+ blkdev_put(bdev, NULL);
+#endif /* VDO_USE_ALTERNATE */
return result;
}
@@ -80,7 +123,11 @@
return result;
}
+#ifdef VDO_USE_ALTERNATE
blkdev_put(factory->bdev, BLK_FMODE);
+#else
+ blkdev_put(factory->bdev, NULL);
+#endif /* VDO_USE_ALTERNATE */
factory->bdev = bdev;
return UDS_SUCCESS;
}
@@ -88,7 +135,11 @@
void put_uds_io_factory(struct io_factory *factory)
{
if (atomic_add_return(-1, &factory->ref_count) <= 0) {
- blkdev_put(factory->bdev, BLK_FMODE);
+#ifdef VDO_USE_ALTERNATE
+ blkdev_put(factory->bdev, BLK_FMODE);
+#else
+ blkdev_put(factory->bdev, NULL);
+#endif /* VDO_USE_ALTERNATE */
UDS_FREE(factory);
}
}

View File

@ -1,12 +1,12 @@
%global commit c9bd224d9c48b35f3db202e648c3abaece81f39e
%global gittag 8.2.1.6
%global commit c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a
%global gittag 8.2.3.3
%global shortcommit %(c=%{commit}; echo ${c:0:7})
%define spec_release 100
%define kmod_name kvdo
%define kmod_driver_version %{gittag}
%define kmod_rpm_release %{spec_release}
%define kmod_kernel_version 5.14.0-375.el9
%define kmod_kernel_version 5.14.0-378.el9
%define kmod_headers_version %(rpm -qa kernel-devel | sed 's/^kernel-devel-//')
%define kmod_kbuild_dir .
%define kmod_devel_package 0
@ -14,7 +14,6 @@
Source0: https://github.com/dm-vdo/%{kmod_name}/archive/%{commit}/%{kmod_name}-%{shortcommit}.tar.gz
Patch0: add_lz4_dependency.patch
Patch1: removed-logical-space-check-from-table-line.patch
Patch2: adapt_backported_kernel65.patch
%define findpat %( echo "%""P" )
@ -108,7 +107,6 @@ printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --dracut=/usr/bin/dracu
%setup -n %{kmod_name}-%{commit}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%{nil}
set -- *
mkdir source
@ -157,6 +155,10 @@ install -m 644 -D source/greylist.txt $RPM_BUILD_ROOT/usr/share/doc/kmod-%{kmod_
rm -rf $RPM_BUILD_ROOT
%changelog
* Fri Oct 20 2023 - Susan LeGendre-McGhee <slegendr@redhat.com> - 8.2.3.3-100.el9
- Adapted to backported kernel changes.
- Resolves: RHEL-11975
* Tue Oct 10 2023 - Susan LeGendre-McGhee <slegendr@redhat.com> - 8.2.1.6-100.el9
- Rebuilt for latest kernel.
- Related: RHEL-11426

View File

@ -1 +1 @@
SHA512 (kvdo-c9bd224.tar.gz) = 5e181a5c966408e52a77cc9f5372c65491b38743366d255b9ac5a71b99a9f7fc9f0e9d5ba3f3cc85edeb41e335757f57cded68c84c77f1f57c5c9e23f7cc84aa
SHA512 (kvdo-c6254c6.tar.gz) = 262fb5f8b6b4ca31e06b4816b41a225a05a8058d77dd72fb6b93f32352697487e4120876698bba76bf3cf899ce2db7ad83bd4aa09b1067ea8aec50fc2c9545d6