[libvirt] [PATCH 00/11] Generic data stream handling
Daniel P. Berrange
berrange at redhat.com
Wed Sep 16 20:54:25 UTC 2009
On Wed, Sep 16, 2009 at 09:35:21AM +0200, Chris Lalancette wrote:
> Daniel P. Berrange wrote:
> > On Tue, Sep 15, 2009 at 02:35:02PM +0200, Chris Lalancette wrote:
> >> I've uploaded the code that I'm trying out at the moment to:
> >>
> >> http://gitorious.org/~clalance/libvirt/clalance-staging/commits/tunnelled-migration
> >>
> >> Dan, can you take a look and make any suggestions about where I might be going
> >> wrong?
> >
> > I've not look at your migration code yet, but there's a mistake in your
> > change to the test driver.
> >
> > http://gitorious.org/~clalance/libvirt/clalance-staging/commit/e77dc1f1ba4e18b4fc6a70198c2f3b253609dc42
> >
> > The test driver is delibrately not using saferead/write because those
> > helpers do not handle EAGAIN. If you get EGAIN they'll return -1 and
> > you are left with no idea how much data you've written which is not
> > helpful :-) At very least this will cause the stream to terminate with
> > an error message. If I got something wrong, perhaps its causing a crash.
>
> Ah, I see. I've switched that back, and switched over my tunnelled
> implementation as well, but it doesn't seem to have an effect on my problem.
I still see a safewrite() in the your virStreamWrite() impl in the
code currently pushed to gitorious.or, but perhaps you've changed
that locally already. The other thing is that if the stream open
flags included VIR_STREAM_NONBLOCK, you must make sur eyou put your
socket in non-blocking mode, eg
if ((st->flags & VIR_STREAM_NONBLOCK) &&
virSetNonBlock(create ? fds[1] : fds[0]) < 0) {
virReportSystemError(st->conn, errno, "%s",
_("cannot make stream non-blocking"));
goto error;
}
in your stream open method. That shouldn't have caused a crash though - it
would merely make libvirtd non-responsive for a while it QEMU blocked
the incoming migration socket.
All in all though the code looks reasonable and I don't see any obvious
problems. I'll have to try running it to see if any crash appears....
Regards,
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