On 15.09.2015 08:11, Fam Zheng wrote: > Sometimes block jobs must execute as a transaction group. Finishing > jobs wait until all other jobs are ready to complete successfully. > Failure or cancellation of one job cancels the other jobs in the group. > > Signed-off-by: Stefan Hajnoczi <stefa...@redhat.com> > [Rewrite the implementation which is now contained in block_job_completed. > --Fam] > Signed-off-by: Fam Zheng <f...@redhat.com> > --- > blockjob.c | 135 > ++++++++++++++++++++++++++++++++++++++++++++++- > include/block/block.h | 1 + > include/block/blockjob.h | 38 +++++++++++++ > 3 files changed, 172 insertions(+), 2 deletions(-) >
[...] > diff --git a/include/block/blockjob.h b/include/block/blockjob.h > index f6e4c86..4999682 100644 > --- a/include/block/blockjob.h > +++ b/include/block/blockjob.h [...] > @@ -395,4 +398,39 @@ void block_job_defer_to_main_loop(BlockJob *job, [...] > + > +/** > + * block_job_txn_add_job: > + * @txn: The transaction (may be NULL) > + * @job: Job to add to the transaction > + * > + * Add @job to the transaction. The @job must not already be in a > transaction. > + * The block job driver must call block_job_txn_unref() in the end to release > + * the reference that is automatically grabbed here. Ah, this looks like I got the right version this time. *cough cough* So, to repeat myself: To me that sounds a bit as if this should be called e.g. in block/backup.c:backup_complete(). Maybe add that this is called automatically by block_job_completed()? Either way: Reviewed-by: Max Reitz <mre...@redhat.com> > + */ > +void block_job_txn_add_job(BlockJobTxn *txn, BlockJob *job); > + > #endif
signature.asc
Description: OpenPGP digital signature