[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v10 04/21] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED
From: |
Kevin Wolf |
Subject: |
Re: [PATCH v10 04/21] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED |
Date: |
Fri, 29 Jul 2022 14:33:04 +0200 |
Am 25.07.2022 um 09:38 hat Emanuele Giuseppe Esposito geschrieben:
> Same as AIO_WAIT_WHILE macro, but if we are in the Main loop
> do not release and then acquire ctx_ 's aiocontext.
>
> Once all Aiocontext locks go away, this macro will replace
> AIO_WAIT_WHILE.
>
> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
> ---
> include/block/aio-wait.h | 17 +++++++++++++----
> 1 file changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/include/block/aio-wait.h b/include/block/aio-wait.h
> index 54840f8622..a61f82c617 100644
> --- a/include/block/aio-wait.h
> +++ b/include/block/aio-wait.h
> @@ -59,10 +59,13 @@ typedef struct {
> extern AioWait global_aio_wait;
>
> /**
> - * AIO_WAIT_WHILE:
> + * _AIO_WAIT_WHILE:
> * @ctx: the aio context, or NULL if multiple aio contexts (for which the
> * caller does not hold a lock) are involved in the polling condition.
> * @cond: wait while this conditional expression is true
> + * @unlock: whether to unlock and then lock again @ctx. This apples
> + * only when waiting for another AioContext from the main loop.
> + * Otherwise it's ignored.
> *
> * Wait while a condition is true. Use this to implement synchronous
> * operations that require event loop activity.
> @@ -75,7 +78,7 @@ extern AioWait global_aio_wait;
> * wait on conditions between two IOThreads since that could lead to
> deadlock,
> * go via the main loop instead.
> */
> -#define AIO_WAIT_WHILE(ctx, cond) ({ \
> +#define _AIO_WAIT_WHILE(ctx, cond, unlock) ({ \
"All identifiers that begin with an underscore and either an uppercase
letter or another underscore are always reserved for any use." (C11,
7.1.3)
Kevin
- [PATCH v10 00/21] job: replace AioContext lock with job_mutex, Emanuele Giuseppe Esposito, 2022/07/25
- [PATCH v10 02/21] job.h: categorize fields in struct Job, Emanuele Giuseppe Esposito, 2022/07/25
- [PATCH v10 04/21] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED, Emanuele Giuseppe Esposito, 2022/07/25
- Re: [PATCH v10 04/21] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED,
Kevin Wolf <=
- [PATCH v10 03/21] job.c: API functions not used outside should be static, Emanuele Giuseppe Esposito, 2022/07/25
- [PATCH v10 01/21] job.c: make job_mutex and job_lock/unlock() public, Emanuele Giuseppe Esposito, 2022/07/25
- [PATCH v10 06/21] job: move and update comments from blockjob.c, Emanuele Giuseppe Esposito, 2022/07/25
- [PATCH v10 11/21] jobs: group together API calls under the same job lock, Emanuele Giuseppe Esposito, 2022/07/25
- [PATCH v10 07/21] blockjob: introduce block_job _locked() APIs, Emanuele Giuseppe Esposito, 2022/07/25
- [PATCH v10 08/21] jobs: add job lock in find_* functions, Emanuele Giuseppe Esposito, 2022/07/25
- [PATCH v10 09/21] jobs: use job locks also in the unit tests, Emanuele Giuseppe Esposito, 2022/07/25