Index | Thread | Search

From:
Brad Smith <brad@comstyle.com>
Subject:
UPDATE: QEMU 10.2.2
To:
ports@openbsd.org
Date:
Sun, 22 Mar 2026 23:26:26 -0400

Download raw body.

Thread
  • Brad Smith:

    UPDATE: QEMU 10.2.2

Here is an update to QEMU 10.2.2.

https://marc.info/?l=qemu-devel&m=177381254605022&w=2


Index: Makefile
===================================================================
RCS file: /cvs/ports/emulators/qemu/Makefile,v
retrieving revision 1.260
diff -u -p -u -p -r1.260 Makefile
--- Makefile	5 Mar 2026 12:12:19 -0000	1.260
+++ Makefile	23 Mar 2026 02:21:18 -0000
@@ -6,7 +6,7 @@ USE_NOBTCFI=	Yes
 COMMENT-main=	multi system emulator
 COMMENT-ga=	QEMU guest agent
 
-VERSION=	10.2.1
+VERSION=	10.2.2
 DISTNAME=	qemu-${VERSION}
 CATEGORIES=	emulators
 SITES=		https://download.qemu.org/
Index: distinfo
===================================================================
RCS file: /cvs/ports/emulators/qemu/distinfo,v
retrieving revision 1.85
diff -u -p -u -p -r1.85 distinfo
--- distinfo	5 Mar 2026 12:12:19 -0000	1.85
+++ distinfo	23 Mar 2026 02:21:18 -0000
@@ -1,2 +1,2 @@
-SHA256 (qemu-10.2.1.tar.xz) = o3F0d9jiyE1jC//7wg9s0yk+tFqh5trG0MwnaJmRyeE=
-SIZE (qemu-10.2.1.tar.xz) = 141075160
+SHA256 (qemu-10.2.2.tar.xz) = eEspb/KcFBeqcjI6vLLS6pq5dxck9Xfc14XDsE8h4XY=
+SIZE (qemu-10.2.2.tar.xz) = 141119364
Index: patches/patch-block_nfs_c
===================================================================
RCS file: /cvs/ports/emulators/qemu/patches/patch-block_nfs_c,v
retrieving revision 1.2
diff -u -p -u -p -r1.2 patch-block_nfs_c
--- patches/patch-block_nfs_c	10 Feb 2026 10:46:00 -0000	1.2
+++ patches/patch-block_nfs_c	23 Mar 2026 02:21:18 -0000
@@ -1,23 +1,87 @@
-- support for libnfs API v2
+- block/nfs: add support for libnfs v6
 
 Index: block/nfs.c
 --- block/nfs.c.orig
 +++ block/nfs.c
