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>