[libvirt] [PATCHv4] qemu: allow blkstat/blkinfo calls during migration

Eric Blake eblake at redhat.com
Mon May 23 19:10:19 UTC 2011


On 05/21/2011 01:21 AM, Paolo Bonzini wrote:
> On 05/21/2011 12:11 AM, Eric Blake wrote:
>> I think we're safe.  It shouldn't matter if thread 2 reads thread 3's
>> answer (because they are both read-only queries, and should be getting
>> the same answer; or even if the answers differ, reading the newer answer
>> is not horrible because it is still an accurate answer).
> 
> The queries could be for different disks, and one might fail.  The
> problem is mostly if the first fails and the second succeeds, and the
> program sees a success instead of a failure.
> 
> ... but a much simpler fix is to make statRetCode a pointer, so that
> there is nothing to do on the producer side after the flag has been
> reset.  I strongly suggest doing this, as it is a very simple change
> that Cannot Make Things Worse (TM).

Ah, that does make sense.  Instead of storing the answers directly in
the memory shared between query and migration loop, the shared memory
should instead store pointers to stack-local memory in the query code.
Thus, the migration loop writes back to unique memory, and the moment it
clears the condition flag, it doesn't matter if some other thread starts
overwriting the pointers, because the first caller now knows that its
answers are safe.

Federico, do you want to tackle this, or shall I?

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110523/4b50e6c6/attachment-0001.sig>


More information about the libvir-list mailing list