[libvirt] [PATCH 0/3] A couple of UML-related fixes

Daniel P. Berrange berrange at redhat.com
Thu Aug 12 12:21:21 UTC 2010


On Thu, Aug 12, 2010 at 11:08:16AM +0200, Soren Hansen wrote:
> I've been trying to get UML working for the last couple of days. As it stands,
> at least bridged networking doesn't work for me.  I've got a fix, but I'm not
> sure I'm doing it right.
> 
> I can get it to fail in three distinct ways:
> 
>  * With the current code, it seems that the tap device disappears almost
>    immediately. This happens becuase the call to brAddTap includes an
>    (int *)tapfd argument, so the tap device isn't persistent. A few
>    lines after brAddTap, close(tapfd) is called and the tap device goes
>    missing.

Yep, this is a regression we introduced. It definitely needs to be
persistent.

>  * Passing a NULL tapfd argument to brAddTap and removing the call to
>    close(tapfd) makes the tapfd persist, but when the uml domain
>    attempts to bring up the interface, it fails with EBUSY. This turns
>    out to be because brAddTap marks the tap device persistent, but
>    doesn't close the fd, so both libvirt and uml have the fd open and
>    that's doesn't work out well.

Ah, good point.

>  * Finally, I tried passing the tapfd result back up the call chain so
>    that I have a list of them that I could tell virExecDaemonize to keep
>    open and then close them in libvirt after the fork. I think this is
>    when I got EPERM when trying to bring the interface up in UML domain,
>    but I'm not sure right now.

Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.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