Commit ba773aded3 for qemu.org

commit ba773aded3e5fcc096fa4db415c248e8f992a615
Author: Paolo Bonzini <pbonzini@redhat.com>
Date:   Wed Dec 3 12:33:13 2025 +0100

    block: rename block/aio.h to qemu/aio.h

    AioContexts are used as a generic event loop even outside the block
    layer; move the header file out of block/ just like the implementation
    is in util/.

    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

diff --git a/MAINTAINERS b/MAINTAINERS
index 81f48f0709..efceed9fe5 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3071,7 +3071,7 @@ F: util/aio-*.h
 F: util/defer-call.c
 F: util/fdmon-*.c
 F: block/io.c
-F: include/block/aio.h
+F: include/qemu/aio.h
 F: include/block/aio-wait.h
 F: include/qemu/defer-call.h
 F: scripts/qemugdb/aio.py
diff --git a/block/aio_task.c b/block/aio_task.c
index bb5c05f455..21b68a9fc0 100644
--- a/block/aio_task.c
+++ b/block/aio_task.c
@@ -23,7 +23,7 @@
  */

 #include "qemu/osdep.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/aio_task.h"

 struct AioTaskPool {
diff --git a/block/export/fuse.c b/block/export/fuse.c
index 465cc9891d..8cf4572f78 100644
--- a/block/export/fuse.c
+++ b/block/export/fuse.c
@@ -20,7 +20,7 @@

 #include "qemu/osdep.h"
 #include "qemu/memalign.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/block_int-common.h"
 #include "block/export.h"
 #include "block/fuse.h"
diff --git a/block/io_uring.c b/block/io_uring.c
index f1514cf024..cb131d3b8b 100644
--- a/block/io_uring.c
+++ b/block/io_uring.c
@@ -10,7 +10,7 @@
  */
 #include "qemu/osdep.h"
 #include <liburing.h>
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/block.h"
 #include "block/raw-aio.h"
 #include "qemu/coroutine.h"
diff --git a/block/linux-aio.c b/block/linux-aio.c
index c200e7ad20..53c3e9af8a 100644
--- a/block/linux-aio.c
+++ b/block/linux-aio.c
@@ -8,7 +8,7 @@
  * See the COPYING file in the top-level directory.
  */
 #include "qemu/osdep.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qemu/queue.h"
 #include "block/block.h"
 #include "block/raw-aio.h"
diff --git a/block/win32-aio.c b/block/win32-aio.c
index 539f1c81c6..6e1b34fb95 100644
--- a/block/win32-aio.c
+++ b/block/win32-aio.c
@@ -26,7 +26,7 @@
 #include "qemu/timer.h"
 #include "block/block-io.h"
 #include "block/block_int.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/raw-aio.h"
 #include "qemu/aiocb.h"
 #include "qemu/event_notifier.h"
diff --git a/docs/devel/multiple-iothreads.rst b/docs/devel/multiple-iothreads.rst
index d1f3fc4510..a6eb046267 100644
--- a/docs/devel/multiple-iothreads.rst
+++ b/docs/devel/multiple-iothreads.rst
@@ -52,7 +52,7 @@ How to program for ``IOThread``\ s
 ----------------------------------
 The main difference between legacy code and new code that can run in an
 ``IOThread`` is dealing explicitly with the event loop object, ``AioContext``
-(see ``include/block/aio.h``).  Code that only works in the main loop
+(see ``include/qemu/aio.h``).  Code that only works in the main loop
 implicitly uses the main loop's ``AioContext``.  Code that supports running
 in ``IOThread``\ s must be aware of its ``AioContext``.

@@ -74,7 +74,7 @@ Since they implicitly work on the main loop they cannot be used in code that
 runs in an ``IOThread``.  They might cause a crash or deadlock if called from an
 ``IOThread`` since the BQL is not held.

-Instead, use the ``AioContext`` functions directly (see ``include/block/aio.h``):
+Instead, use the ``AioContext`` functions directly (see ``include/qemu/aio.h``):
  * ``aio_set_fd_handler()`` - monitor a file descriptor
  * ``aio_set_event_notifier()`` - monitor an event notifier
  * ``aio_timer_new()`` - create a timer
diff --git a/include/block/aio-wait.h b/include/block/aio-wait.h
index cf5e8bde1c..57ebe21b31 100644
--- a/include/block/aio-wait.h
+++ b/include/block/aio-wait.h
@@ -25,7 +25,7 @@
 #ifndef QEMU_AIO_WAIT_H
 #define QEMU_AIO_WAIT_H

-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qemu/main-loop.h"

 /**
diff --git a/include/block/raw-aio.h b/include/block/raw-aio.h
index d568b887f1..256d0468a8 100644
--- a/include/block/raw-aio.h
+++ b/include/block/raw-aio.h
@@ -17,7 +17,7 @@
 #define QEMU_RAW_AIO_H

 #include "qemu/aiocb.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/block-common.h"
 #include "qemu/iov.h"

diff --git a/include/block/thread-pool.h b/include/block/thread-pool.h
index 65cabfc138..e9ddb2b6d3 100644
--- a/include/block/thread-pool.h
+++ b/include/block/thread-pool.h
@@ -19,7 +19,7 @@
 #define QEMU_THREAD_POOL_H

 #include "qemu/aiocb.h"
-#include "block/aio.h"
+#include "qemu/aio.h"

 #define THREAD_POOL_MAX_THREADS_DEFAULT         64

diff --git a/include/hw/scsi/scsi.h b/include/hw/scsi/scsi.h
index 75b4d781a5..d26f1127bb 100644
--- a/include/hw/scsi/scsi.h
+++ b/include/hw/scsi/scsi.h
@@ -2,7 +2,7 @@
 #define QEMU_HW_SCSI_H

 #include "qemu/aiocb.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "hw/block/block.h"
 #include "hw/core/qdev.h"
 #include "scsi/utils.h"
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index 91ff2fa21a..27cd98d2fe 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -23,7 +23,7 @@
 #include "standard-headers/linux/virtio_config.h"
 #include "standard-headers/linux/virtio_ring.h"
 #include "qom/object.h"
-#include "block/aio.h"
+#include "qemu/aio.h"

 /*
  * A guest should never accept this. It implies negotiation is broken
diff --git a/include/io/channel.h b/include/io/channel.h
index f42be760f9..1b02350437 100644
--- a/include/io/channel.h
+++ b/include/io/channel.h
@@ -23,7 +23,7 @@

 #include "qom/object.h"
 #include "qemu/coroutine-core.h"
-#include "block/aio.h"
+#include "qemu/aio.h"

 #define TYPE_QIO_CHANNEL "qio-channel"
 OBJECT_DECLARE_TYPE(QIOChannel, QIOChannelClass,
diff --git a/include/block/aio.h b/include/qemu/aio.h
similarity index 100%
rename from include/block/aio.h
rename to include/qemu/aio.h
diff --git a/include/qemu/job.h b/include/qemu/job.h
index 2b163602c5..0e40e8b457 100644
--- a/include/qemu/job.h
+++ b/include/qemu/job.h
@@ -31,7 +31,7 @@
 #include "qemu/queue.h"
 #include "qemu/progress_meter.h"
 #include "qemu/coroutine.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/graph-lock.h"

 typedef struct JobDriver JobDriver;
diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
index 241dc87be5..8c1241a2c1 100644
--- a/include/qemu/main-loop.h
+++ b/include/qemu/main-loop.h
@@ -25,7 +25,7 @@
 #ifndef QEMU_MAIN_LOOP_H
 #define QEMU_MAIN_LOOP_H

-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qom/object.h"
 #include "system/event-loop-base.h"

diff --git a/include/qemu/throttle.h b/include/qemu/throttle.h
index 8fa2b29452..06b6589c94 100644
--- a/include/qemu/throttle.h
+++ b/include/qemu/throttle.h
@@ -25,7 +25,7 @@
 #ifndef THROTTLE_H
 #define THROTTLE_H

-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qapi/qapi-types-block-core.h"
 #include "qemu/timer.h"

diff --git a/include/scsi/pr-manager.h b/include/scsi/pr-manager.h
index 45de28d354..5045d115c4 100644
--- a/include/scsi/pr-manager.h
+++ b/include/scsi/pr-manager.h
@@ -4,7 +4,7 @@
 #include "qom/object.h"
 #include "qapi/visitor.h"
 #include "qom/object_interfaces.h"
-#include "block/aio.h"
+#include "qemu/aio.h"

 #define TYPE_PR_MANAGER "pr-manager"

diff --git a/include/system/event-loop-base.h b/include/system/event-loop-base.h
index a6c24f1351..130629e7f3 100644
--- a/include/system/event-loop-base.h
+++ b/include/system/event-loop-base.h
@@ -13,7 +13,7 @@
 #define QEMU_EVENT_LOOP_BASE_H

 #include "qom/object.h"
-#include "block/aio.h"
+#include "qemu/aio.h"

 #define TYPE_EVENT_LOOP_BASE         "event-loop-base"
 OBJECT_DECLARE_TYPE(EventLoopBase, EventLoopBaseClass,
diff --git a/include/system/iothread.h b/include/system/iothread.h
index d95c17a645..e26d13c6c7 100644
--- a/include/system/iothread.h
+++ b/include/system/iothread.h
@@ -14,7 +14,7 @@
 #ifndef IOTHREAD_H
 #define IOTHREAD_H

-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qemu/thread.h"
 #include "qom/object.h"
 #include "system/event-loop-base.h"
diff --git a/include/system/replay.h b/include/system/replay.h
index 68f91bdfbf..f8715ca9fe 100644
--- a/include/system/replay.h
+++ b/include/system/replay.h
@@ -15,7 +15,7 @@
 #include "qapi/qapi-types-misc.h"
 #include "qapi/qapi-types-run-state.h"
 #include "qapi/qapi-types-ui.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qemu/audio.h"

 /* replay clock kinds */
diff --git a/iothread.c b/iothread.c
index 8810376dce..caf68e0764 100644
--- a/iothread.c
+++ b/iothread.c
@@ -15,7 +15,7 @@
 #include "qom/object.h"
 #include "qom/object_interfaces.h"
 #include "qemu/module.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/block.h"
 #include "system/event-loop-base.h"
 #include "system/iothread.h"
diff --git a/qapi/qmp-dispatch.c b/qapi/qmp-dispatch.c
index e569224eae..9bb1e6a9f4 100644
--- a/qapi/qmp-dispatch.c
+++ b/qapi/qmp-dispatch.c
@@ -13,7 +13,7 @@

 #include "qemu/osdep.h"

-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qapi/compat-policy.h"
 #include "qapi/error.h"
 #include "qapi/qmp-registry.h"
diff --git a/replay/replay-events.c b/replay/replay-events.c
index a96e47e774..9e5af5e849 100644
--- a/replay/replay-events.c
+++ b/replay/replay-events.c
@@ -13,7 +13,7 @@
 #include "qemu/error-report.h"
 #include "system/replay.h"
 #include "replay-internal.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "ui/input.h"
 #include "hw/core/cpu.h"

diff --git a/scripts/analyze-inclusions b/scripts/analyze-inclusions
index 50a7d95d9e..c30e44f02e 100644
--- a/scripts/analyze-inclusions
+++ b/scripts/analyze-inclusions
@@ -52,7 +52,7 @@ echo $(grep_include -F 'qapi-types.h') files include qapi-types.h
 echo $(grep_include -F 'trace/generated-tracers.h') files include generated-tracers.h
 echo $(grep_include -F 'qapi/error.h') files include qapi/error.h
 echo $(grep_include -F 'qom/object.h') files include qom/object.h
-echo $(grep_include -F 'block/aio.h') files include block/aio.h
+echo $(grep_include -F 'qemu/aio.h') files include block/aio.h
 echo $(grep_include -F 'system/memory.h') files include system/memory.h
 echo $(grep_include -F 'fpu/softfloat.h') files include fpu/softfloat.h
 echo $(grep_include -F 'qemu/bswap.h') files include qemu/bswap.h
diff --git a/scsi/pr-manager.c b/scsi/pr-manager.c
index 40e1210eb2..fec0d68c4c 100644
--- a/scsi/pr-manager.c
+++ b/scsi/pr-manager.c
@@ -13,7 +13,7 @@
 #include <scsi/sg.h>

 #include "qapi/error.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/thread-pool.h"
 #include "scsi/pr-manager.h"
 #include "trace.h"
diff --git a/stubs/linux-aio.c b/stubs/linux-aio.c
index 84d1f784ae..b1a27e926e 100644
--- a/stubs/linux-aio.c
+++ b/stubs/linux-aio.c
@@ -8,7 +8,7 @@
  * See the COPYING file in the top-level directory.
  */
 #include "qemu/osdep.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/raw-aio.h"

 void laio_detach_aio_context(LinuxAioState *s, AioContext *old_context)
diff --git a/stubs/replay-tools.c b/stubs/replay-tools.c
index c537485f40..17dc3babd9 100644
--- a/stubs/replay-tools.c
+++ b/stubs/replay-tools.c
@@ -1,6 +1,6 @@
 #include "qemu/osdep.h"
 #include "system/replay.h"
-#include "block/aio.h"
+#include "qemu/aio.h"

 bool replay_events_enabled(void)
 {
diff --git a/tests/unit/iothread.c b/tests/unit/iothread.c
index f9b0791084..a363bf8f70 100644
--- a/tests/unit/iothread.c
+++ b/tests/unit/iothread.c
@@ -14,7 +14,7 @@

 #include "qemu/osdep.h"
 #include "qapi/error.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qemu/main-loop.h"
 #include "qemu/rcu.h"
 #include "iothread.h"
diff --git a/tests/unit/iothread.h b/tests/unit/iothread.h
index 4877cea6a3..eb4d0c77f8 100644
--- a/tests/unit/iothread.h
+++ b/tests/unit/iothread.h
@@ -13,7 +13,7 @@
 #ifndef TEST_IOTHREAD_H
 #define TEST_IOTHREAD_H

-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qemu/thread.h"

 typedef struct IOThread IOThread;
diff --git a/tests/unit/test-aio-multithread.c b/tests/unit/test-aio-multithread.c
index c24200a712..9179cdc6a3 100644
--- a/tests/unit/test-aio-multithread.c
+++ b/tests/unit/test-aio-multithread.c
@@ -11,7 +11,7 @@
  */

 #include "qemu/osdep.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qemu/coroutine.h"
 #include "qemu/thread.h"
 #include "qemu/error-report.h"
diff --git a/tests/unit/test-aio.c b/tests/unit/test-aio.c
index 010d65b79a..b3ca4d8a59 100644
--- a/tests/unit/test-aio.c
+++ b/tests/unit/test-aio.c
@@ -11,7 +11,7 @@
  */

 #include "qemu/osdep.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qapi/error.h"
 #include "qemu/timer.h"
 #include "qemu/sockets.h"
diff --git a/tests/unit/test-nested-aio-poll.c b/tests/unit/test-nested-aio-poll.c
index d13ecccd8c..9ab1ad08a7 100644
--- a/tests/unit/test-nested-aio-poll.c
+++ b/tests/unit/test-nested-aio-poll.c
@@ -13,7 +13,7 @@
  * aio_poll() calls. This test case checks that this is indeed what happens.
  */
 #include "qemu/osdep.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qapi/error.h"
 #include "util/aio-posix.h"

diff --git a/tests/unit/test-thread-pool.c b/tests/unit/test-thread-pool.c
index ea5234f9f4..1e2f05f841 100644
--- a/tests/unit/test-thread-pool.c
+++ b/tests/unit/test-thread-pool.c
@@ -1,5 +1,5 @@
 #include "qemu/osdep.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/thread-pool.h"
 #include "block/block.h"
 #include "qapi/error.h"
diff --git a/tests/unit/test-throttle.c b/tests/unit/test-throttle.c
index dfa61c75ea..52eb8966b3 100644
--- a/tests/unit/test-throttle.c
+++ b/tests/unit/test-throttle.c
@@ -14,7 +14,7 @@

 #include "qemu/osdep.h"
 #include <math.h>
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qapi/error.h"
 #include "qemu/throttle.h"
 #include "qemu/error-report.h"
diff --git a/util/aio-posix.h b/util/aio-posix.h
index babbfa8314..0cedb8d189 100644
--- a/util/aio-posix.h
+++ b/util/aio-posix.h
@@ -17,7 +17,7 @@
 #ifndef AIO_POSIX_H
 #define AIO_POSIX_H

-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "qapi/error.h"

 struct AioHandler {
diff --git a/util/async.c b/util/async.c
index 39f391fb71..80d6b01a8a 100644
--- a/util/async.c
+++ b/util/async.c
@@ -25,7 +25,7 @@

 #include "qemu/osdep.h"
 #include "qapi/error.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/thread-pool.h"
 #include "block/graph-lock.h"
 #include "qemu/main-loop.h"
diff --git a/util/main-loop.c b/util/main-loop.c
index b462598f76..ad8645c30a 100644
--- a/util/main-loop.c
+++ b/util/main-loop.c
@@ -30,7 +30,7 @@
 #include "exec/icount.h"
 #include "system/replay.h"
 #include "qemu/main-loop.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "block/thread-pool.h"
 #include "qemu/error-report.h"
 #include "qemu/queue.h"
diff --git a/util/qemu-co-timeout.c b/util/qemu-co-timeout.c
index 00cd335649..6774440b28 100644
--- a/util/qemu-co-timeout.c
+++ b/util/qemu-co-timeout.c
@@ -25,7 +25,7 @@

 #include "qemu/osdep.h"
 #include "qemu/coroutine.h"
-#include "block/aio.h"
+#include "qemu/aio.h"

 typedef struct QemuCoTimeoutState {
     CoroutineEntry *entry;
diff --git a/util/qemu-coroutine-lock.c b/util/qemu-coroutine-lock.c
index 2534435388..fac91582b5 100644
--- a/util/qemu-coroutine-lock.c
+++ b/util/qemu-coroutine-lock.c
@@ -30,7 +30,7 @@
 #include "qemu/coroutine_int.h"
 #include "qemu/processor.h"
 #include "qemu/queue.h"
-#include "block/aio.h"
+#include "qemu/aio.h"
 #include "trace.h"

 void qemu_co_queue_init(CoQueue *queue)
diff --git a/util/qemu-coroutine-sleep.c b/util/qemu-coroutine-sleep.c
index af59f9af98..edef117284 100644
--- a/util/qemu-coroutine-sleep.c
+++ b/util/qemu-coroutine-sleep.c
@@ -14,7 +14,7 @@
 #include "qemu/osdep.h"
 #include "qemu/coroutine_int.h"
 #include "qemu/timer.h"
-#include "block/aio.h"
+#include "qemu/aio.h"

 static const char *qemu_co_sleep_ns__scheduled = "qemu_co_sleep_ns";

diff --git a/util/qemu-coroutine.c b/util/qemu-coroutine.c
index 64d6264fc7..d17135f585 100644
--- a/util/qemu-coroutine.c
+++ b/util/qemu-coroutine.c
@@ -19,7 +19,7 @@
 #include "qemu/coroutine_int.h"
 #include "qemu/coroutine-tls.h"
 #include "qemu/cutils.h"
-#include "block/aio.h"
+#include "qemu/aio.h"

 enum {
     COROUTINE_POOL_BATCH_MAX_SIZE = 128,
diff --git a/util/throttle.c b/util/throttle.c
index 9582899da3..8044f04ffc 100644
--- a/util/throttle.c
+++ b/util/throttle.c
@@ -26,7 +26,7 @@
 #include "qapi/error.h"
 #include "qemu/throttle.h"
 #include "qemu/timer.h"
-#include "block/aio.h"
+#include "qemu/aio.h"

 /* This function make a bucket leak
  *