On Fri, Nov 03, 2006 at 10:38:18AM -0500, Lon Hohberger wrote:
There's already one for saving live domains:
int virDomainSave(virDomainPtr domain, const char *to);
Why not use a similar API for a function which does the equivalent of
'xm dump' ?
I assume you mean 'xm dump-core' actually
int virDomainDump(virDomainPtr domain, const char *to, int flags);
Create a kernel dump of the domain in the path contained in *to. This
API must fail if the domain is not in a panicked/crashed state.
If you set the lowest-bit in flags, however, you can override this
behavior: if the lowest bit is set, the domain will first be crashed
(similar to SysRq-C) - then a dump will be taken from that.
Why?
In the event that a cluster node needs to fence a Xen domain (or other
management tools, to be sure), we could use the API to generate a core
of the domain (if it panicked) to help debug the problem prior to
restarting the domain.
The 'crash-before-dump' bit is just something someone might want to use
at some point; I don't think it is absolutely necessary - but it doesn't
hurt anything either.
Okay I can see how this would be useful, the questions I would have would be:
- how generic is this, i.e. suppose a different hypervisor back-end
would this still make sense. I guess yes, for example with an UML
back-end we could check the process status and force a dump with a
signal and move the core to the given file not trivial but same semantic
would be doable.
- can we implement it with current xen, again yes, we should be able
if we have a full connection (root) to do the same as 'xm dump-core'
- is the API clean enough, I guess the semantic is relatively clear
instead of stating 'If you set the lowest-bit in flags' I would rather
define a DumpFlags enum and state that flags is an or'ing of any of them
I would probably name the function virDomainDumpCore though to not
confuse with virDomainSave
So yes, why not, you want to work on it ? Or should I (or any candidate).
Daniel
--
Red Hat Virtualization group
http://redhat.com/virtualization/
Daniel Veillard | virtualization library
http://libvirt.org/
veillard(a)redhat.com | libxml GNOME XML XSLT toolkit
http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine
http://rpmfind.net/