Red Hat Bugzilla – Bug 813810
plug small race window at the end of block_stream command
Last modified: 2012-06-20 07:46:51 EDT
Kevin noted how the part of stream_run() that is after the for loop runs with s->common.busy = false. At least bdrv_change_backing_file() can yield, possibly other functions, too.
The race window is really small but it's there. We can extend the implementation of block_job_cancel_sync so that the race can be fixed easily.
The same patches help fixing the case where the target of a mirroring job fails during block_job_cancel_sync, as suggested by Marcelo.
[To qa: it is very hard to cover these particular cases with tests, but the streaming and mirroring tests---for example switching mirroring to the target, and quit during streaming---will ensure that the code works well].
Technical note added. If any revisions are required, please edit the "Technical Notes" field
accordingly. All revisions will be proofread by the Engineering Content Services team.
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.