Subject: FFS soft dependencies code available
To: None <current-users@netbsd.org, tech-kern@netbsd.org>
From: Frank van der Linden <frank@wins.uva.nl>
List: tech-kern
Date: 10/19/1999 21:06:21
Kirk McKusick's FFS soft updates/dependency code has been around for quite
a bit, and has been in an "almost ready" state for NetBSD for close
to 2 years now. Which is a big shame, we really need to get this
integrated.

So, I have put it on a branch in our CVS tree, for the adventurous to
use and debug.

Simple usage:

	1) Get the code. For example, using anoncvs and ssh, set CVS_RSH
	   to 'ssh', and do:
	   cvs -d anoncvs@anoncvs.netbsd.org:/cvsroot co -r fvdl-softdep src-nocrypto
	   This will create a directory called "src" with all that you need
	   in it. This includes all of src/sys, and a few bits living in
	   sbin/. I did not tag the rest of the sources, so they will not
	   be checked out; they are not needed for testing (you can just
	   use the rest of -current for that).

	   If you want a complete tree, checking out the whole
	   "src-nocrypto" without "-r fvdl-softdep", and then
	   doing a cvs update using the -r flag of that tree
	   should work.

	2) Compile a kernel as you always would, in the checked out tree.

	3) Compile the userland utilities (fsck_ffs, tunefs, mount)
	   Note that these will grab the wrong <sys/foo.h> include
	   files if you compile them, it's easiest to add a line

	   CPPFLAGS+=-I../../sys

	   ..to the Makefiles.

	4) You can remove "update" from /etc/rc.conf if you want
	   to do some more permanent testing, since it's no longer
	   needed with the "trickle sync" code that comes with
	   the softdep code.

	5) Boot the new kernel.

	6) Find a crash & burn filesystem. Run the new tunefs binary
	   on it as:

	   tunefs -n enable /dev/rXdXX

	7) Mess around with the filesystem.

Note that there is a known bug currently, which makes unmounting filesystems
with soft dependencies, that have been used moderately, hang.

I wouldn't advise using this yet if you're not willing to deal with
hanging unmounts and possible other problems. However, I would really
appreciate it if people could test it. Even if it's just a new kernel
without any filesystems that use soft dependencies (this should be
a lot more stable).

One final note: the file ffs_softdep.c appears on the branch, but will
not appear in the main tree if the code gets merged eventually. This is
because of copyright issues. However, the code is set up in such a way
that there is a stubfile for this one, and the "real" file can be dropped
in without a hitch. That way, the kernel can still be completely BSD-style
licensed, and people can grab ffs_softdep.c and drop it in if they
want.

- Frank