Am 24.02.2018 um 00:51 hat John Snow geschrieben: > For jobs that have reached their CONCLUDED state, prior to having their > last reference put down (meaning jobs that have completed successfully, > unsuccessfully, or have been canceled), allow the user to dismiss the > job's lingering status report via block-job-dismiss. > > This gives management APIs the chance to conclusively determine if a job > failed or succeeded, even if the event broadcast was missed. > > Note that jobs do not yet linger in any such state, they are freed > immediately upon reaching this previously-unnamed state. such a state is > added immediately in the next commit. > > Verbs: > Dismiss: operates on CONCLUDED jobs only.
You want to insert an empty line here. > Signed-off-by: John Snow <js...@redhat.com> > --- > block/trace-events | 1 + > blockdev.c | 14 ++++++++++++++ > blockjob.c | 34 ++++++++++++++++++++++++++++++++-- > include/block/blockjob.h | 9 +++++++++ > qapi/block-core.json | 24 +++++++++++++++++++++++- > 5 files changed, 79 insertions(+), 3 deletions(-) > @@ -841,6 +865,9 @@ void *block_job_create(const char *job_id, const > BlockJobDriver *driver, > block_job_txn_add_job(txn, job); > } > > + /* For the expanded job control STM, grab an extra > + * reference for finalize() to put down */ Do you mean dismiss()? > + block_job_ref(job); > return job; > } > > @@ -859,6 +886,9 @@ void block_job_pause_all(void) > > void block_job_early_fail(BlockJob *job) > { > + /* One for creation, one for finalize() */ And here? > + assert(job->status == BLOCK_JOB_STATUS_CREATED); > + block_job_unref(job); > block_job_unref(job); > } Kevin