Hi, I have recently started working on QEMU and it seems a daunting task to say the least, hence I wanted some head-start. I have browsed the source but I still need to bring closer some dots so I can start working on some experimental changes. I will have to ask further questions based on my new improved understanding, I think my questions could be compiled into a single FAQ list :)
I wanted to understand AIOContext in Block, Coroutines in Block. How are they related to IOThreads and vCPU threads. Currently My understanding is as follows (kindly validate as well) 1. There is 1 vCPU thread per CPU core that I specify in the command arguments. so eg: ./qemu-system-x86_64 -smp 4 should create 4 vCPU threads ? These vCPU threads are going to run the Guest Code, They may also handle the exit conditions and dispatch the MMIO request. So, who handles the MMIO request and its Completion, is it the IOThreads ? 2. Lets say the Guest Code has decided to write something on a disk file on the Host, the guest Should then dispatch the write operation and some IOThread will do the IO. How does the IO thread report back the completion of this operation. And how do the AIOcontext and Coroutines play a role in this operation. I know the use of co-routines but I would like to understand through some code snippets how they interact with the block layer. Looking forward for some help. Thanks.