Subject: Log structured filesystem
To: None <port-sparc@NetBSD.ORG>
From: Bruce Allen Ediger <metamatic!ediger@uucp-1.csn.net>
List: port-sparc
Date: 06/30/1996 02:02:11
I'm running NetBSD 1.1 on a SPARCStation IPC, ROM Rev 2.9. I've tried
to put an LFS filesystem on a SUN0207 disk (<CONNER, CP30200  SUN0207, 4234>).

I can put the filesystem itself on the 'g' partition of the disk
using the newlfs command (newlfs -L /dev/rsd1g).  From der Mouse's
sunlabel program, the disk looks like this:

1:46am 4 # sunlabel /dev/rsd1a                                                /
sunlabel> p
a: start cyl =      0, size =    16848 (52/0/0 - 8.22656Mb)
b: start cyl =     52, size =   178200 (550/0/0 - 87.0117Mb)
c: start cyl =      0, size =   406296 (1254/0/0 - 198.387Mb)
d: start cyl =      0, size =        0 (0/0/0 - 0Mb)
e: start cyl =      0, size =        0 (0/0/0 - 0Mb)
f: start cyl =      0, size =        0 (0/0/0 - 0Mb)
g: start cyl =    602, size =   211248 (652/0/0 - 103.148Mb)  <=== LFS here
h: start cyl =      0, size =        0 (0/0/0 - 0Mb)

I can mount the LFS filesystem on /lfs using either a vanilla 'mount' or
a mount_lfs:

mount_lfs -d -s /dev/sd1g /lfs

It mounts, and I can 'cd' into /lfs and do listings.  I can even 'touch'
and 'rm' files.  But if I do a 'cp' or a 'mkdir' and 'cd', the 'cp'
process hangs.  Here's what a 'ps -algxww' says about a zsh shell that
I used to cd into a newly created directory in /lfs:

    0   144   134   0  -5  0   740  164 biowai D+   p4    0:02.39 (zsh)

Apparently, any process that tries to write bytes to an LFS hangs.
The lfs_cleanerd just fives messages like this:

Cleaner Not Running at Sun Jun 30 01:51:03 1996

I've tried both the binary distribution kernel, and a kernel I've built
myself.  Both of these have 'options LFS' in the configuration file.
I get the same hanging in 'D' state on the biowai WCHAN in every process
that tries to write to the disk.

I've even recompiled the newlfs, lfs_cleanerd and mount_lfs executables,
with no change in results.

I've put an ffs filesystem on the same disk, and that filesystem seems
to work, so I'm pretty sure its not the disk hardware that's hosed.

I found Margo Seltzer's January, 1995 usenet article, and the source code
for LFS that she used.  I compared the NetBSD lfs code with hers and found
a few differences, but nothing more than trivialites (syscallarg and
SCARG macros, format of credentials struct, timeval field name differences).

What's the scoop?  Does LFS work at all?  Is there some mystical trick
I'm missing, like extra options in the config file?

Best regards,
Bruce Ediger