Month: March 2004
Matt Dillon had what he described as a “brainfart for threaded VFS and data passing between threads” based on Alan Cox’s FreeBSD 5 PIPE work that he has been importing, leading to a new concept he calls “XIO”. It’s a long ramble, so I’m reprinting it wholesale:
Chris Pressey, the newest committer, has been in a cleanup frenzy – he’s had 140 commits already, many of them cleanup of the existing source code. Go Chris!
Matt Dillon’s still missing some parts to the PIPE code in last night’s import from FreeBSD 5. Until this is fixed (hopefully by tomorrow) , the codebase will be somewhat unstable.
If you have a login to BSDNews (and you should – it’s free), you can customize your BSDNews page layout to include the news feed from this very site, listed as “DragonFly BSD”! Thanks to Wes Peters and Chris Coleman for setting that up.
Dheeraj Reddy submitted (and David Rhodus committed) C versions of
catman, removing yet another Perl dependency.
There’s pictures of a prototype of the plush DragonFly mascot. It’s missing one set of legs, but it’s otherwise accurate to what is being sold.
Tobias Florek has plush Freds – the dragonfly mascot for DragonFly. He’s in Europe, and it costs 16 Euros plus shipping – mail fred at ibotty.net. First come, first serve. If you live on the western side of the Atlantic, shipping costs make it prohibitive, so no luck for U.S. and Canada residents yet. (A U.S. distributor is being worked on.)
Andre Nathan submitted (and Matt Dillon committed) a change for
route from NetBSD/OpenBSD that a ‘
route show‘ command, which performs nearly the same as
netstat -rn. Matt Dillon also added a -w option so that all columns would print full size.
Joerg Sonnenberger added to the partion discussion:
The alternative for
/tmpis to have lots of swap and MFS for
/tmp. This is often faster and avoids the lots of old crap in
In that case you should make
/var/tmpits own partition. In general
/var/tmpas world writable locations should be on partitions
on there own. Making
/usr/obja filesystem of its own has the advantage
of faster cleaning — just unmount,
newfsand remount it :)
He also noted that having specific partitions for things like news spools (
/news/) and mail stores (
/var/spool/) is that it allows the blocksize to be set much smaller, which decreases wasted space when dealing with lots and lots of small files.
Matt Dillon responded to a question from David Cuthbert about partition letters; as part of that, he recommended this sort of partion layout:
If you have a large system, it is often a good idea to separate out oft-written directories such as
/usr/obj, and to make
/var/tmpis usually made a softlink to
/tmp. If you have or intend to process a lot of mail, making
/varlarger is a good idea. If you are running a mail server it is often a good idea to make
/var/spoolits own partition (and
/var/mailits own partition if you are running a large mail pop service or have a lot of users). If you are running a large web server making
/usr/local/wwwits own partition (the base of Apache’s site directory) is a good idea.
Matt Dillon’s changes to buildworld are done; the next
make buildworld you do will take a bit longer, but you should be able to do
make quickworld thereafter, which should be… quicker!
Be careful, for the time being, doing a make -j, though. If that fails, Matt asks:
In one xterm:
make -j 4 buildworld >& /tmp/bw.out
In another xterm:
tail -f /tmp/bw.out | fgrep ===
Save the results, and post a link to it in the kernel discussion group.
Matt Dillon posted that he is doing major work on buildworld code; you may want to update tomorrow and not today, if it was on your agenda. Following is his description of his work plans:
Matt Dillon has changed some settings on the DragonFly news server that mirrors the mailing list traffic; now, all posts ever made are visible.
For those readers who follow the emacs religion: Andreas Fuchs found that the emacs build expects
/usr/lib/crtbegin.o, which does not exist on DragonFly. Rahul Siddharthan removed the mention of crtbegin.o from the makefile for emacs, and that seems to fix it.
Updated: Hiten Pandya added a port override for emacs, made by Aaron Malone. That solves it.
Among other source changes today, Matt Dillon made a change to the way priority is set for new processes, which should fix what he calls the ‘jerky X pointer’ problem. He also fixed the systimer in such a way that
nice now actually works. The result is that your DragonFly system should now be even more responsive under heavy load.
Since “MFC” (Merged From Current) is used to denote a feature brought from FreeBSD 5 to FreeBSD 4, what would these be? MF4? In any case, Hiten Pandya has a lot of FreeBSD 4 commits he may want to bring into DragonFly. How many? This many.
style(9) maven, is now a committer. This is probably due to the large quantity of cleanup patches he has already submitted. Congratulations, Chris.
There’s a new ‘known good’ ISO on the DragonFly download page (2004-3-17b) that includes, among other things, a fixed OpenSSL and a number of USB improvements – there’s a
/README.USB file now.
Matt Dillon posted some numbers on performance of NFS over Gigabit Ethernet – using TCP, he was able to hit 80-something megabytes per second right off the bat, and saw nearly 90 using UDP. This improvement stems from Hiten Pandya’s work on the
em driver and NFS block size changes.
Hiten Pandya has finished the if_xname work; you can now do:
# ifconfig fxp0 name 'LAN'
# ifconfig fxp1 name 'WAN'
And then refer to these network interfaces by the ‘LAN’ and ‘WAN’ names. These are aliases, not changed names, so the original names –
fxp1 in this example – will still exist.
While talking about his (many, many) code cleanups, Chris Pressey pointed at the Erlang Programming Rules as a good guideline for programming style.
Shadow Committer Jeffrey Hsu is presenting a paper on DragonFly at AsiaBSDCon, and his paper can be downloaded now.
300 posts so far in about 8 months – yay me! I think it’s time to stop counting.
Are you using I4B/sppp? Don’t upgrade, as it’s the one interface that doesn’t support Berkley Packet Filters (BPF) and is temporarily broken while Joerg Sonnenberger works on the networking API. Contact Joerg if you are so lucky as to be affected by this.
Emiel Kollof is working on a DragonFly fortunes file. If you plan to say something clever involving DragonFly, do it where he can hear you.
Dheeraj Reddy submitted (and Eirik Nygaard committed) a patch taken from FreeBSD that removes Perl from mergemaster.
Eirik Nygaard has added a dfport for devel/valgrind, based on Doug Rabson’s FreeBSD port.
Matt Dillon pointed out that we could have at least a binary packaging system relatively easily, now:
Matt Dillon has posted his list of personal tasks to finish before the 1.0 release in June of this year.
‘Till’ has set up some interesting stats taken from the IRC channel #dragonflybsd on EFNet.
Matt Dillon and Hiten Pandya have changed NFS to default to the largest block size possible (32k), which should speed up all higher-bandwidth NFS connections, but especially NFSv3 via TCP.
Matt Dillon has committed code that increases the default socket buffer for NFS to
65535 bytes. This can be changed with the sysctl ‘vfs.nfs.soreserve’. This should improve performance.
The USENIX AsiaBSDCon is happening March 13th and 14th. Jeffrey Hsu, who has been working on DragonFly networking (with a good number of commits lately) will be giving a talk titled: “Concepts, Theory, and Implementation of DragonflyBSD”.
Matt Dillon has placed inital IPC support, using a message structure that is described in the extended entry here, taken from his commit message:
In an ongoing discussion of Chris Pressey’s proposed
config(8) changes, Matt Dillon said Perl should be removed from the base system, at some point.
Perl is no longer required for building a i386 kernel, thanks to Eirik Nygaard. It may also not be required for other platforms, but it’s only been tested on i386 as of right now.
Chris Pressey posted his thoughts on
config(8). His summary on his plans are thus: “Basically: config(8) shouldn’t let you configure a kernel that won’t build. It should detect that it won’t build, tell you why, and stop immediately without wasting your time with a make session that is doomed to failure.“
If you update your sources and compile using gcc3, it now includes stack smashing protection, committed by Joerg Sonnenberger. Compiling using gcc2 already includes that protection.
There is a new ‘known good’ ISO file on the DragonFly site download page. This newer image includes the recently mentioned support for more partitions per disk.
Joerg Sonnenberger has added an infrastructure for
contrib/. Previously, in FreeBSD, 3rd-party software in the base installation would be modified from its original state to work with FreeBSD 4 (and hence DragonFly). These modifications are then repeated with each new version of the third-party software. (gcc 2.95 -> gcc 3.x, for instance.) The “new and improved” method keeps the original source for the 3rd-party software and keeps all DragonFly-specific changes in separate patch files. This is harder to set up, but better in the long run. This methodology has already been used for certain software like gcc and binutils.
For those of you who multiboot or like carving their disk to bits, Matt Dillon has doubled the possible partitions (8 -> 16) and decreased the number of slices possible. (32 -> 16) You will need to rebuild world and kernel, and install the new boot code with disklabel -B in order to take advantage of this.
Apparently coming soon: a ‘live’ DragonFly CD similar to the LiveBSD CDROM.
David Rhodus has added support for the Silicon Image SATA controller.
Joerg Sonnenberger has proposed breaking apart
sys/types.h into two files – one that follows POSIX, and the other that does not. His proposal is pasted here.