[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 06/19] jobs: remove aiocontext locks since the functions are u
From: |
Emanuele Giuseppe Esposito |
Subject: |
[PATCH v4 06/19] jobs: remove aiocontext locks since the functions are under BQL |
Date: |
Fri, 28 Jan 2022 06:50:18 -0500 |
In preparation to the job_lock/unlock patch, remove these
aiocontext locks.
The main reason these two locks are removed here is because
they are inside a loop iterating on the jobs list. Once the
job_lock is added, it will have to protect the whole loop,
wrapping also the aiocontext acquire/release.
We don't want this, as job_lock must be taken inside the AioContext
lock, and taking it outside would cause deadlocks.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
---
blockdev.c | 4 ----
job-qmp.c | 4 ----
2 files changed, 8 deletions(-)
diff --git a/blockdev.c b/blockdev.c
index 800e95ba54..45a24fee8a 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3713,15 +3713,11 @@ BlockJobInfoList *qmp_query_block_jobs(Error **errp)
for (job = block_job_next(NULL); job; job = block_job_next(job)) {
BlockJobInfo *value;
- AioContext *aio_context;
if (block_job_is_internal(job)) {
continue;
}
- aio_context = block_job_get_aio_context(job);
- aio_context_acquire(aio_context);
value = block_job_query(job, errp);
- aio_context_release(aio_context);
if (!value) {
qapi_free_BlockJobInfoList(head);
return NULL;
diff --git a/job-qmp.c b/job-qmp.c
index 829a28aa70..a6774aaaa5 100644
--- a/job-qmp.c
+++ b/job-qmp.c
@@ -173,15 +173,11 @@ JobInfoList *qmp_query_jobs(Error **errp)
for (job = job_next(NULL); job; job = job_next(job)) {
JobInfo *value;
- AioContext *aio_context;
if (job_is_internal(job)) {
continue;
}
- aio_context = job->aio_context;
- aio_context_acquire(aio_context);
value = job_query_single(job, errp);
- aio_context_release(aio_context);
if (!value) {
qapi_free_JobInfoList(head);
return NULL;
--
2.31.1
- [PATCH v4 05/19] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED, (continued)
- [PATCH v4 05/19] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 08/19] jobs: add job lock in find_* functions, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 12/19] job.h: define unlocked functions, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 04/19] job.c: move inner aiocontext lock in callbacks, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 13/19] block/mirror.c: use of job helpers in drivers to avoid TOC/TOU, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 17/19] jobs: protect job.aio_context with BQL and job_mutex, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 16/19] job: detect change of aiocontext within job coroutine, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 14/19] blockjob: block_job_get_aio_context is a GS function, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 11/19] jobs: document all static functions and add _locked() suffix, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 18/19] job.c: enable job lock/unlock and remove Aiocontext locks, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 06/19] jobs: remove aiocontext locks since the functions are under BQL,
Emanuele Giuseppe Esposito <=
- [PATCH v4 19/19] block_job_query: remove atomic read, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 07/19] jobs: protect jobs with job_lock/unlock, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 09/19] jobs: use job locks also in the unit tests, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 15/19] commit and mirror: create new nodes using bdrv_get_aio_context, and not the job aiocontext, Emanuele Giuseppe Esposito, 2022/01/28
- [PATCH v4 10/19] job.h: define locked functions, Emanuele Giuseppe Esposito, 2022/01/28