[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 04/11] job: add .cancel handler for the driver
From: |
Eric Blake |
Subject: |
Re: [PATCH 04/11] job: add .cancel handler for the driver |
Date: |
Wed, 20 Jan 2021 17:17:06 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 |
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?
> /* Do not call job_enter here, the caller will handle it. */
> if (job->driver->user_resume) {
>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
- Re: [PATCH 04/11] job: add .cancel handler for the driver,
Eric Blake <=