[libvirt] [PATCH 5/5] read saved vm status on libvirtd startup

Daniel P. Berrange berrange at redhat.com
Mon Jan 12 15:45:27 UTC 2009


On Mon, Jan 12, 2009 at 04:37:50PM +0100, Guido G?nther wrote:
> On Mon, Jan 12, 2009 at 11:30:19AM +0000, Daniel P. Berrange wrote:
> > There's different needs for each file descriptor
> > 
> >  - stdin_fd  - this is only ever used for incoming migration data
> >    all other times it is hooked up to /dev/null. So we don't need
> >    to keep this FD around at all
> Agreed.
> 
> >  - stdout_fd - AFAIK, the only time we get any data on stdout is
> >    when we run qemu -help to check support args. Current code will
> >    read & log all data on stdout, but I believe this is effectively
> >    nothing and so we could just hook it to /dev/null & ignore it
> We can just dup that one too while at it in case qemu/kvm should dump
> anything else there.
> 
> >  - stderr_fd - libvirtd reads this FD & logs the data to the domain
> >    logfile in /var/log/libvirt/qemu/$NAME.log. Instead of having
> >    the daemon process this logging, we can just dup() the file straight
> >    onto the logfile FD, so data will be logged even when libvirtd is
> >    not running. The only minor complication is that we need to parse
> >    the logfile to get the monitor TTY path.
> There's one more thing (which was my intial reason for asking): we also use
> this fd in qemudDispatchVMEvent() to detect vm shutdown:
> 
>       if (events & VIR_EVENT_HANDLE_READABLE) {
>             if (qemudVMData(driver, vm, fd) < 0)
>                 failed = 1;
>         } else {
>             quit = 1;
>         }
>     }
> 
>     if (failed || quit) {
>         event = virDomainEventNewFromObj(vm,
>                                          VIR_DOMAIN_EVENT_STOPPED,
>                                          quit ?
>                                          VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN
> :
>                                          VIR_DOMAIN_EVENT_STOPPED_FAILED);
>         qemudShutdownVMDaemon(NULL, driver, vm);
>         if (!vm->persistent) {
>             virDomainRemoveInactive(&driver->domains,
>                                     vm);
>             vm = NULL;
>         }
> 
> Using the monitor fd for this instead should work. Would that be o.k.?

Yeah, I thought it was already using the monitor FD for this !

Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list