Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 11 Jun 2014 23:26:13 +0400
From:      Roman Bogorodskiy <novel@FreeBSD.org>
To:        Craig Rodrigues <rodrigc@FreeBSD.org>
Cc:        "freebsd-testing@freebsd.org" <freebsd-testing@freebsd.org>, Roman Bogorodskiy <bogorodskiy@gmail.com>, "freebsd-virtualization@freebsd.org" <freebsd-virtualization@freebsd.org>
Subject:   Re: libvirt and bhyve problems
Message-ID:  <20140611192611.GF2855@kloomba>
In-Reply-To: <20140611192514.GE2855@kloomba>
References:  <CAG=rPVfWBsSWKQw%2BsnOEoe7iK8vTg7Uw2S01DxzA3DPi4UkNAQ@mail.gmail.com> <20140610175420.GC61743@kloomba> <CAG=rPVcgR4oP3-K_Mfih3xbtD5=99HW9z9L7aK11K7MtjRXtoA@mail.gmail.com> <20140610191439.GA220@kloomba> <CAG=rPVeKCW7WE=XUTkv_fzuqoEz8VTYb3gXOuKsVZFiczkat-Q@mail.gmail.com> <CAG=rPVd_oqrPXjMdSLJdoLM0AfB5eP4yh1_UgnaxYhP4%2BabdWw@mail.gmail.com> <CAG=rPVdWJZX9ZPinM5AqPgGocVnPQLfFbQuyRx-rhhSR1jPa=A@mail.gmail.com> <20140611182101.GD2855@kloomba> <CAG=rPVffHEFNUwtp4uFk_Sye1iMYixRaJ6D9v-LHjyUKJgkQ0g@mail.gmail.com> <20140611192514.GE2855@kloomba>

next in thread | previous in thread | raw e-mail | index | archive | help

--pE2VAHO2njSJCslu
Content-Type: multipart/mixed; boundary="JcvBIhDvR6w3jUPA"
Content-Disposition: inline


--JcvBIhDvR6w3jUPA
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

  Roman Bogorodskiy wrote:

>   Craig Rodrigues wrote:
>=20
> > On Wed, Jun 11, 2014 at 11:21 AM, Roman Bogorodskiy <novel@freebsd.org>=
 wrote:
> > >
> > > Thanks for the analysis! I'll think what would be a proper fix for th=
at
> > > problem.
> > >
> > > Also, while thinking how to reproduce it, I did 'kldunload if_bridge'
> > > and started to see the same problem. So, as a temporary fix, could you
> > > check if you have bridge support available (in kernel or via module)?
> > >
> > > Bridges are needed to get networking anyway.
> >=20
> >=20
> > Hi,
> >=20
> > My output of kldstat is:
> >=20
> >  1   29 0xffffffff80200000 19d6218  kernel
> >  2    1 0xffffffff81bd7000 2e44b0   zfs.ko
> >  3    2 0xffffffff81ebc000 8208     opensolaris.ko
> >  4    1 0xffffffff81ec5000 4d68     nmdm.ko
> >  5    1 0xffffffff81eca000 1a2110   vmm.ko
> >  6    1 0xffffffff82211000 53e7     fdescfs.ko
> >  7    1 0xffffffff82217000 9aff     if_bridge.ko
> >  8    1 0xffffffff82221000 5851     bridgestp.ko
> >  9    1 0xffffffff82227000 5673     if_tap.ko
> > 10    1 0xffffffff8222d000 2a94     uhid.ko
> > 11    1 0xffffffff82230000 3592     ums.ko
> >=20
> >=20
> > so I do have if_bridge.ko loaded.
>=20
> I've attached a patch which should fix the segfault. Could you please
> let me know if it fixes the problem?
>=20
> However, we still need to figure out why networking is not being
> enabled. The root cause of that is that libvirt should start the default
> network when the daemon starts up. This network should create a bridge
> device (virbr0).
>=20
> Later on, when one starts a guest, it should create tap device and add
> it to the bridge. Obviously, it fails at this step as there's no bridge
> device.
>=20
> Could you please send me config.log file and also a port directory with
> your fixes so I could test it as well?
>=20
> As for your previous question on my setup, I'm using master branch of the
> libvirt git repo and my configure args are:
>=20
> $ ./configure --with-bhyve --without-polkit --with-hal \
>   CFLAGS=3D"-g -O0 -I/usr/local/include" LDFLAGS=3D-L/usr/local/lib \
>   --with-xml-catalog-file=3D/usr/local/share/xml/catalog
>=20
> I'm working on 10-STABLE.
>=20
> However, it's really bad if it works only this way. :-( I would love to
> fix the port.
>=20
> > If you are doing development on CURRENT, make sure that you have
> > WITH_LLDB=3Dyes in /etc/src.conf when you rebuild the system.
> > Looks like gdb in base cannot debug the cores.
>=20
> Thanks for the hint!

