Rebuild against new ubdsrv API
This commit is contained in:
parent
0ce6737b9f
commit
3a2dc7862a
192
0001-ublk-Update-for-ubdsrv-changing-API.patch
Normal file
192
0001-ublk-Update-for-ubdsrv-changing-API.patch
Normal file
@ -0,0 +1,192 @@
|
||||
From 7a402ab853f480245767d72ae2f61e880893ea4d Mon Sep 17 00:00:00 2001
|
||||
From: Ming Lei <ming.lei@redhat.com>
|
||||
Date: Fri, 9 Dec 2022 13:45:01 +0000
|
||||
Subject: [PATCH] ublk: Update for ubdsrv changing API
|
||||
|
||||
See:
|
||||
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org/message/NKQKUCUOHDCVVSR2PXVANGZSBXXPHYLY/
|
||||
---
|
||||
ublk/nbdublk.c | 7 +++++--
|
||||
ublk/tgt.c | 42 +++++++++++++++++++++++-------------------
|
||||
2 files changed, 28 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/ublk/nbdublk.c b/ublk/nbdublk.c
|
||||
index 53af840f7a..00aa23ec03 100644
|
||||
--- a/ublk/nbdublk.c
|
||||
+++ b/ublk/nbdublk.c
|
||||
@@ -166,6 +166,7 @@ main (int argc, char *argv[])
|
||||
uint64_t max_block_size;
|
||||
const char *s;
|
||||
struct ublksrv_dev_data data = { .dev_id = -1 };
|
||||
+ const struct ublksrv_ctrl_dev_info *dinfo;
|
||||
struct sigaction sa = { 0 };
|
||||
|
||||
for (;;) {
|
||||
@@ -420,6 +421,8 @@ main (int argc, char *argv[])
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
+ dinfo = ublksrv_ctrl_get_dev_info(dev);
|
||||
+
|
||||
/* Register signal handlers to try to stop the device. */
|
||||
sa.sa_handler = signal_handler;
|
||||
sigaction (SIGHUP, &sa, NULL);
|
||||
@@ -432,14 +435,14 @@ main (int argc, char *argv[])
|
||||
if (r < 0) {
|
||||
errno = -r;
|
||||
fprintf (stderr, "%s: ublksrv_ctrl_add_dev: "DEVICE_PREFIX "%d: %m\n",
|
||||
- argv[0], dev->dev_info.dev_id);
|
||||
+ argv[0], dinfo->dev_id);
|
||||
ublksrv_ctrl_deinit (dev);
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
if (verbose)
|
||||
fprintf (stderr, "%s: created %s%d\n",
|
||||
- argv[0], DEVICE_PREFIX, dev->dev_info.dev_id);
|
||||
+ argv[0], DEVICE_PREFIX, dinfo->dev_id);
|
||||
|
||||
/* XXX nbdfuse creates a pid file. However I reason that you can
|
||||
* tell if the service is available when the block device is created
|
||||
diff --git a/ublk/tgt.c b/ublk/tgt.c
|
||||
index e25e072875..3fb2223331 100644
|
||||
--- a/ublk/tgt.c
|
||||
+++ b/ublk/tgt.c
|
||||
@@ -33,6 +33,7 @@
|
||||
#define _Atomic /**/
|
||||
#endif
|
||||
|
||||
+#include <limits.h>
|
||||
#include <ublksrv.h>
|
||||
#include <ublksrv_aio.h>
|
||||
|
||||
@@ -53,7 +54,7 @@
|
||||
* The thread_info entry is shared between each pair of threads.
|
||||
*/
|
||||
struct thread_info {
|
||||
- struct ublksrv_dev *dev;
|
||||
+ const struct ublksrv_dev *dev;
|
||||
size_t i; /* index into nbd.ptr[], also q_id */
|
||||
pthread_t io_uring_thread;
|
||||
pthread_t nbd_work_thread;
|
||||
@@ -208,7 +209,7 @@ nbd_work_thread (void *vpinfo)
|
||||
|
||||
ublksrv_aio_complete_worker (aio_ctx, &compl);
|
||||
|
||||
- if (nbd_poll2 (h, aio_ctx->efd, -1) == -1) {
|
||||
+ if (nbd_poll2 (h, ublksrv_aio_get_efd(aio_ctx), -1) == -1) {
|
||||
fprintf (stderr, "%s\n", nbd_get_error ());
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
@@ -221,15 +222,17 @@ static void *
|
||||
io_uring_thread (void *vpinfo)
|
||||
{
|
||||
struct thread_info *thread_info = vpinfo;
|
||||
- struct ublksrv_dev *dev = thread_info->dev;
|
||||
- const unsigned dev_id = dev->ctrl_dev->dev_info.dev_id;
|
||||
+ const struct ublksrv_dev *dev = thread_info->dev;
|
||||
+ const struct ublksrv_ctrl_dev *cdev = ublksrv_get_ctrl_dev(dev);
|
||||
+ const struct ublksrv_ctrl_dev_info *dinfo = ublksrv_ctrl_get_dev_info(cdev);
|
||||
+ const unsigned dev_id = dinfo->dev_id;
|
||||
const size_t q_id = thread_info->i;
|
||||
- struct ublksrv_queue *q;
|
||||
+ const struct ublksrv_queue *q;
|
||||
int r;
|
||||
+ int tid = gettid();
|
||||
|
||||
pthread_mutex_lock (&jbuf_lock);
|
||||
- ublksrv_json_write_queue_info (dev->ctrl_dev, jbuf, sizeof jbuf,
|
||||
- q_id, gettid ());
|
||||
+ ublksrv_json_write_queue_info (cdev, jbuf, sizeof jbuf, q_id, tid);
|
||||
pthread_mutex_unlock (&jbuf_lock);
|
||||
|
||||
q = ublksrv_queue_init (dev, q_id, NULL);
|
||||
@@ -240,7 +243,7 @@ io_uring_thread (void *vpinfo)
|
||||
|
||||
if (verbose)
|
||||
fprintf (stderr, "%s: ublk tid %d dev %d queue %d started\n",
|
||||
- "nbdublk", q->tid, dev_id, q->q_id);
|
||||
+ "nbdublk", tid, dev_id, q->q_id);
|
||||
|
||||
for (;;) {
|
||||
r = ublksrv_process_io (q);
|
||||
@@ -255,7 +258,7 @@ io_uring_thread (void *vpinfo)
|
||||
|
||||
if (verbose)
|
||||
fprintf (stderr, "%s: ublk tid %d dev %d queue %d exited\n",
|
||||
- "nbdublk", q->tid, dev_id, q->q_id);
|
||||
+ "nbdublk", tid, dev_id, q->q_id);
|
||||
|
||||
ublksrv_queue_deinit (q);
|
||||
return NULL;
|
||||
@@ -265,7 +268,7 @@ static int
|
||||
set_parameters (struct ublksrv_ctrl_dev *ctrl_dev,
|
||||
const struct ublksrv_dev *dev)
|
||||
{
|
||||
- struct ublksrv_ctrl_dev_info *dinfo = &ctrl_dev->dev_info;
|
||||
+ const struct ublksrv_ctrl_dev_info *dinfo = ublksrv_ctrl_get_dev_info(ctrl_dev);
|
||||
const unsigned attrs =
|
||||
(readonly ? UBLK_ATTR_READ_ONLY : 0) |
|
||||
(rotational ? UBLK_ATTR_ROTATIONAL : 0) |
|
||||
@@ -305,8 +308,8 @@ set_parameters (struct ublksrv_ctrl_dev *ctrl_dev,
|
||||
int
|
||||
start_daemon (struct ublksrv_ctrl_dev *ctrl_dev)
|
||||
{
|
||||
- const struct ublksrv_ctrl_dev_info *dinfo = &ctrl_dev->dev_info;
|
||||
- struct ublksrv_dev *dev;
|
||||
+ const struct ublksrv_ctrl_dev_info *dinfo = ublksrv_ctrl_get_dev_info(ctrl_dev);
|
||||
+ const struct ublksrv_dev *dev;
|
||||
size_t i;
|
||||
int r;
|
||||
|
||||
@@ -418,7 +421,8 @@ start_daemon (struct ublksrv_ctrl_dev *ctrl_dev)
|
||||
static int
|
||||
init_tgt (struct ublksrv_dev *dev, int type, int argc, char *argv[])
|
||||
{
|
||||
- const struct ublksrv_ctrl_dev_info *info = &dev->ctrl_dev->dev_info;
|
||||
+ const struct ublksrv_ctrl_dev *cdev = ublksrv_get_ctrl_dev(dev);
|
||||
+ const struct ublksrv_ctrl_dev_info *info = ublksrv_ctrl_get_dev_info(cdev);
|
||||
struct ublksrv_tgt_info *tgt = &dev->tgt;
|
||||
struct ublksrv_tgt_base_json tgt_json = {
|
||||
.type = type,
|
||||
@@ -435,14 +439,14 @@ init_tgt (struct ublksrv_dev *dev, int type, int argc, char *argv[])
|
||||
tgt->tgt_ring_depth = info->queue_depth;
|
||||
tgt->nr_fds = 0;
|
||||
|
||||
- ublksrv_json_write_dev_info (dev->ctrl_dev, jbuf, sizeof jbuf);
|
||||
+ ublksrv_json_write_dev_info (ublksrv_get_ctrl_dev(dev), jbuf, sizeof jbuf);
|
||||
ublksrv_json_write_target_base_info (jbuf, sizeof jbuf, &tgt_json);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
-handle_event (struct ublksrv_queue *q)
|
||||
+handle_event (const struct ublksrv_queue *q)
|
||||
{
|
||||
struct ublksrv_aio_ctx *aio_ctx = thread_info.ptr[q->q_id].aio_ctx;
|
||||
|
||||
@@ -454,16 +458,16 @@ handle_event (struct ublksrv_queue *q)
|
||||
}
|
||||
|
||||
static int
|
||||
-handle_io_async (struct ublksrv_queue *q, int tag)
|
||||
+handle_io_async (const struct ublksrv_queue *q, const struct ublk_io_data *io)
|
||||
{
|
||||
struct ublksrv_aio_ctx *aio_ctx = thread_info.ptr[q->q_id].aio_ctx;
|
||||
- const struct ublksrv_io_desc *iod = ublksrv_get_iod (q, tag);
|
||||
+ const struct ublksrv_io_desc *iod = io->iod;
|
||||
struct ublksrv_aio *req = ublksrv_aio_alloc_req (aio_ctx, 0);
|
||||
|
||||
req->io = *iod;
|
||||
- req->id = ublksrv_aio_pid_tag (q->q_id, tag);
|
||||
+ req->id = ublksrv_aio_pid_tag (q->q_id, io->tag);
|
||||
if (verbose)
|
||||
- fprintf (stderr, "%s: qid %d tag %d\n", "nbdublk", q->q_id, tag);
|
||||
+ fprintf (stderr, "%s: qid %d tag %d\n", "nbdublk", q->q_id, io->tag);
|
||||
ublksrv_aio_submit_req (aio_ctx, q, req);
|
||||
|
||||
return 0;
|
||||
--
|
||||
2.37.3
|
||||
|
10
libnbd.spec
10
libnbd.spec
@ -12,7 +12,7 @@
|
||||
|
||||
Name: libnbd
|
||||
Version: 1.15.8
|
||||
Release: 1%{?dist}
|
||||
Release: 2%{?dist}
|
||||
Summary: NBD client library in userspace
|
||||
|
||||
License: LGPLv2+
|
||||
@ -28,6 +28,9 @@ Source2: libguestfs.keyring
|
||||
# Maintainer script which helps with handling patches.
|
||||
Source3: copy-patches.sh
|
||||
|
||||
# Upstream fix for changed ubdsrv API.
|
||||
Patch: 0001-ublk-Update-for-ubdsrv-changing-API.patch
|
||||
|
||||
%if 0%{patches_touch_autotools}
|
||||
BuildRequires: autoconf, automake, libtool
|
||||
%endif
|
||||
@ -48,7 +51,7 @@ BuildRequires: fuse3, fuse3-devel
|
||||
|
||||
# For nbdublk
|
||||
BuildRequires: liburing-devel >= 2.2
|
||||
BuildRequires: ubdsrv-devel >= 1.0-2
|
||||
BuildRequires: ubdsrv-devel >= 1.0-3.rc6
|
||||
|
||||
# For the Python 3 bindings.
|
||||
BuildRequires: python3-devel
|
||||
@ -346,6 +349,9 @@ make %{?_smp_mflags} check || {
|
||||
|
||||
|
||||
%changelog
|
||||
* Fri Dec 09 2022 Richard W.M. Jones <rjones@redhat.com> - 1.15.8-2
|
||||
- Rebuild against new ubdsrv API
|
||||
|
||||
* Fri Nov 25 2022 Richard W.M. Jones <rjones@redhat.com> - 1.15.8-1
|
||||
- New upstream development version 1.15.8
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user