mbuf revision, testers/comments wanted.

Fabian Keil freebsd-listen at fabiankeil.de
Fri Feb 6 08:52:56 PST 2009


Jeff Roberson <jroberson at jroberson.net> wrote:

> On Sun, 1 Feb 2009, Fabian Keil wrote:
> 
> > Fabian Keil <freebsd-listen at fabiankeil.de> wrote:
> >
> >> Jeff Roberson <jroberson at jroberson.net> wrote:
> >>
> >>> http://people.freebsd.org/~jeff/mbuf_ref2.diff
> >>
> >>> I have been experimenting with different revisions to the mbuf api to
> >>> improve performance and simplify code.  This patch is the first of
> >>> several proposed steps towards those goals.  The aim of this patch is
> >>> two fold;
> >>
> >>> I would appreciate testing feedback from varied workloads to make
> >>> sure there are no bugs before I go forward with this.  I have tested
> >>> only host oriented networking with a few drivers.  It is not
> >>> anticipated that there will be any significant incompatibilities
> >>> introduced with this round but there is always that possibility.
> >
> >> 5)
> >> Finally, I tested the patch on an IBM ThinPad R51. The kernel
> >> hangs on boot, the last messages are (hand transcribed):
> >>
> >> iwi0: <Intel(R) PRO/Wireless 2200BG> mem 0xc0214000-0xc0214fff irq 11
> >> at device 2.0 on pci2 iwi0: Reserved 0x1000 bytes for rid 0x10 type 3
> >> at 0xc0214000 iwi0: could not allocate rx mbuf
> >> iwi0: could not allocate Rx ring
> >> bpfdetach: was not attached
> >
> > Never mind, kernel and user land weren't completely in
> > sync and this might be related to the recent wlan commits.
> > I'll retry with an up-to-date user land.
> >
> 
> I have updated the patch here:
> 
> http://people.freebsd.org/~jeff/mbuf_ref2.diff

Building world failed for me with:

cc -O2 -pipe  -Wall -Wmissing-prototypes -Wno-uninitialized -Wstrict-prototypes -I/usr/src/sbin/pfctl/../../contrib/pf/pfctl -DE
k-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -c /usr/src/sbin/pfctl/../../sys
f_ruleset.c
In file included from /usr/src/sbin/pfctl/../../sys/contrib/pf/net/pf_ruleset.c:48:
/usr/obj/usr/src/tmp/usr/include/sys/mbuf.h:131: error: expected specifier-qualifier-list before 'uma_zone_t'
*** Error code 1

Stop in /usr/src/sbin/pfctl.
*** Error code 1

Stop in /usr/src/sbin.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.

Manually building from /usr/src/sbin worked, though.
After resuming with make buildworld NO_CLEAN=YES,
the next failure was:

===> usr.bin/netstat (all)
cc -O2 -pipe  -fno-strict-aliasing -DIPSEC -DSCTP -DINET6 -DNETGRAPH -DIPX -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wno-pointer-sign -c /usr/src/usr.bin/netstat/if.c
cc -O2 -pipe  -fno-strict-aliasing -DIPSEC -DSCTP -DINET6 -DNETGRAPH -DIPX -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wno-pointer-sign -c /usr/src/usr.bin/netstat/inet.c
cc -O2 -pipe  -fno-strict-aliasing -DIPSEC -DSCTP -DINET6 -DNETGRAPH -DIPX -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wno-pointer-sign -c /usr/src/usr.bin/netstat/main.c
cc -O2 -pipe  -fno-strict-aliasing -DIPSEC -DSCTP -DINET6 -DNETGRAPH -DIPX -fstack-protector -Wsystem-headers -Werror -Wall -Wno-format-y2k -W -Wno-unused-parameter -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wno-uninitialized -Wno-pointer-sign -c /usr/src/usr.bin/netstat/mbuf.c
In file included from /usr/src/usr.bin/netstat/mbuf.c:46:
/usr/obj/usr/src/tmp/usr/include/sys/mbuf.h:131: error: expected specifier-qualifier-list before 'uma_zone_t'
*** Error code 1

Stop in /usr/src/usr.bin/netstat.
*** Error code 1

Stop in /usr/src/usr.bin.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.
*** Error code 1

Stop in /usr/src.

Again building from /usr/src/usr.bin worked.

Resuming stopped with yet another similar error
message but afterwards make buildworld NO_CLEAN=YES
finished successfully.

I haven't really investigated the problem yet,
but it might have something to do with my make flags:

fk at TP51 ~ $grep NO_ /etc/make.conf
NO_BLUETOOTH=          # do not build Bluetooth related stuff
NO_FORTRAN=            # do not build g77 and related libraries
NO_I4B=                # do not build isdn4bsd package
NO_INET6=              # do not build IPv6 related programs and libraries
NO_IPFILTER=           # do not build IP Filter package
NO_KERBEROS=           # do not build and install Kerberos 5 (KTH Heimdal)
NO_LPR=                # do not build lpr and related programs
NO_MAILWRAPPER=        # do not build the mailwrapper(8) MTA selector
#NO_NIS=                # do not build NIS support and related programs.
NO_ATM=yes
NO_VINUM=yes
NO_OBJC=yes
NO_SHAREDOCS=yes
NO_PROFILE=yes
NO_PORTDOCS=yes

Commenting out the NO_INET6 line didn't make a difference.

I'm using your patch on an IBM ThinPad R51 since
three days and didn't notice any problems so far.

I also briefly tested it on an AMD64 system but as sound
stopped working I reverted to the old kernel after verifying
that ssh worked. This is a snd_emu10kx(4) problem, though.

Fabian
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20090206/a32dca68/signature.pgp


More information about the freebsd-net mailing list