Sorry, forgot the actual attachment. :-(


Roman Bogorodskiy

--JcvBIhDvR6w3jUPA
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="libvirt_no_bridge.diff"
Content-Transfer-Encoding: quoted-printable

diff --git a/src/bhyve/bhyve_command.c b/src/bhyve/bhyve_command.c
index 91a8731..ba7a7ec 100644
--- a/src/bhyve/bhyve_command.c
+++ b/src/bhyve/bhyve_command.c
@@ -44,7 +44,7 @@ bhyveBuildNetArgStr(const virDomainDef *def, virCommandPt=
r cmd, bool dryRun)
     virDomainNetDefPtr net =3D NULL;
     char *brname =3D NULL;
     char *realifname =3D NULL;
-    int *tapfd =3D NULL;
+    int tapfd =3D -1;
     char macaddr[VIR_MAC_STRING_BUFLEN];
=20
     if (def->nnets !=3D 1) {
@@ -80,7 +80,7 @@ bhyveBuildNetArgStr(const virDomainDef *def, virCommandPt=
r cmd, bool dryRun)
=20
         if (!dryRun)
             if (virNetDevTapCreateInBridgePort(brname, &net->ifname, &net-=
>mac,
-                                               def->uuid, tapfd, 1,
+                                               def->uuid, &tapfd, 1,
                                                virDomainNetGetActualVirtPo=
rtProfile(net),
                                                virDomainNetGetActualVlan(n=
et),
                                                VIR_NETDEV_TAP_CREATE_IFUP =
| VIR_NETDEV_TAP_CREATE_PERSIST) < 0) {
diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c
index 9f02a49..5e7d603 100644
--- a/src/bhyve/bhyve_process.c
+++ b/src/bhyve/bhyve_process.c
@@ -77,10 +77,12 @@ bhyveNetCleanup(virDomainObjPtr vm)
         int actualType =3D virDomainNetGetActualType(net);
=20
         if (actualType =3D=3D VIR_DOMAIN_NET_TYPE_BRIDGE) {
-            ignore_value(virNetDevBridgeRemovePort(
-                            virDomainNetGetActualBridgeName(net),
-                            net->ifname));
-            ignore_value(virNetDevTapDelete(net->ifname));
+            if (net->ifname) {
+                ignore_value(virNetDevBridgeRemovePort(
+                                virDomainNetGetActualBridgeName(net),
+                                net->ifname));
+                ignore_value(virNetDevTapDelete(net->ifname));
+            }
         }
     }
 }

--JcvBIhDvR6w3jUPA--

--pE2VAHO2njSJCslu
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.13 (FreeBSD)

iQEcBAEBAgAGBQJTmK1TAAoJEMltX/4IwiJqn8UIAIUivJv+T4xtI4WegKxiSITj
oKCnk55jxrhO4maLg6mZcDNTp1U3zAFIpl1+YKMyk5D9Z4hJ1xTYUu6lyNxBZk/B
H9eKiC51PO7Kn0RQE3/Bv79S3pLg5ltszbvWnemCLFX4v7+QLDXgL4+ldCN9+qLc
AHZ3XlCqLIXg6NZ9C44pQbXYravoUdrTGCKHiYp4pEdRXRkUJwx/kbHXB0YBdLJH
9YZDcN7VhcC/o3ky33L2u3UjDnfl4+CnIvR6JSPGOurreyuhaHi906glZws2vQA+
5fsdqSPeDXoaTnLRO+KlO8ECwl6x/VPZsFxXOMFNMq2K2pmIbkEBipQcOmH306c=
=1S7U
-----END PGP SIGNATURE-----

--pE2VAHO2njSJCslu--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140611192611.GF2855>