Quoting Kristof Provost <k...@freebsd.org> (from Mon, 28 Sep 2020 13:53:16 +0200):

On 28 Sep 2020, at 12:45, Alexander Leidinger wrote:
Quoting Kristof Provost <k...@freebsd.org> (from Sun, 27 Sep 2020 17:51:32 +0200):
Here’s an early version of a task queue based approach: http://people.freebsd.org/~kp/0001-bridge-Cope-with-if_ioctl-s-that-sleep.patch

That still needs to be cleaned up, but this should resolve the sleep issue and the LOR.

There are some issues... seems like inside a jail I can't ping systems outside of the hardware.

Bridge setup:
   - member jail A
   - member jail B
   - member external_if of host

If I ping the router from the host, it works. If I ping from one jail to another, it works. If I ping from the jail to the IP of the external_if, it works. If I ping from a jail to the router, I do not get a response.

Can you check for 'failed ifpromisc' error messages in dmesg? And verify that all bridge member interfaces are in promiscuous mode?

I have a panic for you...:
- startup still in progress = 22 jails in startup, somewhere after a few jails started the panic happened
 - tcpdump was running on the external interface
- a ping to a jail IP from another system was running, the first ping went through, then it paniced

First regarding your questions about promisc mode: no error, but the promisc mode is directly disabled again on all interfaces.

Data (external_if = igb0, jail epairs are j_X_Yif with X the ID of the jail and Y either h like host-side or j like jail-side):
---snip---
Host:

# ifconfig -a
igb0: flags=8863<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=4a520b9<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,WOL_MAGIC,VLAN_HWFILTER,VLAN_HWTSO,RXCSUM_IPV6,NOMAP>
        ether [...]:a4
        inet 192.168.1.x netmask 0xffffff00 broadcast 192.168.1.255
        inet6 fe80::[...]a4%igb0 prefixlen 64 scopeid 0x1
        inet6 fd73:[...] prefixlen 64
        inet6 2003:[...] prefixlen 64 autoconf
        inet6 fd73:[...] prefixlen 64 autoconf
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
        nd6 options=23<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL>
igb1: flags=8822<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=4e527bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,WOL_MAGIC,VLAN_HWFILTER,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6,NOMAP>
        ether [...]:a5
        media: Ethernet autoselect
        status: no carrier
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
        inet 127.0.0.1 netmask 0xff000000
        groups: lo
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
vswitch0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether [...]:a3
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto stp-rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: j_weather_hif flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 9 priority 128 path cost 2000
        member: j_web_hif flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 8 priority 128 path cost 2000
        member: j_commit_hif flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 7 priority 128 path cost 2000
        member: j_video_hif flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 6 priority 128 path cost 2000
        member: j_dns_hif flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 5 priority 128 path cost 2000
        member: igb0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 1 priority 128 path cost 20000
        groups: bridge
        nd6 options=9<PERFORMNUD,IFDISABLED>
j_dns_hif: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether [...]:0a
        hwaddr [...]:0a
        inet6 fe80::[...]0a%j_dns_hif prefixlen 64 scopeid 0x5
        groups: epair
        media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
        status: active
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
[... some more jail interfaces ...]

# dmesg | grep promis
igb0: promiscuous mode enabled
igb0: promiscuous mode disabled
j_dns_hif: promiscuous mode enabled
j_dns_hif: promiscuous mode disabled
[... some more like this ...]

# jexec 2 ifconfig -a
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
        inet 127.0.0.1 netmask 0xff000000
        groups: lo
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
j_dns_jif: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether [...]:0b
        hwaddr [...]:0b
        inet 192.168.1.y netmask 0xffffff00 broadcast 192.168.1.255
        inet6 fe80::[...]0b%j_dns_jif prefixlen 64 scopeid 0x2
        inet6 fd73:[...]:y prefixlen 64
        groups: epair
        media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
        status: active
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
---snip---

