Branch: refs/heads/staging
  Home:   https://github.com/qemu/qemu
  Commit: d7f7bf57f21fe17f40af0932e5392acec07577d0
      
https://github.com/qemu/qemu/commit/d7f7bf57f21fe17f40af0932e5392acec07577d0
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M util/fdmon-io_uring.c

  Log Message:
  -----------
  aio-posix: fix race between io_uring CQE and AioHandler deletion

When an AioHandler is enqueued on ctx->submit_list for removal, the
fill_sq_ring() function will submit an io_uring POLL_REMOVE operation to
cancel the in-flight POLL_ADD operation.

There is a race when another thread enqueues an AioHandler for deletion
on ctx->submit_list when the POLL_ADD CQE has already appeared. In that
case POLL_REMOVE is unnecessary. The code already handled this, but
forgot that the AioHandler itself is still on ctx->submit_list when the
POLL_ADD CQE is being processed. It's unsafe to delete the AioHandler at
that point in time (use-after-free).

Solve this problem by keeping the AioHandler alive but setting a flag so
that it will be deleted by fill_sq_ring() when it runs.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: af55494f3308270209778a81a74fd30bbcbb17ac
      
https://github.com/qemu/qemu/commit/af55494f3308270209778a81a74fd30bbcbb17ac
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M util/fdmon-io_uring.c

  Log Message:
  -----------
  aio-posix: fix fdmon-io_uring.c timeout stack variable lifetime

io_uring_prep_timeout() stashes a pointer to the timespec struct rather
than copying its fields. That means the struct must live until after the
SQE has been submitted by io_uring_enter(2). add_timeout_sqe() violates
this constraint because the SQE is not submitted within the function.

Inline add_timeout_sqe() into fdmon_io_uring_wait() so that the struct
lives at least as long as io_uring_enter(2).

This fixes random hangs (bogus timeout values) when the kernel loads
undefined timespec struct values from userspace after the original
struct on the stack has been destroyed.

Reported-by: Kevin Wolf <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: f94c85f374c966b8fb7cc89b932b37022db64e0e
      
https://github.com/qemu/qemu/commit/f94c85f374c966b8fb7cc89b932b37022db64e0e
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M util/fdmon-io_uring.c

  Log Message:
  -----------
  aio-posix: fix spurious return from ->wait() due to signals

io_uring_enter(2) only returns -EINTR in some cases when interrupted by
a signal. Therefore the while loop in fdmon_io_uring_wait() is
incomplete and can lead to a spurious early return.

Handle the case when a signal interrupts io_uring_enter(2) but the
syscall returns the number of SQEs submitted (that takes priority over
-EINTR).

This patch probably makes little difference for QEMU, but the test suite
relies on the exact pattern of aio_poll() return values, so it's best to
hide this io_uring syscall interface quirk.

Here is the strace of test-aio receiving 3 SIGCONT signals after this
fix has been applied. Notice how the io_uring_enter(2) return value is 1
the first time because an SQE was submitted, but -EINTR the other times:

  eventfd2(0, EFD_CLOEXEC|EFD_NONBLOCK) = 9
  io_uring_enter(7, 1, 0, 0, NULL, 8) = 1
  clock_nanosleep(CLOCK_REALTIME, 0, {tv_sec=1, tv_nsec=0}, 0x7ffe38a46240) = 0
  io_uring_enter(7, 1, 1, IORING_ENTER_GETEVENTS, NULL, 8) = 1
  --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=596096, si_uid=1000} 
---
  io_uring_enter(7, 0, 1, IORING_ENTER_GETEVENTS, NULL, 8) = -1 EINTR 
(Interrupted system call)
  --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=596096, si_uid=1000} 
---
  io_uring_enter(7, 0, 1, IORING_ENTER_GETEVENTS, NULL, 8 <unfinished ...>
  <... io_uring_enter resumed>) = -1 EINTR (Interrupted system call)
  --- SIGCONT {si_signo=SIGCONT, si_code=SI_USER, si_pid=596096, si_uid=1000} 
---
  io_uring_enter(7, 0, 1, IORING_ENTER_GETEVENTS, NULL, 8 <unfinished ...>
  <... io_uring_enter resumed>) = 0

Reported-by: Kevin Wolf <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 10f1950dde323e08ed4d0da168b6bb7c802f38dc
      
https://github.com/qemu/qemu/commit/10f1950dde323e08ed4d0da168b6bb7c802f38dc
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M util/aio-posix.c

  Log Message:
  -----------
  aio-posix: keep polling enabled with fdmon-io_uring.c

