All of lore.kernel.org
 help / color / mirror / Atom feed
From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
To: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>,
	qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Hanna Reitz <hreitz@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>, John Snow <jsnow@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	Wen Congyang <wencongyang2@huawei.com>,
	Xie Changlong <xiechanglong.d@gmail.com>,
	Markus Armbruster <armbru@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>, Fam Zheng <fam@euphon.net>,
	qemu-devel@nongnu.org
Subject: Re: [PATCH v9 19/21] blockjob: protect iostatus field in BlockJob struct
Date: Tue, 19 Jul 2022 15:07:31 +0200	[thread overview]
Message-ID: <a45a572b-031e-6a88-439f-ca276202a357@redhat.com> (raw)
In-Reply-To: <00b8b101-b36f-2204-0e49-1c605268b793@yandex-team.ru>



Am 11/07/2022 um 16:51 schrieb Vladimir Sementsov-Ogievskiy:
> On 7/6/22 23:15, Emanuele Giuseppe Esposito wrote:
>> iostatus is the only field (together with .job) that needs
>> protection using the job mutex.
>>
>> It is set in the main loop (GLOBAL_STATE functions) but read
>> in I/O code (block_job_error_action).
>>
>> In order to protect it, change block_job_iostatus_set_err
>> to block_job_iostatus_set_err_locked(), always called under
>> job lock.
>>
>> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
> 
> Seems, that (and previous) patch should go before 15.

Why?

> 
>> ---
>>   blockjob.c | 5 +++--
>>   1 file changed, 3 insertions(+), 2 deletions(-)
>>
>> diff --git a/blockjob.c b/blockjob.c
>> index a2559b97a7..893c8ff08e 100644
>> --- a/blockjob.c
>> +++ b/blockjob.c
>> @@ -367,7 +367,8 @@ BlockJobInfo *block_job_query(BlockJob *job, Error
>> **errp)
>>       return block_job_query_locked(job, errp);
>>   }
>>   -static void block_job_iostatus_set_err(BlockJob *job, int error)
>> +/* Called with job lock held */
>> +static void block_job_iostatus_set_err_locked(BlockJob *job, int error)
>>   {
>>       if (job->iostatus == BLOCK_DEVICE_IO_STATUS_OK) {
>>           job->iostatus = error == ENOSPC ?
>> BLOCK_DEVICE_IO_STATUS_NOSPACE :
>> @@ -586,8 +587,8 @@ BlockErrorAction block_job_error_action(BlockJob
>> *job, BlockdevOnError on_err,
>>                    */
>>                   job->job.user_paused = true;
>>               }
>> +            block_job_iostatus_set_err_locked(job, error);
>>           }
>> -        block_job_iostatus_set_err(job, error);
>>       }
>>       return action;
>>   }
> 
> 



  reply	other threads:[~2022-07-19 13:09 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-06 20:15 [PATCH v9 00/21] job: replace AioContext lock with job_mutex Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 01/21] job.c: make job_mutex and job_lock/unlock() public Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 02/21] job.h: categorize fields in struct Job Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 03/21] job.c: API functions not used outside should be static Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 04/21] aio-wait.h: introduce AIO_WAIT_WHILE_UNLOCKED Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 05/21] job.c: add job_lock/unlock while keeping job.h intact Emanuele Giuseppe Esposito
