On Fri, Jan 15, 2016 at 9:37 AM, Michal Privoznik <mprivozn(a)redhat.com>
wrote:
On 14.01.2016 19:51, Yaniv Kaul wrote:
> On Fri, Jan 8, 2016 at 7:00 PM, Michal Privoznik <mprivozn(a)redhat.com>
> wrote:
>
>> > On 30.12.2015 11:30, Yaniv Kaul wrote:
>>> > > Hi,
>>> > >
>> >
>> > Hey,
>> >
>> > sorry for getting to you so late.
>> >
>>> > > I'm trying to debug this issue, which may be affecting my
inability to
>>> > > perform live snapshot.
>>> > > 1. I'm not sure what 'Waking up a tragedian" in the
debug log
means -
>> > what
>>> > > exactly is a tragedian?
>> >
>> >
>> > It's the thread that has issued the change state API (shutdown,
reboot,
>> > ..) and it's waiting for confirmation on the monitor. For instance,
mgmt
>> > app issues virDomainPMSuspendForDuration() which in qemu driver is
>> > implemented via some agent calls. So the flow is like this:
>> >
>> > 1) the control gets to qemuDomainPMSuspendForDuration()
>> > 2) libvirt does some checks and issues 'guest-suspend-disk'
command
(or
>> > corresponding command to the selected target).
>> > 3) qemu-ga running inside guest tries (!) to suspend the guest (it may
>> > not necessarily succeed)
>> > 4) meanwhile, as guest is writing something onto disk (saving its RAM
-
>> > but one is unable to tell from outside), the libvirt API is blocked
>> > 5) finally, guest kernel calls 'HALT' to which qemu responds by
sending
>> > libvirt 'RESET' event
>> > 6) the libvirt event loop finds out that an event occurred on the
domain
>> > monitor and calls callback
>> > 7) the callback will wake up the sleeping API if the event the API is
>> > waiting for matches the one obtained on the monitor
>> >
>>> > > 2. In any case, it'd be great if the WARN would mention
mon->await_event
>> > -
>>> > > is it the event libvirt is actually waiting for?
>> >
>> > Sure, that would be much more helpful - mind posting a patch?
>> >
> Attached and tested. I can't post it properly, as the git is a bit
'dirty'
> with some po files that I can't clean:
>
> On branch workbranch
> Your branch is up-to-date with 'origin/master'.
> Changes not staged for commit:
> (use "git add <file>..." to update what will be committed)
> (use "git checkout -- <file>..." to discard changes in working
directory)
>
> modified: po/ar.po
> modified: po/as.po
> modified: po/bg.po
> modified: po/bn.po
> modified: po/bn_IN.po
> modified: po/bs.po
> modified: po/ca.po
> modified: po/cs.po
> modified: po/cy.po
> modified: po/da.po
> modified: po/de.po
> modified: po/el.po
> modified: po/en_GB.po
> modified: po/es.po
> modified: po/et.po
> modified: po/fi.po
> modified: po/fr.po
> modified: po/gl.po
> modified: po/gu.po
> modified: po/he.po
> modified: po/hi.po
I guess you were doing 'make dist' or 'make rpm'. Both of them result in
generating of translation strings. Anyway, you can just drop them and
have clean working tree: git checkout po/
Indeed, I've used 'make rpm', as I could not get 'sudo make install'
correctly install libvirt on my Fedora - failed to get the right
directories set in the './configure' script.
I wish it would have auto-detected Fedora and used the right defaults.
After failing to do so normally, I went and look again into
libvirt.org -
where I failed to find 'how to contribute' document.
Only today I've found
http://libvirt.org/compiling.html - which has a hint
to use ''--system' to autogen.sh - perhaps it should be on by default?
That's part of a bigger problem - no 'how to contribute' section that
easily found on the site. Using search, I've found first hit to an email
archived[1] which pointed me to [2] - which is the right document, probably
in the wrong place (under internals?). And that one didn't have the hint
above...
[1]
http://www.redhat.com/archives/libvir-list/2014-April/msg00004.html
[2]
http://libvirt.org/hacking.html
>
> ...
>
> Thanks,
> Y.
>
>
>>> > >
>>> > > (Both from qemu/qemu_agent.c)
>>> > > 3. I reckon event 3 is QEMU_AGENT_EVENT_RESET ? (from
qemu/qemu_agent.h)
>>> > >
>> >
>> > Correct.
>> >
>>> > > 4. I'm also getting 'End of file while reading data:
Input/output
error'
>>> > > messages, not sure what they mean yet.
>> >
>> >
>> > Usually they mean crashing daemon. If you are able to get a stacktrace
>> > please do share it somewhere.
>> >
>> > Michal
>> >
>
>
> qemu_agent.c.diff
>
>
> diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
> index f979f82..924c177 100644
> --- a/src/qemu/qemu_agent.c
> +++ b/src/qemu/qemu_agent.c
> @@ -1241,7 +1241,7 @@ void qemuAgentNotifyEvent(qemuAgentPtr mon,
> }
> } else {
> /* shouldn't happen but one never knows */
> - VIR_WARN("Received unexpected event %d", event);
> + VIR_WARN("Received unexpected event %d (expected %d)", event,
mon->await_event);
> }
> }
>
ACKed and pushed. I've committed the patch under your name. I hope
that's okay with you.
Yes, much appreciated - tried to send the patch but perhaps it doesn't work
easily via GMail.
Y.
Michal