]> git.proxmox.com Git - mirror_qemu.git/commit
blockjob: refactor backup_start as backup_job_create
authorJohn Snow <jsnow@redhat.com>
Tue, 8 Nov 2016 06:50:38 +0000 (01:50 -0500)
committerJeff Cody <jcody@redhat.com>
Tue, 15 Nov 2016 03:47:34 +0000 (22:47 -0500)
commit111049a4ecefc9cf1ac75c773f4c5c165f27fe63
tree60b90cb15047f7da10623da590f61c2500895cdc
parent5ccac6f186e4a480074880d958760c7105cf9ba8
blockjob: refactor backup_start as backup_job_create

Refactor backup_start as backup_job_create, which only creates the job,
but does not automatically start it. The old interface, 'backup_start',
is not kept in favor of limiting the number of nearly-identical interfaces
that would have to be edited to keep up with QAPI changes in the future.

Callers that wish to synchronously start the backup_block_job can
instead just call block_job_start immediately after calling
backup_job_create.

Transactions are updated to use the new interface, calling block_job_start
only during the .commit phase, which helps prevent race conditions where
jobs may finish before we even finish building the transaction. This may
happen, for instance, during empty block backup jobs.

Reported-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Signed-off-by: John Snow <jsnow@redhat.com>
Message-id: 1478587839-9834-6-git-send-email-jsnow@redhat.com
Signed-off-by: Jeff Cody <jcody@redhat.com>
block/backup.c
block/replication.c
blockdev.c
include/block/block_int.h