2022-07-08 19:25   ` Vladimir Sementsov-Ogievskiy
2022-07-11  7:30     ` Emanuele Giuseppe Esposito
2022-07-11 10:40       ` Vladimir Sementsov-Ogievskiy
2022-07-06 20:15 ` [PATCH v9 06/21] job: move and update comments from blockjob.c Emanuele Giuseppe Esposito
2022-07-11  8:56   ` Vladimir Sementsov-Ogievskiy
2022-07-06 20:15 ` [PATCH v9 07/21] blockjob: introduce block_job _locked() APIs Emanuele Giuseppe Esposito
2022-07-11 12:04   ` Vladimir Sementsov-Ogievskiy
2022-07-11 12:24     ` Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 08/21] jobs: add job lock in find_* functions Emanuele Giuseppe Esposito
2022-07-11 12:20   ` Vladimir Sementsov-Ogievskiy
2022-07-06 20:15 ` [PATCH v9 09/21] jobs: use job locks also in the unit tests Emanuele Giuseppe Esposito
2022-07-11 13:08   ` Vladimir Sementsov-Ogievskiy
2022-07-19 12:00     ` Emanuele Giuseppe Esposito
2022-07-20 13:06       ` Vladimir Sementsov-Ogievskiy
2022-07-20 14:22         ` Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 10/21] block/mirror.c: use of job helpers in drivers to avoid TOC/TOU Emanuele Giuseppe Esposito
2022-07-11 13:15   ` Vladimir Sementsov-Ogievskiy
2022-07-06 20:15 ` [PATCH v9 11/21] jobs: group together API calls under the same job lock Emanuele Giuseppe Esposito
2022-07-11 13:26   ` Vladimir Sementsov-Ogievskiy
2022-07-19 12:40     ` Emanuele Giuseppe Esposito
2022-07-20 13:10       ` Vladimir Sementsov-Ogievskiy
2022-07-06 20:15 ` [PATCH v9 12/21] commit and mirror: create new nodes using bdrv_get_aio_context, and not the job aiocontext Emanuele Giuseppe Esposito
2022-07-11 13:32   ` Vladimir Sementsov-Ogievskiy
2022-07-06 20:15 ` [PATCH v9 13/21] job: detect change of aiocontext within job coroutine Emanuele Giuseppe Esposito
2022-07-11 13:59   ` Vladimir Sementsov-Ogievskiy
2022-07-06 20:15 ` [PATCH v9 14/21] jobs: protect job.aio_context with BQL and job_mutex Emanuele Giuseppe Esposito
2022-07-11 14:19   ` Vladimir Sementsov-Ogievskiy
2022-07-19 12:48     ` Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 15/21] job.c: enable job lock/unlock and remove Aiocontext locks Emanuele Giuseppe Esposito
2022-07-11 14:33   ` Vladimir Sementsov-Ogievskiy
2022-07-19 12:51     ` Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 16/21] block_job_query: remove atomic read Emanuele Giuseppe Esposito
2022-07-11 14:37   ` Vladimir Sementsov-Ogievskiy
2022-07-06 20:15 ` [PATCH v9 17/21] blockjob.h: categorize fields in struct BlockJob Emanuele Giuseppe Esposito
2022-07-11 14:44   ` Vladimir Sementsov-Ogievskiy
2022-07-19 12:53     ` Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 18/21] blockjob: rename notifier callbacks as _locked Emanuele Giuseppe Esposito
2022-07-11 14:47   ` Vladimir Sementsov-Ogievskiy
2022-07-06 20:15 ` [PATCH v9 19/21] blockjob: protect iostatus field in BlockJob struct Emanuele Giuseppe Esposito
2022-07-11 14:51   ` Vladimir Sementsov-Ogievskiy
2022-07-19 13:07     ` Emanuele Giuseppe Esposito [this message]
2022-07-20 13:15       ` Vladimir Sementsov-Ogievskiy
2022-07-20 14:06         ` Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 20/21] blockjob: remove unused functions Emanuele Giuseppe Esposito
2022-07-06 20:15 ` [PATCH v9 21/21] job: " Emanuele Giuseppe Esposito
2022-07-11 15:57 ` [PATCH v9 00/21] job: replace AioContext lock with job_mutex Vladimir Sementsov-Ogievskiy
2022-07-19 13:13   ` Emanuele Giuseppe Esposito

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a45a572b-031e-6a88-439f-ca276202a357@redhat.com \
    --to=eesposit@redhat.com \
    --cc=armbru@redhat.com \
    --cc=fam@euphon.net \
    --cc=hreitz@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    --cc=vsementsov@virtuozzo.com \
    --cc=vsementsov@yandex-team.ru \
    --cc=wencongyang2@huawei.com \
    --cc=xiechanglong.d@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.