And here the backtrace of the panic:
---snip---
panic: if_setflag: decrement non-positive refcount 0 for flag 256
cpuid = 4
time = 1601300532
KDB: stack backtrace:
db_trace_self_wrapper() at db_trace_self_wrapper+0x2b/frame 0xfffffe0378ea3920
vpanic() at vpanic+0x182/frame 0xfffffe0378ea3970
panic() at panic+0x43/frame 0xfffffe0378ea39d0
if_setflag() at if_setflag+0x137/frame 0xfffffe0378ea3a30
ifpromisc() at ifpromisc+0x2a/frame 0xfffffe0378ea3a60
bpf_detachd_locked() at bpf_detachd_locked+0x280/frame 0xfffffe0378ea3ab0
bpf_dtor() at bpf_dtor+0x87/frame 0xfffffe0378ea3ad0
devfs_destroy_cdevpriv() at devfs_destroy_cdevpriv+0xa1/frame 0xfffffe0378ea3af0
devfs_close_f() at devfs_close_f+0x6a/frame 0xfffffe0378ea3b20
_fdrop() at _fdrop+0x20/frame 0xfffffe0378ea3b40
closef() at closef+0x1ea/frame 0xfffffe0378ea3bd0
closefp() at closefp+0x90/frame 0xfffffe0378ea3c10
amd64_syscall() at amd64_syscall+0x13e/frame 0xfffffe0378ea3d30
fast_syscall_common() at fast_syscall_common+0xf8/frame 0xfffffe0378ea3d30


__curthread () at /space/system/usr_src/sys/amd64/include/pcpu_aux.h:55
55 __asm("movq %%gs:%P1,%0" : "=r" (td) : "n" (offsetof(struct pcpu, (kgdb) #0 __curthread () at /space/system/usr_src/sys/amd64/include/pcpu_aux.h:55
#1  doadump (textdump=1) at /space/system/usr_src/sys/kern/kern_shutdown.c:394
#2  0xffffffff8051fb46 in kern_reboot (howto=260)
    at /space/system/usr_src/sys/kern/kern_shutdown.c:481
#3  0xffffffff8051ff8a in vpanic (fmt=<optimized out>, ap=<optimized out>)
    at /space/system/usr_src/sys/kern/kern_shutdown.c:913
#4  0xffffffff8051fcf3 in panic (fmt=<unavailable>)
    at /space/system/usr_src/sys/kern/kern_shutdown.c:839
#5  0xffffffff806321f7 in if_setflag (ifp=0xfffff800036cc000,
    flag=<unavailable>, pflag=<optimized out>, refcount=0xfffff800036cc3a8,
    onswitch=<unavailable>) at /space/system/usr_src/sys/net/if.c:3135
#6  0xffffffff8063206a in ifpromisc (ifp=0xfffff800036cc000,
    pswitch=<unavailable>) at /space/system/usr_src/sys/net/if.c:3196
#7  0xffffffff80626450 in bpf_detachd_locked (d=<optimized out>,
    detached_ifp=<optimized out>) at /space/system/usr_src/sys/net/bpf.c:882
#8  0xffffffff80629277 in bpf_detachd (d=0xfffff8074cf42800)
    at /space/system/usr_src/sys/net/bpf.c:836
#9  bpf_dtor (data=0xfffff8074cf42800)
    at /space/system/usr_src/sys/net/bpf.c:913
#10 0xffffffff80487531 in devfs_destroy_cdevpriv (p=0xfffff8074cf29c40)
    at /space/system/usr_src/sys/fs/devfs/devfs_vnops.c:197
#11 0xffffffff8048b16a in devfs_fpdrop (fp=0xfffff8074cebaaf0)
    at /space/system/usr_src/sys/fs/devfs/devfs_vnops.c:211
#12 devfs_close_f (fp=0xfffff8074cebaaf0, td=<optimized out>)
    at /space/system/usr_src/sys/fs/devfs/devfs_vnops.c:787
#13 0xffffffff804c4d70 in fo_close (fp=0xfffff8074cebaaf0, td=<unavailable>)
    at /space/system/usr_src/sys/sys/file.h:364
#14 _fdrop (fp=0xfffff8074cebaaf0, td=<unavailable>)
    at /space/system/usr_src/sys/kern/kern_descrip.c:3120
#15 0xffffffff804c7eca in closef (fp=0xfffff8074cebaaf0, td=0xfffffe0382567500)
    at /space/system/usr_src/sys/kern/kern_descrip.c:2606
#16 0xffffffff804c51e0 in closefp (fdp=0xfffffe0307cbd950, fd=3,
    fp=0xfffff8074cebaaf0, td=0xfffffe0382567500, holdleaders=<optimized out>)
    at /space/system/usr_src/sys/kern/kern_descrip.c:1263
#17 0xffffffff808000ae in syscallenter (td=<optimized out>)
    at /space/system/usr_src/sys/amd64/amd64/../../kern/subr_syscall.c:162
---snip---

Bye,
Alexander.

--
http://www.Leidinger.net alexan...@leidinger.net: PGP 0x8F31830F9F2772BF
http://www.FreeBSD.org    netch...@freebsd.org  : PGP 0x8F31830F9F2772BF

Attachment: pgpRwVyZj3fYT.pgp
Description: Digitale PGP-Signatur

Reply via email to