Add temporary patch to correct build failures.
Related: RHEL-30884 Signed-off-by: Susan LeGendre-McGhee <slegendr@redhat.com>
This commit is contained in:
parent
b42cdded76
commit
d9df2fa244
@ -14,6 +14,7 @@
|
|||||||
Source0: https://github.com/dm-vdo/%{kmod_name}/archive/%{commit}/%{kmod_name}-%{shortcommit}.tar.gz
|
Source0: https://github.com/dm-vdo/%{kmod_name}/archive/%{commit}/%{kmod_name}-%{shortcommit}.tar.gz
|
||||||
Patch0: add_lz4_dependency.patch
|
Patch0: add_lz4_dependency.patch
|
||||||
Patch1: removed-logical-space-check-from-table-line.patch
|
Patch1: removed-logical-space-check-from-table-line.patch
|
||||||
|
Patch2: use_vdo_target_block_device.patch
|
||||||
|
|
||||||
%define findpat %( echo "%""P" )
|
%define findpat %( echo "%""P" )
|
||||||
|
|
||||||
@ -108,6 +109,7 @@ printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --dracut=/usr/bin/dracu
|
|||||||
%setup -n %{kmod_name}-%{commit}
|
%setup -n %{kmod_name}-%{commit}
|
||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
|
%patch2 -p1
|
||||||
%{nil}
|
%{nil}
|
||||||
set -- *
|
set -- *
|
||||||
mkdir source
|
mkdir source
|
||||||
@ -156,6 +158,10 @@ install -m 644 -D source/greylist.txt $RPM_BUILD_ROOT/usr/share/doc/kmod-%{kmod_
|
|||||||
rm -rf $RPM_BUILD_ROOT
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue May 07 2024 - Susan LeGendre-McGhee <slegendr@redhat.com> - 8.2.3.3-123.el9
|
||||||
|
- Add temporary patch to correct build failures.
|
||||||
|
- Related: RHEL-30884
|
||||||
|
|
||||||
* Mon May 06 2024 - Susan LeGendre-McGhee <slegendr@redhat.com> - 8.2.3.3-123.el9
|
* Mon May 06 2024 - Susan LeGendre-McGhee <slegendr@redhat.com> - 8.2.3.3-123.el9
|
||||||
- Rebuilt for latest kernel.
|
- Rebuilt for latest kernel.
|
||||||
- Related: RHEL-30884
|
- Related: RHEL-30884
|
||||||
|
510
use_vdo_target_block_device.patch
Normal file
510
use_vdo_target_block_device.patch
Normal file
@ -0,0 +1,510 @@
|
|||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/config.c kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/config.c
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/config.c 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/config.c 2024-05-07 09:38:49.210509205 -0400
|
||||||
|
@@ -676,7 +676,7 @@
|
||||||
|
config->sparse_sample_rate =
|
||||||
|
(params->sparse ? DEFAULT_SPARSE_SAMPLE_RATE : 0);
|
||||||
|
config->nonce = params->nonce;
|
||||||
|
- config->name = params->name;
|
||||||
|
+ config->bdev = params->bdev;
|
||||||
|
config->offset = params->offset;
|
||||||
|
config->size = params->size;
|
||||||
|
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/config.h kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/config.h
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/config.h 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/config.h 2024-05-07 09:38:49.210509205 -0400
|
||||||
|
@@ -20,8 +20,8 @@
|
||||||
|
|
||||||
|
/* A set of configuration parameters for the indexer. */
|
||||||
|
struct configuration {
|
||||||
|
- /* String describing the storage device */
|
||||||
|
- const char *name;
|
||||||
|
+ /* Storage device for the index */
|
||||||
|
+ struct block_device *bdev;
|
||||||
|
|
||||||
|
/* The maximum allowable size of the index */
|
||||||
|
size_t size;
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/dedupe.c kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/dedupe.c
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/dedupe.c 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/dedupe.c 2024-05-07 09:38:49.210509205 -0400
|
||||||
|
@@ -2796,7 +2796,7 @@
|
||||||
|
uds_offset = ((vdo_get_index_region_start(geometry) -
|
||||||
|
geometry.bio_offset) * VDO_BLOCK_SIZE);
|
||||||
|
zones->parameters = (struct uds_parameters) {
|
||||||
|
- .name = vdo->device_config->parent_device_name,
|
||||||
|
+ .bdev = vdo->device_config->owned_device->bdev,
|
||||||
|
.offset = uds_offset,
|
||||||
|
.size = (vdo_get_index_region_size(geometry) * VDO_BLOCK_SIZE),
|
||||||
|
.memory_size = geometry.index_config.mem,
|
||||||
|
@@ -3269,9 +3269,9 @@
|
||||||
|
struct device_config *config = parent->vdo->device_config;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
- zones->parameters.name = config->parent_device_name;
|
||||||
|
+ zones->parameters.bdev = config->owned_device->bdev;
|
||||||
|
result = uds_resume_index_session(zones->index_session,
|
||||||
|
- zones->parameters.name);
|
||||||
|
+ zones->parameters.bdev);
|
||||||
|
if (result != UDS_SUCCESS) {
|
||||||
|
uds_log_error_strerror(result, "Error resuming dedupe index");
|
||||||
|
}
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/index.c kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/index.c
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/index.c 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/index.c 2024-05-07 09:38:49.211509205 -0400
|
||||||
|
@@ -1557,9 +1557,9 @@
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
-int replace_index_storage(struct uds_index *index, const char *path)
|
||||||
|
+int replace_index_storage(struct uds_index *index, struct block_device *bdev)
|
||||||
|
{
|
||||||
|
- return replace_volume_storage(index->volume, index->layout, path);
|
||||||
|
+ return replace_volume_storage(index->volume, index->layout, bdev);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Accessing statistics should be safe from any thread. */
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/index.h kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/index.h
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/index.h 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/index.h 2024-05-07 09:38:49.211509205 -0400
|
||||||
|
@@ -63,7 +63,7 @@
|
||||||
|
void free_index(struct uds_index *index);
|
||||||
|
|
||||||
|
int __must_check replace_index_storage(struct uds_index *index,
|
||||||
|
- const char *path);
|
||||||
|
+ struct block_device *bdev);
|
||||||
|
|
||||||
|
void get_index_stats(struct uds_index *index,
|
||||||
|
struct uds_index_stats *counters);
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/index-layout.c kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/index-layout.c
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/index-layout.c 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/index-layout.c 2024-05-07 09:38:49.211509205 -0400
|
||||||
|
@@ -1980,7 +1980,7 @@
|
||||||
|
size_t writable_size;
|
||||||
|
struct io_factory *factory = NULL;
|
||||||
|
|
||||||
|
- result = make_uds_io_factory(config->name, &factory);
|
||||||
|
+ result = make_uds_io_factory(config->bdev, &factory);
|
||||||
|
if (result != UDS_SUCCESS) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
@@ -2062,9 +2062,9 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
int replace_index_layout_storage(struct index_layout *layout,
|
||||||
|
- const char *name)
|
||||||
|
+ struct block_device *bdev)
|
||||||
|
{
|
||||||
|
- return replace_uds_storage(layout->factory, name);
|
||||||
|
+ return replace_uds_storage(layout->factory, bdev);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Obtain a dm_bufio_client for the volume region. */
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/index-layout.h kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/index-layout.h
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/index-layout.h 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/index-layout.h 2024-05-07 09:38:49.211509205 -0400
|
||||||
|
@@ -20,7 +20,7 @@
|
||||||
|
void free_uds_index_layout(struct index_layout *layout);
|
||||||
|
|
||||||
|
int __must_check replace_index_layout_storage(struct index_layout *layout,
|
||||||
|
- const char *name);
|
||||||
|
+ struct block_device *bdev);
|
||||||
|
|
||||||
|
int __must_check load_index_state(struct index_layout *layout,
|
||||||
|
struct uds_index *index);
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/index-session.c kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/index-session.c
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/index-session.c 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/index-session.c 2024-05-07 09:42:15.007509205 -0400
|
||||||
|
@@ -389,13 +389,14 @@
|
||||||
|
struct uds_index_session *session)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
+ char name[BDEVNAME_SIZE];
|
||||||
|
|
||||||
|
if (parameters == NULL) {
|
||||||
|
uds_log_error("missing required parameters");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
- if (parameters->name == NULL) {
|
||||||
|
- uds_log_error("missing required index name");
|
||||||
|
+ if (parameters->bdev == NULL) {
|
||||||
|
+ uds_log_error("missing required block device");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
if (session == NULL) {
|
||||||
|
@@ -408,31 +409,9 @@
|
||||||
|
return uds_map_to_system_error(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if ((session->parameters.name == NULL) ||
|
||||||
|
- (strcmp(parameters->name, session->parameters.name) != 0)) {
|
||||||
|
- char *new_name;
|
||||||
|
-
|
||||||
|
- result = uds_duplicate_string(parameters->name,
|
||||||
|
- "device name",
|
||||||
|
- &new_name);
|
||||||
|
- if (result != UDS_SUCCESS) {
|
||||||
|
- finish_loading_index_session(session, result);
|
||||||
|
- return uds_map_to_system_error(result);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- uds_free_const(session->parameters.name);
|
||||||
|
- session->parameters = *parameters;
|
||||||
|
- session->parameters.name = new_name;
|
||||||
|
- } else {
|
||||||
|
- const char *old_name = session->parameters.name;
|
||||||
|
-
|
||||||
|
- session->parameters = *parameters;
|
||||||
|
- session->parameters.name = old_name;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- uds_log_notice("%s: %s",
|
||||||
|
- get_open_type_string(open_type),
|
||||||
|
- parameters->name);
|
||||||
|
+ session->parameters = *parameters;
|
||||||
|
+ format_dev_t(name, parameters->bdev->bd_dev);
|
||||||
|
+ uds_log_notice("%s: %s", get_open_type_string(open_type), name);
|
||||||
|
result = initialize_index_session(session, open_type);
|
||||||
|
if (result != UDS_SUCCESS) {
|
||||||
|
uds_log_error_strerror(result,
|
||||||
|
@@ -550,34 +529,26 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
static int replace_device(struct uds_index_session *session,
|
||||||
|
- const char *name)
|
||||||
|
+ struct block_device *bdev)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
- char *new_name;
|
||||||
|
|
||||||
|
- result = uds_duplicate_string(name, "device name", &new_name);
|
||||||
|
+ result = replace_index_storage(session->index, bdev);
|
||||||
|
if (result != UDS_SUCCESS) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
- result = replace_index_storage(session->index, name);
|
||||||
|
- if (result != UDS_SUCCESS) {
|
||||||
|
- UDS_FREE(new_name);
|
||||||
|
- return result;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- uds_free_const(session->parameters.name);
|
||||||
|
- session->parameters.name = new_name;
|
||||||
|
+ session->parameters.bdev = bdev;
|
||||||
|
return UDS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Resume index operation after being suspended. If the index is suspended
|
||||||
|
- * and the supplied name is different from the current backing store, the
|
||||||
|
+ * and the supplied block device differs from the current backing store, the
|
||||||
|
* index will start using the new backing store.
|
||||||
|
*/
|
||||||
|
int uds_resume_index_session(struct uds_index_session *session,
|
||||||
|
- const char *name)
|
||||||
|
+ struct block_device *bdev)
|
||||||
|
{
|
||||||
|
int result = UDS_SUCCESS;
|
||||||
|
bool no_work = false;
|
||||||
|
@@ -604,9 +575,9 @@
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if ((name != NULL) && (session->index != NULL) &&
|
||||||
|
- (strcmp(name, session->parameters.name) != 0)) {
|
||||||
|
- result = replace_device(session, name);
|
||||||
|
+ if ((bdev != NULL) && (session->index != NULL) &&
|
||||||
|
+ (bdev != session->parameters.bdev)) {
|
||||||
|
+ result = replace_device(session, bdev);
|
||||||
|
if (result != UDS_SUCCESS) {
|
||||||
|
uds_lock_mutex(&session->request_mutex);
|
||||||
|
session->state &= ~IS_FLAG_WAITING;
|
||||||
|
@@ -780,7 +751,6 @@
|
||||||
|
|
||||||
|
wait_for_no_requests_in_progress(index_session);
|
||||||
|
result = save_and_free_index(index_session);
|
||||||
|
- uds_free_const(index_session->parameters.name);
|
||||||
|
uds_request_queue_finish(index_session->callback_queue);
|
||||||
|
index_session->callback_queue = NULL;
|
||||||
|
uds_destroy_cond(&index_session->load_context.cond);
|
||||||
|
@@ -808,35 +778,12 @@
|
||||||
|
struct uds_parameters **parameters)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
- const char *name = index_session->parameters.name;
|
||||||
|
|
||||||
|
if (parameters == NULL) {
|
||||||
|
uds_log_error("received a NULL parameters pointer");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (name != NULL) {
|
||||||
|
- char *name_copy = NULL;
|
||||||
|
- size_t name_length = strlen(name) + 1;
|
||||||
|
- struct uds_parameters *copy;
|
||||||
|
-
|
||||||
|
- result = UDS_ALLOCATE_EXTENDED(struct uds_parameters,
|
||||||
|
- name_length,
|
||||||
|
- char,
|
||||||
|
- __func__,
|
||||||
|
- ©);
|
||||||
|
- if (result != UDS_SUCCESS) {
|
||||||
|
- return uds_map_to_system_error(result);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- *copy = index_session->parameters;
|
||||||
|
- name_copy = (char *) copy + sizeof(struct uds_parameters);
|
||||||
|
- memcpy(name_copy, name, name_length);
|
||||||
|
- copy->name = name_copy;
|
||||||
|
- *parameters = copy;
|
||||||
|
- return UDS_SUCCESS;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
result = UDS_ALLOCATE(1, struct uds_parameters, __func__, parameters);
|
||||||
|
if (result == UDS_SUCCESS) {
|
||||||
|
**parameters = index_session->parameters;
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/io-factory.c kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/io-factory.c
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/io-factory.c 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/io-factory.c 2024-05-07 09:38:49.212509205 -0400
|
||||||
|
@@ -6,27 +6,10 @@
|
||||||
|
#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))
|
||||||
|
-#define VDO_USE_ALTERNATE
|
||||||
|
-#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 };
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A kernel mode IO Factory object controls access to an index stored
|
||||||
|
@@ -42,67 +25,14 @@
|
||||||
|
atomic_inc(&factory->ref_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
-static int get_block_device_from_name(const char *name,
|
||||||
|
- struct block_device **bdev)
|
||||||
|
-{
|
||||||
|
- 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);
|
||||||
|
- *bdev = NULL;
|
||||||
|
- return UDS_INVALID_ARGUMENT;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- return UDS_SUCCESS;
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
-int make_uds_io_factory(const char *path, struct io_factory **factory_ptr)
|
||||||
|
+int make_uds_io_factory(struct block_device *bdev, struct io_factory **factory_ptr)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
- struct block_device *bdev;
|
||||||
|
struct io_factory *factory;
|
||||||
|
|
||||||
|
- result = get_block_device_from_name(path, &bdev);
|
||||||
|
- if (result != UDS_SUCCESS) {
|
||||||
|
- return result;
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
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 */
|
||||||
|
+ if (result != UDS_SUCCESS)
|
||||||
|
return result;
|
||||||
|
- }
|
||||||
|
|
||||||
|
factory->bdev = bdev;
|
||||||
|
atomic_set_release(&factory->ref_count, 1);
|
||||||
|
@@ -111,35 +41,16 @@
|
||||||
|
return UDS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
-int replace_uds_storage(struct io_factory *factory, const char *path)
|
||||||
|
+int replace_uds_storage(struct io_factory *factory, struct block_device *bdev)
|
||||||
|
{
|
||||||
|
- int result;
|
||||||
|
- struct block_device *bdev;
|
||||||
|
-
|
||||||
|
- result = get_block_device_from_name(path, &bdev);
|
||||||
|
- if (result != UDS_SUCCESS) {
|
||||||
|
- 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
void put_uds_io_factory(struct io_factory *factory)
|
||||||
|
{
|
||||||
|
- if (atomic_add_return(-1, &factory->ref_count) <= 0) {
|
||||||
|
-#ifdef VDO_USE_ALTERNATE
|
||||||
|
- blkdev_put(factory->bdev, BLK_FMODE);
|
||||||
|
-#else
|
||||||
|
- blkdev_put(factory->bdev, NULL);
|
||||||
|
-#endif /* VDO_USE_ALTERNATE */
|
||||||
|
+ if (atomic_add_return(-1, &factory->ref_count) <= 0)
|
||||||
|
UDS_FREE(factory);
|
||||||
|
- }
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t get_uds_writable_size(struct io_factory *factory)
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/io-factory.h kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/io-factory.h
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/io-factory.h 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/io-factory.h 2024-05-07 09:38:49.212509205 -0400
|
||||||
|
@@ -36,25 +36,24 @@
|
||||||
|
* Create an IO factory. The IO factory is returned with a reference
|
||||||
|
* count of 1.
|
||||||
|
*
|
||||||
|
- * @param path The path to the block device or file that contains the
|
||||||
|
- * block stream
|
||||||
|
+ * @param bdev The block device that contains the block stream
|
||||||
|
* @param factory_ptr The IO factory is returned here
|
||||||
|
*
|
||||||
|
* @return UDS_SUCCESS or an error code
|
||||||
|
**/
|
||||||
|
-int __must_check make_uds_io_factory(const char *path,
|
||||||
|
+int __must_check make_uds_io_factory(struct block_device *bdev,
|
||||||
|
struct io_factory **factory_ptr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace the backing store for an IO factory.
|
||||||
|
*
|
||||||
|
* @param factory The IO factory
|
||||||
|
- * @param path The path to the new block device or storage file
|
||||||
|
+ * @param bdev The new block device
|
||||||
|
*
|
||||||
|
* @return UDS_SUCCESS or an error code
|
||||||
|
**/
|
||||||
|
int __must_check replace_uds_storage(struct io_factory *factory,
|
||||||
|
- const char *path);
|
||||||
|
+ struct block_device *bdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get another reference to an IO factory, incrementing its reference count.
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/uds.h kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/uds.h
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/uds.h 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/uds.h 2024-05-07 09:38:49.214509205 -0400
|
||||||
|
@@ -132,8 +132,8 @@
|
||||||
|
* The data used to configure a new index.
|
||||||
|
**/
|
||||||
|
struct uds_parameters {
|
||||||
|
- /** String describing the storage device */
|
||||||
|
- const char *name;
|
||||||
|
+ /** The block_device used for storage */
|
||||||
|
+ struct block_device *bdev;
|
||||||
|
/** The maximum allowable size of the index on storage */
|
||||||
|
size_t size;
|
||||||
|
/** The offset where the index should start */
|
||||||
|
@@ -404,9 +404,10 @@
|
||||||
|
bool save);
|
||||||
|
|
||||||
|
/**
|
||||||
|
- * Allows new index operations for an index, whether it was suspended or not.
|
||||||
|
- * If the index is suspended and the supplied path is different from the
|
||||||
|
- * current backing store, the index will start using the new backing store.
|
||||||
|
+ * Allow new index operations for an index, whether it was suspended or not.
|
||||||
|
+ * If the index is suspended and the supplied block device differs from the
|
||||||
|
+ * current backing store, the index will start using the new backing store
|
||||||
|
+ * instead.
|
||||||
|
*
|
||||||
|
* @param session The session to resume
|
||||||
|
* @param name A name describing the new backing store to use
|
||||||
|
@@ -414,7 +415,7 @@
|
||||||
|
* @return Either #UDS_SUCCESS or an error code
|
||||||
|
**/
|
||||||
|
int __must_check uds_resume_index_session(struct uds_index_session *session,
|
||||||
|
- const char *name);
|
||||||
|
+ struct block_device *bdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Waits until all callbacks for index operations are complete.
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/volume.c kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/volume.c
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/volume.c 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/volume.c 2024-05-07 09:38:49.215509205 -0400
|
||||||
|
@@ -1471,11 +1471,11 @@
|
||||||
|
|
||||||
|
int __must_check replace_volume_storage(struct volume *volume,
|
||||||
|
struct index_layout *layout,
|
||||||
|
- const char *name)
|
||||||
|
+ struct block_device *bdev)
|
||||||
|
{
|
||||||
|
int result;
|
||||||
|
|
||||||
|
- result = replace_index_layout_storage(layout, name);
|
||||||
|
+ result = replace_index_layout_storage(layout, bdev);
|
||||||
|
if (result != UDS_SUCCESS) {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
diff -Naur kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/volume.h kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/volume.h
|
||||||
|
--- kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a.orig/vdo/volume.h 2023-10-19 18:57:25.000000000 -0400
|
||||||
|
+++ kvdo-c6254c6db5cfa02ecf5bbb4db2c5728f23aa3b2a/vdo/volume.h 2024-05-07 09:38:49.215509205 -0400
|
||||||
|
@@ -95,13 +95,13 @@
|
||||||
|
*
|
||||||
|
* @param volume The volume to reconfigure
|
||||||
|
* @param layout The index layout
|
||||||
|
- * @param path The path to the new backing store
|
||||||
|
+ * @param bdev The backing store block device
|
||||||
|
*
|
||||||
|
* @return UDS_SUCCESS or an error code
|
||||||
|
**/
|
||||||
|
int __must_check replace_volume_storage(struct volume *volume,
|
||||||
|
struct index_layout *layout,
|
||||||
|
- const char *path);
|
||||||
|
+ struct block_device *bdev);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enqueue a page read.
|
Loading…
Reference in New Issue
Block a user