[libvirt] [PATCH v3 0/7] extend virsh domstate to show additional information

Daniel P. Berrangé berrange at redhat.com
Thu Apr 4 10:32:12 UTC 2019


On Thu, Apr 04, 2019 at 11:59:50AM +0200, Bjoern Walk wrote:
> Daniel P. Berrangé <berrange at redhat.com> [2019-04-04, 09:49AM +0100]:
> > On Thu, Apr 04, 2019 at 10:01:27AM +0200, Bjoern Walk wrote:
> > > This patch series introduces the ability to save additional information
> > > for the domain state and exposes this information in virsh domstate.
> > > 
> > > For example in the case of QEMU guest panic events, we can provide additional
> > > information like the crash reason or register state of the domain. This
> > > information usually gets logged in the domain log but for debugging it is
> > > useful to have it accessible from the client. Therefore, let's introduce a new
> > > public API function, virDomainGetStateParams, an extensible version of
> > > virDomainGetState, which returns the complete state of the domain, including
> > > newly introduced additional information.
> > > 
> > > Let's also extend virsh domstate and introduce a new parameter --info to show
> > > the domain state, reason and additional information when available.
> > > 
> > >     virsh # domstate --info guest-1
> > >     crashed (panicked)
> > >     s390.core     = 0
> > >     s390.psw-mask = 0x0002000180000000
> > >     s390.psw-addr = 0x000000000010f146
> > >     s390.reason   = disabled-wait
> > 
> > This info is all just guest panick related data, so I'm not covinced we
> > should overload  "domstate" for this random set of low level hardware
> > parameters.
> 
> I want to have a flexible and extensible API function for all states
> that provide any additional information. The crashed/panicked state just
> happens to be the only one that does currently... We discussed the API
> in v1 here: https://www.redhat.com/archives/libvir-list/2018-July/msg00690.html
> 
> > Why not just have  virDomainGetPanicInfo() and "virsh dompanicinfo"
> 
> Do we want to later add an additional public API function per state that
> implements any additional information?

I guess the obvious extra thing to want to report is CPU registers, since
the crash info is largely containing register and/or memory address info.

QEMU has "info registers" but no QMP variant of it at this time.

With this in mind though, the proposed API is not satisfactory. Specifically
the  field

  # define VIR_DOMAIN_STATE_PARAM_TYPE "info_type"

As that assumes an either / or reporting need.  If we added register
info, then we would potentially need to report crash info *and* register
info at the same time.

I think this is easy to solve though - just delete the
VIR_DOMAIN_STATE_PARAM_TYPE field as it is redundant. Apps can just
look at whatever named parameters exist & use those they care about.

The more critical thing is that in an SMP system, we'll need to report
registers per CPU, but this API is a per-VM level reporting.

This is something we do with virDomainGetCPUStats().

So I think we need a design closer to that API, and perhaps call it
"virDomainGetCPUState"  / virsh  domcpustate


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list