
On 06/17/2014 01:58 AM, Peter Krempa wrote:
On 06/16/14 23:58, Eric Blake wrote:
When the block job event was first added, it was for block pull, where the active layer of the disk remains the same name. It was also in a day where we only cared about local files, and so we always had a canonical absolute file name. But two things have changed since then: we now have network disks, where determining a single absolute string does not really make sense; and we have two-phase jobs (copy and active commit) where the name of the active layer changes between the first event (ready, on the old name) and second (complete, on the pivoted name).
+++ b/daemon/remote.c @@ -558,7 +558,7 @@ remoteRelayDomainEventGraphics(virConnectPtr conn, static int remoteRelayDomainEventBlockJob(virConnectPtr conn, virDomainPtr dom, - const char *path, + const char *disk, int type, int status, void *opaque)
The original event will still return the path, so I think this hunk should be dropped.
True enough - anywhere where there are sibling functions, I can use const char *path for the old one, and const char *dst for the new one, to make it apparent which string to pass; while leaving *disk as the name of the variable for code shared by both events.
+++ b/include/libvirt/libvirt.h.in @@ -4852,13 +4852,24 @@ typedef enum { * virConnectDomainEventBlockJobCallback: * @conn: connection object * @dom: domain on which the event occurred - * @disk: fully-qualified filename of the affected disk + * @disk: name associated with the affected disk
The two possible values stored here should also be mentioned here or a note to read the text below. I would have skipped the blob below if I'd find something that looks relevant here.
Okay, I'll try again in v3. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org