From 3453d97243c72988c89a0105fa9546890eae7bd4 Mon Sep 17 00:00:00 2001 From: Kevin Wolf Date: Mon, 23 Apr 2018 12:24:16 +0200 Subject: job: Move .complete callback to Job This moves the .complete callback that tells a READY job to complete from BlockJobDriver to JobDriver. The wrapper function job_complete() doesn't require anything block job specific any more and can be moved to Job. Signed-off-by: Kevin Wolf Reviewed-by: Max Reitz --- job.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'job.c') diff --git a/job.c b/job.c index 3772a35fcf..8ceac0b01e 100644 --- a/job.c +++ b/job.c @@ -556,6 +556,22 @@ int job_finalize_single(Job *job) return 0; } +void job_complete(Job *job, Error **errp) +{ + /* Should not be reachable via external interface for internal jobs */ + assert(job->id); + if (job_apply_verb(job, JOB_VERB_COMPLETE, errp)) { + return; + } + if (job->pause_count || job_is_cancelled(job) || !job->driver->complete) { + error_setg(errp, "The active block job '%s' cannot be completed", + job->id); + return; + } + + job->driver->complete(job, errp); +} + typedef struct { Job *job; -- cgit v1.2.3