Commit 816a430c517e ("util/aio: Defer disabling poll mode as long as
possible") kept polling enabled when the event loop timeout is 0. Since
there is no timeout the event loop will continue immediately and the
overhead of disabling and re-enabling polling can be avoided.

fdmon-io_uring.c is unable to take advantage of this optimization
because its ->need_wait() function returns true whenever there are new
io_uring SQEs to submit:

  if (timeout || ctx->fdmon_ops->need_wait(ctx)) {
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Polling will be disabled even when timeout == 0.

Extend the optimization to handle the case when need_wait() returns true
and timeout == 0.

Cc: Chao Gao <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: d78d7a2d27f0a38c474c6cb64955d2e8a77146bf
      
https://github.com/qemu/qemu/commit/d78d7a2d27f0a38c474c6cb64955d2e8a77146bf
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M tests/unit/test-nested-aio-poll.c

  Log Message:
  -----------
  tests/unit: skip test-nested-aio-poll with io_uring

test-nested-aio-poll relies on internal details of how fdmon-poll.c
handles AioContext polling. Skip it when other fdmon implementations are
in use.

The reason why fdmon-io_uring.c behaves differently from fdmon-poll.c is
that its fdmon_ops->need_wait() function returns true when
io_uring_enter(2) must be called (e.g. to submit pending SQEs).
AioContext polling is skipped when ->need_wait() returns true, so the
test case will never enter AioContext polling mode with
fdmon-io_uring.c.

Restrict this test to fdmon-poll.c and drop the
aio_context_use_g_source() call since it's no longer necessary.

Note that this test is only built on POSIX systems so it is safe to
include "util/aio-posix.h".

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 61900bbcef3cc3804da2af5db0c2c1635d606a30
      
https://github.com/qemu/qemu/commit/61900bbcef3cc3804da2af5db0c2c1635d606a30
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M include/block/aio.h
    M tests/unit/test-aio.c
    M util/aio-posix.c
    M util/aio-posix.h
    M util/fdmon-epoll.c
    M util/fdmon-io_uring.c
    M util/fdmon-poll.c

  Log Message:
  -----------
  aio-posix: integrate fdmon into glib event loop

AioContext's glib integration only supports ppoll(2) file descriptor
monitoring. epoll(7) and io_uring(7) disable themselves and switch back
to ppoll(2) when the glib event loop is used. The main loop thread
cannot use epoll(7) or io_uring(7) because it always uses the glib event
loop.

Future QEMU features may require io_uring(7). One example is uring_cmd
support in FUSE exports. Each feature could create its own io_uring(7)
context and integrate it into the event loop, but this is inefficient
due to extra syscalls. It would be more efficient to reuse the
AioContext's existing fdmon-io_uring.c io_uring(7) context because
fdmon-io_uring.c will already be active on systems where Linux io_uring
is available.

In order to keep fdmon-io_uring.c's AioContext operational even when the
glib event loop is used, extend FDMonOps with an API similar to
GSourceFuncs so that file descriptor monitoring can integrate into the
glib event loop.

A quick summary of the GSourceFuncs API:
- prepare() is called each event loop iteration before waiting for file
  descriptors and timers.
- check() is called to determine whether events are ready to be
  dispatched after waiting.
- dispatch() is called to process events.

More details here: https://docs.gtk.org/glib/struct.SourceFuncs.html

Move the ppoll(2)-specific code from aio-posix.c into fdmon-poll.c and
also implement epoll(7)- and io_uring(7)-specific file descriptor
monitoring code for glib event loops.

Note that it's still faster to use aio_poll() rather than the glib event
loop since glib waits for file descriptor activity with ppoll(2) and
does not support adaptive polling. But at least epoll(7) and io_uring(7)
now work in glib event loops.

Splitting this into multiple commits without temporarily breaking
AioContext proved difficult so this commit makes all the changes. The
next commit will remove the aio_context_use_g_source() API because it is
no longer needed.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: ac0b6c46a417113caa5f60e8cb9930d3c4ea1841
      
https://github.com/qemu/qemu/commit/ac0b6c46a417113caa5f60e8cb9930d3c4ea1841
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M include/block/aio.h
    M util/aio-posix.c
    M util/aio-win32.c
    M util/async.c

  Log Message:
  -----------
  aio: remove aio_context_use_g_source()

There is no need for aio_context_use_g_source() now that epoll(7) and
io_uring(7) file descriptor monitoring works with the glib event loop.
AioContext doesn't need to be notified that GSource is being used.

On hosts with io_uring support this now enables fdmon-io_uring.c by
default, replacing fdmon-poll.c and fdmon-epoll.c. In other words, the
event loop will use io_uring!

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: ebd599775879cb196896565c8f3fa14d0e4e37d6
      
https://github.com/qemu/qemu/commit/ebd599775879cb196896565c8f3fa14d0e4e37d6
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M include/block/aio.h
    M util/async.c

  Log Message:
  -----------
  aio: free AioContext when aio_context_new() fails

g_source_destroy() only removes the GSource from the GMainContext it's
attached to, if any. It does not free it.

Use g_source_unref() instead so that the AioContext (which embeds a
GSource) is freed. There is no need to call g_source_destroy() in
aio_context_new() because the GSource isn't attached to a GMainContext
yet.

aio_ctx_finalize() expects everything to be set up already, so introduce
the new ctx->initialized boolean and do nothing when called with
!initialized. This also requires moving aio_context_setup() down after
event_notifier_init() since aio_ctx_finalize() won't release any
resources that aio_context_setup() acquired.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 06cd21fa8855527fca549d0681a036cea1f4fe4f
      
https://github.com/qemu/qemu/commit/06cd21fa8855527fca549d0681a036cea1f4fe4f
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M include/block/aio.h
    M util/aio-posix.c
    M util/aio-win32.c
    M util/async.c

  Log Message:
  -----------
  aio: add errp argument to aio_context_setup()

When aio_context_new() -> aio_context_setup() fails at startup it
doesn't really matter whether errors are returned to the caller or the
process terminates immediately.

However, it is not acceptable to terminate when hotplugging --object
iothread at runtime. Refactor aio_context_setup() so that errors can be
propagated. The next commit will set errp when fdmon_io_uring_setup()
fails.

Suggested-by: Kevin Wolf <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 826da776c8c4f316d9cc708b197464d3b41de198
      
https://github.com/qemu/qemu/commit/826da776c8c4f316d9cc708b197464d3b41de198
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M util/aio-posix.c
    M util/aio-posix.h
    M util/fdmon-io_uring.c

  Log Message:
  -----------
  aio-posix: gracefully handle io_uring_queue_init() failure

io_uring may not be available at runtime due to system policies (e.g.
the io_uring_disabled sysctl) or creation could fail due to file
descriptor resource limits.

Handle failure scenarios as follows:

If another AioContext already has io_uring, then fail AioContext
creation so that the aio_add_sqe() API is available uniformly from all
QEMU threads. Otherwise fall back to epoll(7) if io_uring is
unavailable.

Notes:
- Update the comment about selecting the fastest fdmon implementation.
  At this point it's not about speed anymore, it's about aio_add_sqe()
  API availability.
- Uppercase the error message when converting from error_report() to
  error_setg_errno() for consistency (but there are instances of
  lowercase in the codebase).
- It's easier to move the #ifdefs from aio-posix.h to aio-posix.c.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 7f8ad33d1196ce4caa6de06247e583ad818fd7b1
      
https://github.com/qemu/qemu/commit/7f8ad33d1196ce4caa6de06247e583ad818fd7b1
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M util/fdmon-io_uring.c

  Log Message:
  -----------
  aio-posix: unindent fdmon_io_uring_destroy()

Reduce the level of indentation to make further code changes easier to
read.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 5b62e960a7875bd9980dbfd6c2c09e4372897f96
      
https://github.com/qemu/qemu/commit/5b62e960a7875bd9980dbfd6c2c09e4372897f96
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M include/block/aio.h
    M util/aio-posix.c

  Log Message:
  -----------
  aio-posix: add fdmon_ops->dispatch()

The ppoll and epoll file descriptor monitoring implementations rely on
the event loop's generic file descriptor, timer, and BH dispatch code to
invoke user callbacks.

The io_uring file descriptor monitoring implementation will need
io_uring-specific dispatch logic for CQE handlers for custom SQEs.

Introduce a new FDMonOps ->dispatch() callback that allows file
descriptor monitoring implementations to invoke user callbacks. The next
patch will use this new callback.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 14b2dcd75ecb5220e272d4616a80ab660ea816a9
      
https://github.com/qemu/qemu/commit/14b2dcd75ecb5220e272d4616a80ab660ea816a9
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M include/block/aio.h
    M util/aio-posix.c
    M util/aio-posix.h
    M util/fdmon-io_uring.c
    M util/trace-events

  Log Message:
  -----------
  aio-posix: add aio_add_sqe() API for user-defined io_uring requests

Introduce the aio_add_sqe() API for submitting io_uring requests in the
current AioContext. This allows other components in QEMU, like the block
layer, to take advantage of io_uring features without creating their own
io_uring context.

This API supports nested event loops just like file descriptor
monitoring and BHs do. This comes at a complexity cost: CQE callbacks
must be placed on a list so that nested event loops can invoke pending
CQE callbacks from parent event loops. If you're wondering why
CqeHandler exists instead of just a callback function pointer, this is
why.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 8275ecb213af0f4ed880d7bfbd500a795eb0bf7b
      
https://github.com/qemu/qemu/commit/8275ecb213af0f4ed880d7bfbd500a795eb0bf7b
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M block/file-posix.c
    M block/io_uring.c
    M block/trace-events
    M include/block/aio.h
    M include/block/raw-aio.h
    R stubs/io_uring.c
    M stubs/meson.build
    M util/async.c

  Log Message:
  -----------
  block/io_uring: use aio_add_sqe()

AioContext has its own io_uring instance for file descriptor monitoring.
The disk I/O io_uring code was developed separately. Originally I
thought the characteristics of file descriptor monitoring and disk I/O
were too different, requiring separate io_uring instances.

Now it has become clear to me that it's feasible to share a single
io_uring instance for file descriptor monitoring and disk I/O. We're not
using io_uring's IOPOLL feature or anything else that would require a
separate instance.

Unify block/io_uring.c and util/fdmon-io_uring.c using the new
aio_add_sqe() API that allows user-defined io_uring sqe submission. Now
block/io_uring.c just needs to submit readv/writev/fsync and most of the
io_uring-specific logic is handled by fdmon-io_uring.c.

There are two immediate advantages:
1. Fewer system calls. There is no need to monitor the disk I/O io_uring
   ring fd from the file descriptor monitoring io_uring instance. Disk
   I/O completions are now picked up directly. Also, sqes are
   accumulated in the sq ring until the end of the event loop iteration
   and there are fewer io_uring_enter(2) syscalls.
2. Less code duplication.

Note that error_setg() messages are not supposed to end with
punctuation, so I removed a '.' for the non-io_uring build error
message.

Signed-off-by: Stefan Hajnoczi <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: e4523da164817610c8f6977293d409609e9de225
      
https://github.com/qemu/qemu/commit/e4523da164817610c8f6977293d409609e9de225
  Author: Stefan Hajnoczi <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M block/io_uring.c

  Log Message:
  -----------
  block/io_uring: use non-vectored read/write when possible

The io_uring_prep_readv2/writev2() man pages recommend using the
non-vectored read/write operations when possible for performance
reasons.

I didn't measure a significant difference but it doesn't hurt to have
this optimization in place.

Suggested-by: Eric Blake <[email protected]>
Signed-off-by: Stefan Hajnoczi <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 71260a012013c249f3ddd2738fad0b43dfb8e055
      
https://github.com/qemu/qemu/commit/71260a012013c249f3ddd2738fad0b43dfb8e055
  Author: Vladimir Sementsov-Ogievskiy <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M scripts/checkpatch.pl

  Log Message:
  -----------
  scripts/checkpatch.pl: remove bogus patch prefix warning

Remove the 'patch prefix exists, appears to be a -p0 patch' warning
entirely as it is fundamentally flawed and can only produce false
positives.

Sometimes I create test files with names 'a' and 'b', and then get
surprised seeing this warning. It was not easy to understand where it
comes from.

How it works:
1. It extracts prefixes (a/, b/) from standard diff output
2. Checks if files/directories with these names exist in the project
   root
3. Warns if they exist, claiming it's a '-p0 patch' issue

This logic is wrong because:
- Standard diff/patch tools always use a/ and b/ prefixes by default
- The existence of files named 'a' or 'b' in the working directory is
  completely unrelated to patch format
- The working directory state may not correspond to the patch content
  (different commits, branches, etc.)
- In QEMU project, there are no single-letter files/directories in root,
  so this check can only generate false positives

The correct way to detect -p0 patches would be to analyze the path
format within the patch itself (e.g., absolute paths or paths without
prefixes), not check filesystem state.

So, let's finally drop it.

Signed-off-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Link: 
https://lore.kernel.org/r/[email protected]
Signed-off-by: Paolo Bonzini <[email protected]>


  Commit: d7f93e57be4d83fdec201550702d5143a74e07bb
      
https://github.com/qemu/qemu/commit/d7f93e57be4d83fdec201550702d5143a74e07bb
  Author: Yeqi Fu <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M block/bochs.c
    M block/file-posix.c
    M block/file-win32.c
    M block/qcow.c
    M include/block/nbd.h

  Log Message:
  -----------
  block: replace TABs with space

Bring the block files in line with the QEMU coding style, with spaces
for indentation. This patch partially resolves the issue 371.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/371
Signed-off-by: Yeqi Fu <[email protected]>
Message-ID: <[email protected]>
[thuth: Rebased the patch to the current master branch]
Signed-off-by: Thomas Huth <[email protected]>
Message-ID: <[email protected]>
[kwolf: Fixed up vertical alignemnt]
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 2eec8f539bf316490067d4d93ad7ca7227388775
      
https://github.com/qemu/qemu/commit/2eec8f539bf316490067d4d93ad7ca7227388775
  Author: Wesley Hershberger <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M block.c
    M tests/qemu-iotests/257
    M tests/qemu-iotests/257.out

  Log Message:
  -----------
  block: Drop detach_subchain for bdrv_replace_node

Detaching filters using detach_subchain=true can cause segfaults as
described in #3149.

More specifically, this was observed when executing concurrent
block-stream and query-named-block-nodes. block-stream adds a
copy-on-read filter as the main BDS for the blockjob; that filter was
dropped with detach_subchain=true but not unref'd until the the blockjob
was free'd. Because query-named-block-nodes assumes that a filter will
always have exactly one child, it caused a segfault when it observed the
detached filter. Stacktrace:

0  bdrv_refresh_filename (bs=0x5efed72f8350)
    at /usr/src/qemu-1:10.1.0+ds-5ubuntu2/b/qemu/block.c:8082
1  0x00005efea73cf9dc in bdrv_block_device_info
    (blk=0x0, bs=0x5efed72f8350, flat=true, errp=0x7ffeb829ebd8)
    at block/qapi.c:62
2  0x00005efea7391ed3 in bdrv_named_nodes_list
    (flat=<optimized out>, errp=0x7ffeb829ebd8)
    at /usr/src/qemu-1:10.1.0+ds-5ubuntu2/b/qemu/block.c:6275
3  0x00005efea7471993 in qmp_query_named_block_nodes
    (has_flat=<optimized out>, flat=<optimized out>, errp=0x7ffeb829ebd8)
    at /usr/src/qemu-1:10.1.0+ds-5ubuntu2/b/qemu/blockdev.c:2834
4  qmp_marshal_query_named_block_nodes
    (args=<optimized out>, ret=0x7f2b753beec0, errp=0x7f2b753beec8)
    at qapi/qapi-commands-block-core.c:553
5  0x00005efea74f03a5 in do_qmp_dispatch_bh (opaque=0x7f2b753beed0)
    at qapi/qmp-dispatch.c:128
6  0x00005efea75108e6 in aio_bh_poll (ctx=0x5efed6f3f430)
    at util/async.c:219
7  0x00005efea74ffdb2 in aio_dispatch (ctx=0x5efed6f3f430)
    at util/aio-posix.c:436
8  0x00005efea7512846 in aio_ctx_dispatch (source=<optimized out>,
    callback=<optimized out>,user_data=<optimized out>)
    at util/async.c:361
9  0x00007f2b77809bfb in ?? ()
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
10 0x00007f2b77809e70 in g_main_context_dispatch ()
    from /lib/x86_64-linux-gnu/libglib-2.0.so.0
11 0x00005efea7517228 in glib_pollfds_poll () at util/main-loop.c:287
12 os_host_main_loop_wait (timeout=0) at util/main-loop.c:310
13 main_loop_wait (nonblocking=<optimized out>) at util/main-loop.c:589
14 0x00005efea7140482 in qemu_main_loop () at system/runstate.c:905
15 0x00005efea744e4e8 in qemu_default_main (opaque=opaque@entry=0x0)
    at system/main.c:50
16 0x00005efea6e76319 in main
    (argc=<optimized out>, argv=<optimized out>)
    at system/main.c:93

As discussed in [email protected],
a filter should not exist without children in the first place; therefore,
drop the parameter entirely as it is only used for filters.

This is a partial revert of 3108a15cf09865456d499b08fe14e3dbec4ccbb3.

After this change, a blockdev-backup job's copy-before-write filter will
hold references to its children until the filter is unref'd. This causes
an additional flush during bdrv_close, so also update iotest 257.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/3149
Suggested-by: Kevin Wolf <[email protected]>
Signed-off-by: Wesley Hershberger <[email protected]>
Reviewed-by: Vladimir Sementsov-Ogievskiy <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 56dbf087a8a2cec7e3aeb19defed2a19efc85faa
      
https://github.com/qemu/qemu/commit/56dbf087a8a2cec7e3aeb19defed2a19efc85faa
  Author: Paolo Bonzini <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M rust/hw/timer/hpet/src/device.rs
    M rust/hw/timer/hpet/src/fw_cfg.rs
    M rust/util/src/error.rs

  Log Message:
  -----------
  rust/util: add ensure macro

The macro is similar to anyhow::ensure but uses QEMU's variation
on anyhow::Error.  It can be used to easily check a condition
and format an error message.

Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>


  Commit: 0830ec94059b239b3f67527b58e52fa7cd4a5439
      
https://github.com/qemu/qemu/commit/0830ec94059b239b3f67527b58e52fa7cd4a5439
  Author: Paolo Bonzini <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M rust/util/src/error.rs

  Log Message:
  -----------
  rust/util: use anyhow's native chaining capabilities

This simplifies conversions, making it possible to convert any error
into a QEMU util::Error with ".into()" (and therefore with "?").

The cost is having a separate constructor for when the error is a simple
string, but that is made easier by the ensure! macro.  If necessary,
another macro similar to "anyhow!" can be returned, but for now there
is no need for that.

Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>


  Commit: 113a7f5bf3b0bea56e8961c63fe7e6abec32f53d
      
https://github.com/qemu/qemu/commit/113a7f5bf3b0bea56e8961c63fe7e6abec32f53d
  Author: Paolo Bonzini <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M rust/util/src/error.rs

  Log Message:
  -----------
  rust/util: replace Error::err_or_unit/err_or_else with Error::with_errp

Introduce a simpler function that hides the creation of the Error**.

Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>


  Commit: 8abea41ecd9fe5614f39226c04600b177eb94b52
      
https://github.com/qemu/qemu/commit/8abea41ecd9fe5614f39226c04600b177eb94b52
  Author: Paolo Bonzini <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M rust/hw/char/pl011/src/device.rs
    M rust/hw/core/src/sysbus.rs
    M rust/util/src/error.rs
    M rust/util/src/lib.rs

  Log Message:
  -----------
  rust: pull error_fatal out of SysbusDeviceMethods::sysbus_realize

Return a Result<()> from the method, and "unwrap" it into error_fatal
in the caller.

Reviewed-by: Zhao Liu <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>


  Commit: 02d6b8cfd30b2da0a58a67206e9e48119b815731
      
https://github.com/qemu/qemu/commit/02d6b8cfd30b2da0a58a67206e9e48119b815731
  Author: Paolo Bonzini <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M rust/chardev/meson.build
    M rust/util/meson.build

  Log Message:
  -----------
  rust: do not add qemuutil to Rust crates

This fails due to https://github.com/mesonbuild/meson/pull/15076.
The config-host.h file from the qemuutil dependency ends up on the
rustc command line for targets that do not use structured sources.

It will be reverted once Meson 1.9.2 is released.

Reported-by: Marc-André Lureau <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>


  Commit: ac561a3050aa642571735332e22d96334be083cf
      
https://github.com/qemu/qemu/commit/ac561a3050aa642571735332e22d96334be083cf
  Author: Paolo Bonzini <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M rust/migration/src/vmstate.rs

  Log Message:
  -----------
  rust: migration: allow nested offset_of

Nested offset_of was stabilized in Rust 1.82.  Since the minimum
supported version for QEMU is 1.83, allow nested field accesses
in vmstate_of!

Signed-off-by: Paolo Bonzini <[email protected]>


  Commit: fdeeb448458f0ed808a62314b57974ab16d3592e
      
https://github.com/qemu/qemu/commit/fdeeb448458f0ed808a62314b57974ab16d3592e
  Author: Paolo Bonzini <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M .gitlab-ci.d/buildtest.yml
    M docs/about/build-platforms.rst
    M scripts/ci/setup/ubuntu/ubuntu-2404-aarch64.yaml
    M scripts/ci/setup/ubuntu/ubuntu-2404-s390x.yaml
    M tests/docker/dockerfiles/ubuntu2204.docker
    M tests/lcitool/mappings.yml
    M tests/lcitool/refresh

  Log Message:
  -----------
  rust: add back to Ubuntu 22.04 jobs

Ubuntu is now including updated versions of Rust (up to 1.85) for
its LTS releases.  Adjust the CI containers and re-add --enable-rust
to the Ubuntu jobs.

Signed-off-by: Paolo Bonzini <[email protected]>


  Commit: d435f689618c4154bd0f73ceff0fbe9a5a514105
      
https://github.com/qemu/qemu/commit/d435f689618c4154bd0f73ceff0fbe9a5a514105
  Author: Kevin Wolf <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M tests/qemu-iotests/tests/resize-below-raw
    M tests/qemu-iotests/tests/resize-below-raw.out

  Log Message:
  -----------
  iotests: Test resizing file node under raw with size/offset

This adds some more tests for using the 'size' and 'offset' options of
raw to the recently added resize-below-raw test.

Signed-off-by: Kevin Wolf <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: de8076682cbb0c67c2048969039bee28633d3c6b
      
https://github.com/qemu/qemu/commit/de8076682cbb0c67c2048969039bee28633d3c6b
  Author: Akihiko Odaki <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M qemu-img.c

  Log Message:
  -----------
  qemu-img: Fix amend option parse error handling

qemu_opts_del(opts) dereferences opts->list, which is the old amend_opts
pointer that can be dangling after executing
qemu_opts_append(amend_opts, bs->drv->create_opts) and cause
use-after-free.

Fix the potential use-after-free by moving the qemu_opts_del() call
before the qemu_opts_append() call.

Signed-off-by: Akihiko Odaki <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 2c2960351c04e19ec6ec5dfa82a8ba1319d4005d
      
https://github.com/qemu/qemu/commit/2c2960351c04e19ec6ec5dfa82a8ba1319d4005d
  Author: Akihiko Odaki <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M tests/qemu-iotests/meson.build
    M tests/qemu-iotests/testrunner.py

  Log Message:
  -----------
  iotests: Run iotests with sanitizers

Commit 2cc4d1c5eab1 ("tests/check-block: Skip iotests when sanitizers
are enabled") changed iotests to skip when sanitizers are enabled.
The rationale is that AddressSanitizer emits warnings and reports leaks,
which results in test breakage. Later, sanitizers that are enabled for
production environments (safe-stack and cfi-icall) were exempted.

However, this approach has a few problems.

- It requires rebuild to disable sanitizers if the existing build has
  them enabled.
- It disables other useful non-production sanitizers.
- The exemption of safe-stack and cfi-icall is not correctly
  implemented, so qemu-iotests are incorrectly enabled whenever either
  safe-stack or cfi-icall is enabled *and*, even if there is another
  sanitizer like AddressSanitizer.

To solve these problems, direct AddressSanitizer warnings to separate
files to avoid changing the test results, and selectively disable
leak detection at runtime instead of requiring to disable all
sanitizers at buildtime.

Signed-off-by: Akihiko Odaki <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: df67aebb5421ec8ede9bc29863dbe9f7c7fa13e0
      
https://github.com/qemu/qemu/commit/df67aebb5421ec8ede9bc29863dbe9f7c7fa13e0
  Author: Jean-Louis Dupond <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M block/qcow2-refcount.c

  Log Message:
  -----------
  qcow2: rename update_refcount_discard to queue_discard

The function just queues discards, and doesn't do any refcount change.
So let's change the function name to align with its function.

Signed-off-by: Jean-Louis Dupond <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: f5f1bcb42f27e40fb27199a69bcd658c3c96f51b
      
https://github.com/qemu/qemu/commit/f5f1bcb42f27e40fb27199a69bcd658c3c96f51b
  Author: Jean-Louis Dupond <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M block/qcow2-cluster.c
    M block/qcow2-refcount.c
    M block/qcow2.h

  Log Message:
  -----------
  qcow2: put discards in discard queue when discard-no-unref is enabled

When discard-no-unref is enabled, discards are not queued like it
should.
This was broken since discard-no-unref was added.

Add a helper function qcow2_discard_cluster which handles some common
checks and calls the queue_discards function if needed to add the
discard request to the queue.

Signed-off-by: Jean-Louis Dupond <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 1ae7777e2029d71051dd58680e1ba779ca130c33
      
https://github.com/qemu/qemu/commit/1ae7777e2029d71051dd58680e1ba779ca130c33
  Author: Thomas Huth <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M tests/qemu-iotests/184

  Log Message:
  -----------
  tests/qemu-iotests/184: Fix skip message for qemu-img without throttle

If qemu-img does not support throttling, test 184 currently skips
with the message:

  not suitable for this image format: raw

But that's wrong, it's not about the image format, it's about the
throttling not being available in qemu-img. Thus fix this by using
_notrun with a proper message instead.

Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 11d2aba06839f5231936e983a817b1c5a3bec775
      
https://github.com/qemu/qemu/commit/11d2aba06839f5231936e983a817b1c5a3bec775
  Author: Thomas Huth <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M tests/qemu-iotests/check

  Log Message:
  -----------
  tests/qemu-iotests: Improve the dry run list to speed up thorough testing

When running the tests in thorough mode, e.g. with:

 make -j$(nproc) check SPEED=thorough

we currently always get a huge amount of total tests that the test
runner tries to execute (2457 in my case), but a big bunch of them are
only skipped (1099 in my case, meaning that only 1358 got executed).
This happens because we try to run the whole set of iotests for multiple
image formats while a lot of the tests can only run with one certain
format only and thus are marked as SKIP during execution. This is quite a
waste of time during each test run, and also unnecessarily blows up the
displayed list of executed tests in the console output.

Thus let's try to be a little bit smarter: If the "check" script is run
with "-n" and an image format switch (like "-qed") at the same time (which
is what we do for discovering the tests for the meson test runner already),
only report the tests that likely support the given format instead of
providing the whole list of all tests. We can determine whether a test
supports a format or not by looking at the lines in the file that contain
a "supported_fmt" or "unsupported_fmt" statement. This is only heuristics,
of course, but it is good enough for running the iotests via "make
check-block" - I double-checked that the list of executed tests does not
get changed by this patch, it's only the tests that are skipped anyway that
are now not run anymore.

This way the amount of total tests drops from 2457 to 1432 for me, and
the amount of skipped tests drops from 1099 to just 74 (meaning that we
still properly run 1432 - 74 = 1358 tests as we did before).

Signed-off-by: Thomas Huth <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 2d7957f31b571047e6df360662c6961a965932c2
      
https://github.com/qemu/qemu/commit/2d7957f31b571047e6df360662c6961a965932c2
  Author: Thomas Huth <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M tests/qemu-iotests/meson.build

  Log Message:
  -----------
  tests/qemu-iotest: Add more image formats to the thorough testing

Now that the "check" script is a little bit smarter with providing
a list of tests that are supported for an image format, we can also
add more image formats that can be used for generic block layer
testing. (Note: qcow1 and luks are not added because some tests
there currently fail, and other formats like bochs, cloop, dmg and
vvfat do not work with the generic tests and thus would only get
skipped if we'd tried to add them here)

Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Thomas Huth <[email protected]>
Message-ID: <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: 9416867627d7d7d4e122d5db18e08f70d092a707
      
https://github.com/qemu/qemu/commit/9416867627d7d7d4e122d5db18e08f70d092a707
  Author: Eric Blake <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M block.c
    M block/crypto.c
    M block/parallels.c
    M block/qcow.c
    M block/qcow2.c
    M block/qed.c
    M block/raw-format.c
    M block/vdi.c
    M block/vhdx.c
    M block/vmdk.c
    M block/vpc.c
    M include/block/block-global-state.h

  Log Message:
  -----------
  block: Allow drivers to control protocol prefix at creation

This patch is pure refactoring: instead of hard-coding permission to
use a protocol prefix when creating an image, the drivers can now pass
in a parameter, comparable to what they could already do for opening a
pre-existing image.  This patch is purely mechanical (all drivers pass
in true for now), but it will enable the next patch to cater to
drivers that want to differ in behavior for the primary image vs. any
secondary images that are opened at the same time as creating the
primary image.

Signed-off-by: Eric Blake <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: ee83a17db38e2aaaf5a477acc44158933fa53a38
      
https://github.com/qemu/qemu/commit/ee83a17db38e2aaaf5a477acc44158933fa53a38
  Author: Eric Blake <[email protected]>
  Date:   2025-11-04 (Tue, 04 Nov 2025)

  Changed paths:
    M block/qcow2.c
    M block/vmdk.c

  Log Message:
  -----------
  qcow2, vmdk: Restrict creation with secondary file using protocol

Ever since CVE-2024-4467 (see commit 7ead9469 in qemu v9.1.0), we have
intentionally treated the opening of secondary files whose name is
specified in the contents of the primary file, such as a qcow2
data_file, as something that must be a local file and not a protocol
prefix (it is still possible to open a qcow2 file that wraps an NBD
data image by using QMP commands, but that is from the explicit action
of the QMP overriding any string encoded in the qcow2 file).  At the
time, we did not prevent the use of protocol prefixes on the secondary
image while creating a qcow2 file, but it results in a qcow2 file that
records an empty string for the data_file, rather than the protocol
passed in during creation:

$ qemu-img create -f raw datastore.raw 2G
$ qemu-nbd -e 0 -t -f raw datastore.raw &
$ qemu-img create -f qcow2 -o data_file=nbd://localhost:10809/ \
  datastore_nbd.qcow2 2G
Formatting 'datastore_nbd.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off 
compression_type=zlib size=2147483648 data_file=nbd://localhost:10809/ 
lazy_refcounts=off refcount_bits=16
$ qemu-img info datastore_nbd.qcow2 | grep data
$ qemu-img info datastore_nbd.qcow2 | grep data
image: datastore_nbd.qcow2
    data file:
    data file raw: false
    filename: datastore_nbd.qcow2

And since an empty string was recorded in the file, attempting to open
the image without using QMP to supply the NBD data store fails, with a
somewhat confusing error message:

$ qemu-io -f qcow2 datastore_nbd.qcow2
qemu-io: can't open device datastore_nbd.qcow2: The 'file' block driver 
requires a file name

Although the ability to create an image with a convenience reference
to a protocol data file is not a security hole (unlike the case with
open, the image is not untrusted if we are the ones creating it), the
above demo shows that it is still inconsistent.  Thus, it makes more
sense if we also insist that image creation rejects a protocol prefix
when using the same syntax.  Now, the above attempt produces:

$ qemu-img create -f qcow2 -o data_file=nbd://localhost:10809/ \
  datastore_nbd.qcow2 2G
Formatting 'datastore_nbd.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off 
compression_type=zlib size=2147483648 data_file=nbd://localhost:10809/ 
lazy_refcounts=off refcount_bits=16
qemu-img: datastore_nbd.qcow2: Could not create 'nbd://localhost:10809/': No 
such file or directory

with datastore_nbd.qcow2 no longer created.

Signed-off-by: Eric Blake <[email protected]>
Message-ID: <[email protected]>
Reviewed-by: Kevin Wolf <[email protected]>
Signed-off-by: Kevin Wolf <[email protected]>


  Commit: e7c488004fca8cf32acf77c9b425aa1b87c459c5
      
https://github.com/qemu/qemu/commit/e7c488004fca8cf32acf77c9b425aa1b87c459c5
  Author: Richard Henderson <[email protected]>
  Date:   2025-11-05 (Wed, 05 Nov 2025)

  Changed paths:
    M .gitlab-ci.d/buildtest.yml
    M docs/about/build-platforms.rst
    M rust/chardev/meson.build
    M rust/hw/char/pl011/src/device.rs
    M rust/hw/core/src/sysbus.rs
    M rust/hw/timer/hpet/src/device.rs
    M rust/hw/timer/hpet/src/fw_cfg.rs
    M rust/migration/src/vmstate.rs
    M rust/util/meson.build
    M rust/util/src/error.rs
    M rust/util/src/lib.rs
    M scripts/checkpatch.pl
    M scripts/ci/setup/ubuntu/ubuntu-2404-aarch64.yaml
    M scripts/ci/setup/ubuntu/ubuntu-2404-s390x.yaml
    M tests/docker/dockerfiles/ubuntu2204.docker
    M tests/lcitool/mappings.yml
    M tests/lcitool/refresh

  Log Message:
  -----------
  Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging

* rust: cleanup Error, add &error_fatal bindings
* rust: do not add qemuutil to Rust crates
* rust: migration: allow nested offset_of
* rust: add back to Ubuntu 22.04 jobs
* checkpatch: remove bogus patch prefix warning

# -----BEGIN PGP SIGNATURE-----
#
# iQFIBAABCgAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmkKKfgUHHBib256aW5p
# QHJlZGhhdC5jb20ACgkQv/vSX3jHroPIjAf/YrgwlyfL7Uocrga95I4+bVTluEI9
# Fi7Bf5jpKuS4AyeZvyp56S3pTPKdsOb1QUEj95b99DvwkQnDp6JlV4fgOWTZdyCv
# S0okaNNRG+kGVwrd+Ie4lvTt/ljNyVPPE3EiVAjrJ6Uy/0wKWwd/2hNuJgfpOgJH
# DlUkVB+tlzRcZVvgq35jNxiGZPZYmQnv2lwuDspyIg4Tt8dcJt0DbrwDeiN2oPKC
# 4wxfd21ui9RVyKKjHzFL7p0i/Ap8WgwKhZMqe+Ab5Zz93cE0FU1Jl3SSS/fEPJSu
# cAy5csQZWfpODzwduwsWYnUYBzw5FPTSZ31aWJqJCdBw8OBBgflOQ7Qhaw==
# =vdV1
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 04 Nov 2025 05:29:44 PM CET
# gpg:                using RSA key F13338574B662389866C7682BFFBD25F78C7AE83
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Paolo Bonzini <[email protected]>" [unknown]
# gpg:                 aka "Paolo Bonzini <[email protected]>" [unknown]
# gpg: WARNING: The key's User ID is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4  E2F7 7E15 100C CD36 69B1
#      Subkey fingerprint: F133 3857 4B66 2389 866C  7682 BFFB D25F 78C7 AE83

* tag 'for-upstream' of https://gitlab.com/bonzini/qemu:
  rust: add back to Ubuntu 22.04 jobs
  rust: migration: allow nested offset_of
  rust: do not add qemuutil to Rust crates
  rust: pull error_fatal out of SysbusDeviceMethods::sysbus_realize
  rust/util: replace Error::err_or_unit/err_or_else with Error::with_errp
  rust/util: use anyhow's native chaining capabilities
  rust/util: add ensure macro
  scripts/checkpatch.pl: remove bogus patch prefix warning

Signed-off-by: Richard Henderson <[email protected]>


  Commit: f6b573d109c9dd9918e3373f2d176cfc966a76bf
      
https://github.com/qemu/qemu/commit/f6b573d109c9dd9918e3373f2d176cfc966a76bf
  Author: Richard Henderson <[email protected]>
  Date:   2025-11-05 (Wed, 05 Nov 2025)

  Changed paths:
    M block.c
    M block/bochs.c
    M block/crypto.c
    M block/file-posix.c
    M block/file-win32.c
    M block/io_uring.c
    M block/parallels.c
    M block/qcow.c
    M block/qcow2-cluster.c
    M block/qcow2-refcount.c
    M block/qcow2.c
    M block/qcow2.h
    M block/qed.c
    M block/raw-format.c
    M block/trace-events
    M block/vdi.c
    M block/vhdx.c
    M block/vmdk.c
    M block/vpc.c
    M include/block/aio.h
    M include/block/block-global-state.h
    M include/block/nbd.h
    M include/block/raw-aio.h
    M qemu-img.c
    R stubs/io_uring.c
    M stubs/meson.build
    M tests/qemu-iotests/184
    M tests/qemu-iotests/257
    M tests/qemu-iotests/257.out
    M tests/qemu-iotests/check
    M tests/qemu-iotests/meson.build
    M tests/qemu-iotests/testrunner.py
    M tests/qemu-iotests/tests/resize-below-raw
    M tests/qemu-iotests/tests/resize-below-raw.out
    M tests/unit/test-aio.c
    M tests/unit/test-nested-aio-poll.c
    M util/aio-posix.c
    M util/aio-posix.h
    M util/aio-win32.c
    M util/async.c
    M util/fdmon-epoll.c
    M util/fdmon-io_uring.c
    M util/fdmon-poll.c
    M util/trace-events

  Log Message:
  -----------
  Merge tag 'for-upstream' of https://repo.or.cz/qemu/kevin into staging

Block layer patches

- stream: Fix potential crash during job completion
- aio: add the aio_add_sqe() io_uring API
- qcow2: put discards in discard queue when discard-no-unref is enabled
- qcow2, vmdk: Restrict creation with secondary file using protocol
- iotests: Run iotests with sanitizers
- iotests: Add more image formats to the thorough testing
- iotests: Improve the dry run list to speed up thorough testing
- Code cleanup

# -----BEGIN PGP SIGNATURE-----
#
# iQJFBAABCgAvFiEE3D3rFZqa+V09dFb+fwmycsiPL9YFAmkKZ+0RHGt3b2xmQHJl
# ZGhhdC5jb20ACgkQfwmycsiPL9ai5RAAybS3GLjtWob/flqlbRclZ/rZiDPVATVb
# ubkOH9cYBh3UKqWR6qgg1x455GBoDrRL6zPlqyZJ2KbDipQIzW/cTpGfp2c+AwLm
# miTFXOTUnz5EcO2LhuFRm/B/Z8Axge9aYW+xsjzbwnsAuzciVfcAevYCr7mBtXfG
# NgU8kIBY5hjUjacbQ6l50keW9Vm0AUr4SAGJuZwLWSUU4IUu32qOSu5/9AtP3i+y
# 55qWay5KxG1VTkgKS2BcJJ0QqtE25RUbgkSJCpOGR0oBK2MLFsReedC+yil2k23W
# 7B15FdGP/gk+oUZPkyDv57Z5Wct3oJk46lgixZCtucdp5TgVXoWgJQB/AV82beyj
# nfbzPxhthXpz7qsMcEIyLVpExwiXV7jUP0d3hlUJJu04NkrwxsYUWyiFgAJ0OuHz
# 0f0Somwh4S9y0Ajg4vb5xhMDSWK9GEueUvj2xmvoj4Fe1FCG0aoedtdiCA1RMVsR
# /KWuR7dd2hN7aGBr6NLvYFHDvWdaX07qp6yzAH2MN8IKvUpd+t2PW8z6qKworlIN
# F5rKjs0VWQjBVwFcozCav8zLRMQYnqXn0XkQ/Qdzbuc4rUMNik0j4Xz31ImImqZO
# UGGdHh9etBDfN0J+iomy5bMb/lkrwAgBFIZCdq1s1Ynnpcx++IO4iWPH2NWDCozQ
# 6auy+j6fZPY=
# =DF10
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 04 Nov 2025 09:54:05 PM CET
# gpg:                using RSA key DC3DEB159A9AF95D3D7456FE7F09B272C88F2FD6
# gpg:                issuer "[email protected]"
# gpg: Good signature from "Kevin Wolf <[email protected]>" [unknown]
# gpg: WARNING: The key's User ID is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* tag 'for-upstream' of https://repo.or.cz/qemu/kevin: (27 commits)
  qcow2, vmdk: Restrict creation with secondary file using protocol
  block: Allow drivers to control protocol prefix at creation
  tests/qemu-iotest: Add more image formats to the thorough testing
  tests/qemu-iotests: Improve the dry run list to speed up thorough testing
  tests/qemu-iotests/184: Fix skip message for qemu-img without throttle
  qcow2: put discards in discard queue when discard-no-unref is enabled
  qcow2: rename update_refcount_discard to queue_discard
  iotests: Run iotests with sanitizers
  qemu-img: Fix amend option parse error handling
  iotests: Test resizing file node under raw with size/offset
  block: Drop detach_subchain for bdrv_replace_node
  block: replace TABs with space
  block/io_uring: use non-vectored read/write when possible
  block/io_uring: use aio_add_sqe()
  aio-posix: add aio_add_sqe() API for user-defined io_uring requests
  aio-posix: add fdmon_ops->dispatch()
  aio-posix: unindent fdmon_io_uring_destroy()
  aio-posix: gracefully handle io_uring_queue_init() failure
  aio: add errp argument to aio_context_setup()
  aio: free AioContext when aio_context_new() fails
  ...

Signed-off-by: Richard Henderson <[email protected]>


Compare: https://github.com/qemu/qemu/compare/deed5c8e9380...f6b573d109c9

To unsubscribe from these emails, change your notification settings at 
https://github.com/qemu/qemu/settings/notifications

Reply via email to