All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
To: Eric Blake <eblake@redhat.com>, qemu-block@nongnu.org
Cc: fam@euphon.net, kwolf@redhat.com, qemu-devel@nongnu.org,
	mreitz@redhat.com, stefanha@redhat.com, den@openvz.org,
	jsnow@redhat.com
Subject: Re: [PATCH 04/11] job: add .cancel handler for the driver
Date: Thu, 21 Jan 2021 12:32:54 +0300	[thread overview]
Message-ID: <3d7a2143-19b0-8f43-f7e9-49e40f1b16d0@virtuozzo.com> (raw)
In-Reply-To: <0db5f8be-46e8-775e-1eb1-4e74941ec916@redhat.com>

21.01.2021 02:17, Eric Blake wrote:
> On 11/18/20 12:04 PM, Vladimir Sementsov-Ogievskiy wrote:
>> To be used in mirror in the following commit to cancel in-flight io on
>> target to not waste the time.
>>
>> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>> ---
>>   include/qemu/job.h | 5 +++++
>>   job.c              | 3 +++
>>   2 files changed, 8 insertions(+)
>>
>> diff --git a/include/qemu/job.h b/include/qemu/job.h
>> index 32aabb1c60..efc6fa7544 100644
>> --- a/include/qemu/job.h
>> +++ b/include/qemu/job.h
>> @@ -251,6 +251,11 @@ struct JobDriver {
>>        */
>>       void (*clean)(Job *job);
>>   
>> +    /**
>> +     * If the callback is not NULL, it will be invoked in job_cancel_async
>> +     */
>> +    void (*cancel)(Job *job);
>> +
> 
> Does the call need to be re-entrant or even worry about being invoked
> more than once on the same BDS?  Or worded differently,
> 
>> +++ b/job.c
>> @@ -712,6 +712,9 @@ static int job_finalize_single(Job *job)
>>   
>>   static void job_cancel_async(Job *job, bool force)
>>   {
>> +    if (job->driver->cancel) {
>> +        job->driver->cancel(job);
>> +    }
>>       if (job->user_paused) {
> 
> can job_cancel_async be reached more than once on the same BDS?

what do you mean by same BDS? On same job?

I don't think that job_cancel_async should be called several times during one "cancel" operation. But if it is, it's still safe enough with only .cancel implementation in [05], which just calls bdrv_cancel_in_flight() (which of course should be safe to call several times).

> 
>>           /* Do not call job_enter here, the caller will handle it.  */
>>           if (job->driver->user_resume) {
>>
> 


-- 
Best regards,
Vladimir


  reply	other threads:[~2021-01-21  9:34 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-18 18:04 [PATCH 00/11] mirror: cancel nbd reconnect Vladimir Sementsov-Ogievskiy
2020-11-18 18:04 ` [PATCH 01/11] block: add new BlockDriver handler: bdrv_cancel_in_flight Vladimir Sementsov-Ogievskiy
2021-01-20 22:27   ` Eric Blake
2021-01-21 18:50     ` Vladimir Sementsov-Ogievskiy
2020-11-18 18:04 ` [PATCH 02/11] block/nbd: implement .bdrv_cancel_in_flight Vladimir Sementsov-Ogievskiy
2021-01-20 23:13   ` Eric Blake
2020-11-18 18:04 ` [PATCH 03/11] block/raw-format: implement .bdrv_cancel_in_flight handler Vladimir Sementsov-Ogievskiy
2021-01-20 23:15   ` Eric Blake
2021-01-21 19:08     ` Vladimir Sementsov-Ogievskiy
2020-11-18 18:04 ` [PATCH 04/11] job: add .cancel handler for the driver Vladimir Sementsov-Ogievskiy
2021-01-20 23:17   ` Eric Blake
2021-01-21  9:32     ` Vladimir Sementsov-Ogievskiy [this message]
2020-11-18 18:04 ` [PATCH 05/11] block/mirror: implement .cancel job handler Vladimir Sementsov-Ogievskiy
2021-01-21  1:05   ` Eric Blake
2020-11-18 18:04 ` [PATCH 06/11] iotests/264: fix style Vladimir Sementsov-Ogievskiy
2021-01-21  1:13   ` Eric Blake
2020-11-18 18:04 ` [PATCH 07/11] iotests/264: move to python unittest Vladimir Sementsov-Ogievskiy
2021-01-21  1:17   ` Eric Blake
2021-01-21 19:29     ` Vladimir Sementsov-Ogievskiy
2020-11-18 18:04 ` [PATCH 08/11] iotests.py: qemu_nbd_popen: remove pid file after use Vladimir Sementsov-Ogievskiy
2021-01-21  1:19   ` Eric Blake
2020-11-18 18:04 ` [PATCH 09/11] iotests/264: add mirror-cancel test-case Vladimir Sementsov-Ogievskiy
2021-01-21  1:26   ` Eric Blake
2021-01-21 19:42     ` Vladimir Sementsov-Ogievskiy
2020-11-18 18:04 ` [PATCH 10/11] block/backup: implement .cancel job handler Vladimir Sementsov-Ogievskiy
2021-01-21  1:27   ` Eric Blake
2020-11-18 18:04 ` [PATCH 11/11] iotests/264: add backup-cancel test-case Vladimir Sementsov-Ogievskiy
2021-01-21  1:28   ` Eric Blake
2021-01-21  2:21     ` Eric Blake
2021-01-21 19:43       ` Vladimir Sementsov-Ogievskiy
2020-11-18 18:19 ` [PATCH 00/11] mirror: cancel nbd reconnect Eric Blake
2020-11-18 18:36   ` Vladimir Sementsov-Ogievskiy
2020-12-18 11:05 ` Vladimir Sementsov-Ogievskiy
2021-01-09 10:11   ` Vladimir Sementsov-Ogievskiy
2021-01-21  2:14 ` Eric Blake
2021-01-21 19:44   ` Vladimir Sementsov-Ogievskiy

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=3d7a2143-19b0-8f43-f7e9-49e40f1b16d0@virtuozzo.com \
    --to=vsementsov@virtuozzo.com \
    --cc=den@openvz.org \
    --cc=eblake@redhat.com \
    --cc=fam@euphon.net \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.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.