Re: [libvirt] [PATCHv2 10/15] blockjob: support pivot operation on cancel

2012-04-06 Thread Paolo Bonzini
Il 06/04/2012 06:36, Eric Blake ha scritto:
 If only qemu could get 'drive-reopen' inside 'transaction'...

Just a quick answer to this: if qemu could get 'drive-reopen' inside
'transaction', the standalone command could be made safe just as easily.
 In fact, in QEMU 1.1 the blockdev-snapshot-sync command got a similar
treatment: it became transactionable, _and_ the standalone command
became a simple wrapper around a 1-command transaction.

Paolo

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [PATCHv2 10/15] blockjob: support pivot operation on cancel

2012-04-06 Thread Eric Blake
On 04/06/2012 01:08 AM, Paolo Bonzini wrote:
 Il 06/04/2012 06:36, Eric Blake ha scritto:
 If only qemu could get 'drive-reopen' inside 'transaction'...
 
 Just a quick answer to this: if qemu could get 'drive-reopen' inside
 'transaction', the standalone command could be made safe just as easily.
  In fact, in QEMU 1.1 the blockdev-snapshot-sync command got a similar
 treatment: it became transactionable, _and_ the standalone command
 became a simple wrapper around a 1-command transaction.

Good point.  So unless we have a situation where we want to do
'drive-reopen' on multiple disks at once, we don't actually have to use
a transaction command to reopen a single disk.  Meanwhile, for
similarity with blockdev-snapshot-sync, it looks like I will someday be
adding a VIR_DOMAIN_BLOCK_JOB_ABORT_ATOMIC flag, which fails if qemu
lacks support for reopen within a transaction, and assuming that qemu
exposes a way to see which commands are transactionable.

-- 
Eric Blake   ebl...@redhat.com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Re: [libvirt] [PATCHv2 10/15] blockjob: support pivot operation on cancel

2012-04-06 Thread Paolo Bonzini
Il 06/04/2012 06:36, Eric Blake ha scritto:
 if
 'block_job_cancel' were made part of 'transaction', you could
 copy multiple disks at the same point in time without pausing
 the domain.

This is doable.

The transactioned command would do a qemu_aio_flush() in the prepare
phase, and a normal block_job_cancel in the commit phase.

 This also implies we may want to add a --quiesce
 flag to the pivot operation, so that when breaking a mirror, the
 side of the mirror that we are abandoning is at least in a stable
 state with regards to guest I/O.

I don't think this is needed.  Either it makes a difference so it should
be the default, or it doesn't and then it is not a useful knob.

Paolo

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [PATCHv2 10/15] blockjob: support pivot operation on cancel

2012-04-06 Thread Eric Blake
On 04/06/2012 09:19 AM, Paolo Bonzini wrote:
 Il 06/04/2012 06:36, Eric Blake ha scritto:
 if
 'block_job_cancel' were made part of 'transaction', you could
 copy multiple disks at the same point in time without pausing
 the domain.
 
 This is doable.
 
 The transactioned command would do a qemu_aio_flush() in the prepare
 phase, and a normal block_job_cancel in the commit phase.
 
 This also implies we may want to add a --quiesce
 flag to the pivot operation, so that when breaking a mirror, the
 side of the mirror that we are abandoning is at least in a stable
 state with regards to guest I/O.
 
 I don't think this is needed.  Either it makes a difference so it should
 be the default, or it doesn't and then it is not a useful knob.

I'm talking about the guest agent.  It may make a difference, but cannot
be the default, because you cannot trust the guest agent to be present.
 I'm thinking this will be like the --quiesce operation of
snapshot-create, as another situation where the guest agent quiesce can
usefully surround a 'transaction' command to improve the results, but
must not be default.

-- 
Eric Blake   ebl...@redhat.com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Re: [libvirt] [PATCHv2 10/15] blockjob: support pivot operation on cancel

2012-04-06 Thread Paolo Bonzini
Il 06/04/2012 17:28, Eric Blake ha scritto:
 I'm talking about the guest agent.  It may make a difference, but cannot
 be the default, because you cannot trust the guest agent to be present.
  I'm thinking this will be like the --quiesce operation of
 snapshot-create, as another situation where the guest agent quiesce can
 usefully surround a 'transaction' command to improve the results, but
 must not be default.

Ah, got it now.

Paolo

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list