qemu-ppc
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v6 02/33] include/block/block: split header into I/O and glob


From: Paolo Bonzini
Subject: Re: [PATCH v6 02/33] include/block/block: split header into I/O and global state API
Date: Mon, 31 Jan 2022 16:58:32 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0

On 1/31/22 15:54, Kevin Wolf wrote:
So I guess the decision depends on what you're going to use the
categories in the future. I get the feeling that we have one more
category than this series introduces:

* Global State (must run from the main thread/hold the BQL)
* I/O (can be called in any thread under the AioContext lock, doesn't
   modify global state, drain waits for it to complete)
* Common (doesn't even touch global state)
* iothread dependent (can run without the BQL, but only in one specific
   iothread while holding its AioContext lock; this would cover at least
   AIO_WAIT_WHILE() and all of its indirect callers)

Yes, I agree.

bdrv_drained_begin and friends are somewhat like a coroutine-level lock/unlock primitive, so they need to be available in both the main thread and the iothread. They could be called iothread dependent, AioContext dependent, or perhaps "global or I/O".

That said, even if they are a different category, I think it makes sense to leave them in the same header file as I/O functions, because I/O functions are locked out between drained_begin and drained_end.

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]