source-changes catchup mid-July to early September 2008 (Updated)
Welcome to yet another catch-up of NetBSD source-changes mailing list,
this time from mid-July to early September 2008. Besides FFS having
journaling now (yai! first in BSD-land, ever! :-), here's what's new
and/or exciting:

In order to re-initialize x86 machines' video/VGA state after
suspend and resume, some BIOS functions can be used. This needs
to be done in real mode(?), which is a bit hard to do from an
operating system kernel that runs in protected mode. To help
doing so, a x86 CPU emulator was added to NetBSD some time ago,
to help run VGA bios for ACPI resume. Now Joerg has added a
sysctl that does just this, assuming your kernel has the VGA_POST
options -- set machdep.acpi_vbios_reset=2

Inside the kernel, data sent/received through the network stack
is stored in chains of
mbufs. So far, the mbufs were also used to store socket
options, i.e. data describing further how the sending/receiving
is done. This was split out into a separate struct sockopt by Ian
'plunky' Hibbert now. For more information, see sockopt(9).

Hans 'woodstock' Rosenfeld has added a new accalerated driver for
SPX graphics boards found in some VAXstations, which replaces the
old and broken lcspx driver. The work is based on work by Blaz
Antonic.

The simonb-wapbl branch was merged: ``Add Wasabi System's WAPBL (Write Ahead Physical Block Logging)
journaling code. Originally written by Darrin B. Jewell while
at Wasabi and updated to -current by Antti Kantee, Andy Doran,
Greg Oster and Simon Burge.''
This makes NetBSD the first second (see update below)
BSD operating system that has a working
file system with journaling (not counting LFS, which again and
again has issues). Mmm, no more fsck! :-)
See my other
posts for more on journaling / wapbl.

Update:
James Mansion wrote me to that NetBSD's not the first BSD to
have journaling, and I think he's right:
DragonflyBSD's HAMMER file system apparently offers similar
functionality: ``HAMMER implement an instant-mount capability and will recover information
on a cluster-by-cluster basis as it is being accessed.''

Accept filters were ported from FreeBSD by Coyote Point Systems,
and integrated into NetBSD by Thor Lancelot Simon. What are
accept filters? According to the accept_filter(9)
manpage, they ``allow an application to request that the
kernel pre-process incoming connections.'' Pre-defined
filters are available with
accf_data(9) and
accf_http(9). The latter makes sure that the
application's accept(2) call only sees the connection if there's
a valid HTTP header, moving parts of the parsing from userland
(httpd) to the kernel.

Work is underway for crossbuilds of modular X.org. This is done
via src/external/mit/xorg, which needs xsrc/external/mit. The
results will be installed in /usr/X11R7(!). (XXX Where can I find
more about this?)

Gregory McGarry is working to get the tree compiled with PCC
instead of GCC. This is still ongoing.

nvi was updated from version 1.79 to 1.81. The most important
part of this update is that internationalization is now handled
by default.

Following a bigger masterplan, new 3rd party software packages
are now imported into src/external/${license}, which will replace
src/dist, src/crypto/dist and src/gnu/dist in the long
run. Packages will be moved on upgrades only, existing packages
are not being moved just for the sake of moving them.

Adam Hamsik is working on getting Logical Volume Management (LVM)
going in NetBSD. He has adapted Linux' "device mapper"
kernel-interface as part of his Google Summer-of-Code project,
and with the help of the (GPL'd) Linux tools, things are looking
pretty good. More on this in a separate post. This work is
currently happening on the haad-dm branch.

In the context of his work on UDF, Reinoud has added routines for
speeding up directory handling by using hash gables. Lookup of
files was O(n*n) and is now O(1) even for file creation.
See my
other blog posting for details and impressive numbers.

Perry Metzger is working to make binary builds identical. This is
useful for binary diffs between releases/builds, e.g. when
providing binary patches for updates and security fixes. Areas
where this had an impact on are C++ programs and various
bootloaders (which had a builder, build date, etc. in it so
far).

EHCI (USB) can now do high speed isochronous support. This was
developed by Jeremy Morse as part of his Google
Summer-of-Code "dvb" project this year, it is useful for fast
transfer of data that comes in steady streams, e.g. from video
cards.

fsck_ffs(8) now has options -x and -X (just like dump) that
create a file system snapshot via fss(4), and then operates on
the snapshot. This allows "fsck_ffs -n" to work on a snapshot of
a read/write mounted file system, and avoid errors related to
file system activity. Can be made permanent for the nightly
script by setting run_fsck_flags="-X" in /etc/daily.conf.
This was brought to you by our Xen-hacker Manuel Bouyer. :-)

So much for this time. Many of the above projects are
work-in-progress, and we can look forward for further news on them
next time. Stay tuned!