diff options
| author | Peter Maydell | 2020-04-07 20:12:45 +0200 |
|---|---|---|
| committer | Peter Maydell | 2020-04-07 20:12:45 +0200 |
| commit | 2f37b0222cf9274d014fcb1f211b14ee626561c9 (patch) | |
| tree | 1fbda138b833507eb137fe7f5971417a5d64fd9a /blockdev.c | |
| parent | Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2020-04-07' in... (diff) | |
| parent | vpc: Don't round up already aligned BAT sizes (diff) | |
| download | qemu-2f37b0222cf9274d014fcb1f211b14ee626561c9.tar.gz qemu-2f37b0222cf9274d014fcb1f211b14ee626561c9.tar.xz qemu-2f37b0222cf9274d014fcb1f211b14ee626561c9.zip | |
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging
Block layer patches:
- Fix crashes and hangs related to iothreads, bdrv_drain and block jobs:
- Fix some AIO context locking in jobs
- Fix blk->in_flight during blk_wait_while_drained()
- vpc: Don't round up already aligned BAT sizes
# gpg: Signature made Tue 07 Apr 2020 15:25:24 BST
# gpg: using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74 56FE 7F09 B272 C88F 2FD6
* remotes/kevin/tags/for-upstream:
vpc: Don't round up already aligned BAT sizes
block: Fix blk->in_flight during blk_wait_while_drained()
block: Increase BB.in_flight for coroutine and sync interfaces
block-backend: Reorder flush/pdiscard function definitions
backup: don't acquire aio_context in backup_clean
replication: assert we own context before job_cancel_sync
job: take each job's lock individually in job_txn_apply
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'blockdev.c')
| -rw-r--r-- | blockdev.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/blockdev.c b/blockdev.c index fa8630cb41..5faddaa705 100644 --- a/blockdev.c +++ b/blockdev.c @@ -3612,7 +3612,16 @@ void qmp_block_job_finalize(const char *id, Error **errp) } trace_qmp_block_job_finalize(job); + job_ref(&job->job); job_finalize(&job->job, errp); + + /* + * Job's context might have changed via job_finalize (and job_txn_apply + * automatically acquires the new one), so make sure we release the correct + * one. + */ + aio_context = blk_get_aio_context(job->blk); + job_unref(&job->job); aio_context_release(aio_context); } |