-@@ -270,8 +270,13 @@ static int coroutine_fn nfs_co_preadv(BlockDriverState
-     task.iov = iov;
+@@ -69,7 +69,9 @@ typedef struct NFSClient {
+ typedef struct NFSRPC {
+     BlockDriverState *bs;
+     int ret;
++#ifndef LIBNFS_API_V2
+     QEMUIOVector *iov;
++#endif
+     struct stat *st;
+     Coroutine *co;
+     NFSClient *client;
+@@ -237,6 +239,7 @@ nfs_co_generic_cb(int ret, struct nfs_context *nfs, vo
+     NFSRPC *task = private_data;
+     task->ret = ret;
+     assert(!task->st);
++#ifndef LIBNFS_API_V2
+     if (task->ret > 0 && task->iov) {
+         if (task->ret <= task->iov->size) {
+             qemu_iovec_from_buf(task->iov, 0, data, task->ret);
+@@ -244,6 +247,7 @@ nfs_co_generic_cb(int ret, struct nfs_context *nfs, vo
+             task->ret = -EIO;
+         }
+     }
++#endif
+     if (task->ret < 0) {
+         error_report("NFS Error: %s", nfs_get_error(nfs));
+     }
+@@ -266,13 +270,36 @@ static int coroutine_fn nfs_co_preadv(BlockDriverState
+ {
+     NFSClient *client = bs->opaque;
+     NFSRPC task;
++    char *buf = NULL;
++    bool my_buffer = false;
+ 
+     nfs_co_init_task(bs, &task);
+-    task.iov = iov;
  
++#ifdef LIBNFS_API_V2
++    if (iov->niov != 1) {
++        buf = g_try_malloc(bytes);
++        if (bytes && buf == NULL) {
++            return -ENOMEM;
++        }
++        my_buffer = true;
++    } else {
++        buf = iov->iov[0].iov_base;
++    }
++#endif
++
      WITH_QEMU_LOCK_GUARD(&client->mutex) {
 +#ifdef LIBNFS_API_V2
          if (nfs_pread_async(client->context, client->fh,
-+                            NULL, bytes, offset, nfs_co_generic_cb, &task) != 0) {
++                            buf, bytes, offset,
++                            nfs_co_generic_cb, &task) != 0) {
 +#else
++        task.iov = iov;
 +        if (nfs_pread_async(client->context, client->fh,
                              offset, bytes, nfs_co_generic_cb, &task) != 0) {
 +#endif
++            if (my_buffer) {
++                g_free(buf);
++            }
              return -ENOMEM;
          }
  
-@@ -314,9 +319,15 @@ static int coroutine_fn nfs_co_pwritev(BlockDriverStat
+@@ -280,6 +307,13 @@ static int coroutine_fn nfs_co_preadv(BlockDriverState
+     }
+     qemu_coroutine_yield();
+ 
++    if (my_buffer) {
++        if (task.ret > 0) {
++            qemu_iovec_from_buf(iov, 0, buf, task.ret);
++        }
++        g_free(buf);
++    }
++
+     if (task.ret < 0) {
+         return task.ret;
+     }
+@@ -315,9 +349,15 @@ static int coroutine_fn nfs_co_pwritev(BlockDriverStat
      }
  
      WITH_QEMU_LOCK_GUARD(&client->mutex) {
@@ -33,3 +97,25 @@ Index: block/nfs.c
              if (my_buffer) {
                  g_free(buf);
              }
+@@ -856,6 +896,13 @@ static void coroutine_fn nfs_co_invalidate_cache(Block
+ }
+ #endif
+ 
++static void nfs_refresh_limits(BlockDriverState *bs, Error **errp)
++{
++    NFSClient *client = bs->opaque;
++    bs->bl.max_transfer = MIN((uint32_t)nfs_get_readmax(client->context),
++                              (uint32_t)nfs_get_writemax(client->context));
++}
++
+ static const char *nfs_strong_runtime_opts[] = {
+     "path",
+     "user",
+@@ -893,6 +940,7 @@ static BlockDriver bdrv_nfs = {
+     .bdrv_detach_aio_context        = nfs_detach_aio_context,
+     .bdrv_attach_aio_context        = nfs_attach_aio_context,
+     .bdrv_refresh_filename          = nfs_refresh_filename,
++    .bdrv_refresh_limits            = nfs_refresh_limits,
+     .bdrv_dirname                   = nfs_dirname,
+ 
+     .strong_runtime_opts            = nfs_strong_runtime_opts,
Index: patches/patch-meson_build
===================================================================
RCS file: /cvs/ports/emulators/qemu/patches/patch-meson_build,v
retrieving revision 1.19
diff -u -p -u -p -r1.19 patch-meson_build
--- patches/patch-meson_build	10 Feb 2026 10:46:00 -0000	1.19
+++ patches/patch-meson_build	23 Mar 2026 02:21:18 -0000
@@ -1,4 +1,4 @@
-- support for libnfs API v2
+- block/nfs: add support for libnfs v6
 - localstatedir does not belong under prefix
 - remove hardcoding of optimization