qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [PATCH v4 0/6] jobs: fix transactional race condition


From: Jeff Cody
Subject: Re: [Qemu-block] [PATCH v4 0/6] jobs: fix transactional race condition
Date: Wed, 9 Nov 2016 11:21:18 -0500
User-agent: Mutt/1.5.24 (2015-08-30)

On Tue, Nov 08, 2016 at 01:50:33AM -0500, John Snow wrote:
> There are a few problems with transactional job completion right now.
> 
> First, if jobs complete so quickly they complete before remaining jobs
> get a chance to join the transaction, the completion mode can leave well
> known state and the QLIST can get corrupted and the transactional jobs
> can complete in batches or phases instead of all together.
> 
> Second, if two or more jobs defer to the main loop at roughly the same
> time, it's possible for one job's cleanup to directly invoke the other
> job's cleanup from within the same thread, leading to a situation that
> will deadlock the entire transaction.
> 
> Thanks to Vladimir for pointing out these modes of failure.
> 
> ===
> v4:
> ===
> 
> Key:
> [----] : patches are identical
> [####] : number of functional differences between upstream/downstream patch
> [down] : patch is downstream-only
> The flags [FC] indicate (F)unctional and (C)ontextual differences, 
> respectively
> 
> 001/6:[----] [--] 'blockjob: fix dead pointer in txn list'
> 002/6:[----] [--] 'blockjob: add .clean property'
> 003/6:[----] [--] 'blockjob: add .start field'
> 004/6:[0021] [FC] 'blockjob: add block_job_start'
> 005/6:[0010] [FC] 'blockjob: refactor backup_start as backup_job_create'
> 006/6:[----] [--] 'iotests: add transactional failure race test'
> 
> 04: Fix command tracers (Kevin)
>     Implement the ability to 'start' a 'paused' job (Kevin, Jeff)
> 05: Replace superfluous conditionals with assertions. (Kevin, Jeff)
> 
> ===
> v3:
> ===
> 
> - Rebase to origin/master, requisite patches now upstream.
> 
> ===
> v2:
> ===
> 
> - Correct Vladimir's email (Sorry!)
> - Add test as a variant of an existing test [Vladimir]
> 
> ________________________________________________________________________________
> 
> For convenience, this branch is available at:
> https://github.com/jnsnow/qemu.git branch job-fix-race-condition
> https://github.com/jnsnow/qemu/tree/job-fix-race-condition
> 
> This version is tagged job-fix-race-condition-v4:
> https://github.com/jnsnow/qemu/releases/tag/job-fix-race-condition-v4
> 
> John Snow (5):
>   blockjob: add .clean property
>   blockjob: add .start field
>   blockjob: add block_job_start
>   blockjob: refactor backup_start as backup_job_create
>   iotests: add transactional failure race test
> 
> Vladimir Sementsov-Ogievskiy (1):
>   blockjob: fix dead pointer in txn list
> 
>  block/backup.c               | 63 +++++++++++++++++++---------------
>  block/commit.c               |  6 ++--
>  block/mirror.c               |  7 ++--
>  block/replication.c          | 12 ++++---
>  block/stream.c               |  6 ++--
>  block/trace-events           |  6 ++--
>  blockdev.c                   | 81 
> ++++++++++++++++++++++++++++----------------
>  blockjob.c                   | 58 ++++++++++++++++++++++++-------
>  include/block/block_int.h    | 23 +++++++------
>  include/block/blockjob.h     |  9 +++++
>  include/block/blockjob_int.h | 11 ++++++
>  tests/qemu-iotests/124       | 53 +++++++++++++++++++----------
>  tests/qemu-iotests/124.out   |  4 +--
>  tests/test-blockjob-txn.c    | 12 +++----
>  14 files changed, 228 insertions(+), 123 deletions(-)
> 
> -- 
> 2.7.4
> 

Thanks,

Applied to my block branch:

git://github.com/codyprime/qemu-kvm-jtc.git block

-Jeff



reply via email to

[Prev in Thread] Current Thread [Next in Thread]