-#define LFS_MAXNUMSB 10
-#define LFS_MIN_SBINTERVAL 5
- daddr_t lfs_sboffs[LFS_MAXNUMSB]; /* super-block disk offsets */
-} LFS_SUPER;
-
-#define blksize(fs, ip, lbn) LFSBLKSIZE
-#define blkoff(fs, loc) /* calculates (loc % fs->fs_bsize) */ \
- ((loc) & ~(fs)->fs_bmask)
-#define fsbtodb(fs, b) ((b) << (fs)->fs_fsbtodb)
-#define lblkno(fs, loc) /* calculates (loc / fs->fs_bsize) */ \
- ((loc) >> (fs)->fs_bshift)
-#define itoo(fs, x) ((x) % INOPB(fs))
-#define itod(fs, x) LFS -- IMPLEMENT
-
-/* In-memory super block. */
-typedef struct lfs {
- struct fs *fs_link; /* linked list of file systems */
- struct fs *fs_rlink; /* used for incore super blocks */
- time_t fs_time; /* last time written */
-
-/* These fields are cleared at mount time. */
- u_char fs_fmod; /* super block modified flag */
- u_char fs_clean; /* file system is clean flag */
- u_char fs_ronly; /* mounted read-only flag */
- u_char fs_flags; /* currently unused flag */
- u_char fs_fsmnt[MAXMNTLEN]; /* name mounted on */
-
-/* On-disk structure. */
- LFS_SUPER fs_super;
-} LFS;
-
-#define fs_bmask fs_super.lfs_bmask
-#define fs_bshift fs_super.lfs_bshift
-#define fs_bsize fs_super.lfs_bsize
-#define fs_dsize fs_super.lfs_dsize
-#define fs_fbmask fs_super.lfs_fbmask
-#define fs_fbshift fs_super.lfs_fbshift
-#define fs_ffmask fs_super.lfs_ffmask
-#define fs_ffshift fs_super.lfs_ffshift
-#define fs_frag fs_super.lfs_frag
-#define fs_free fs_super.lfs_free
-#define fs_fsbtodb fs_super.lfs_fsbtodb
-#define fs_fsize fs_super.lfs_fsize
-#define fs_idaddr fs_super.lfs_idaddr
-#define fs_ifile fs_super.lfs_ifile
-#define fs_ifpb fs_super.lfs_ifpb
-#define fs_inopb fs_super.lfs_inopb
-#define fs_lastseg fs_super.lfs_lastseg
-#define fs_magic fs_super.lfs_magic
-#define fs_minfree fs_super.lfs_minfree
-#define fs_nindir fs_super.lfs_nindir
-#define fs_nseg fs_super.lfs_nseg
-#define fs_nspf fs_super.lfs_nspf
-#define fs_sboffs fs_super.lfs_sboffs
-#define fs_sbsize fs_super.lfs_sbsize
-#define fs_segmask fs_super.lfs_segmask
-#define fs_segshift fs_super.lfs_segshift
-#define fs_segtabsz fs_super.lfs_segtabsz
-#define fs_size fs_super.lfs_size
-#define fs_ssize fs_super.lfs_ssize
-#define fs_tstamp fs_super.lfs_tstamp
-#define fs_version fs_super.lfs_version
+#define LFS_MIN_SBINTERVAL 5 /* minimum superblock segment spacing */
+#define LFS_MAXNUMSB 10 /* superblock disk offsets */
+ daddr_t lfs_sboffs[LFS_MAXNUMSB];
+
+/* These fields are set at mount time and are meaningless on disk. */
+ VNODE *lfs_ivnode; /* vnode for the ifile */
+ SEGUSE *lfs_segtab; /* in-memory segment usage table */
+ SEGMENT *lfs_seglist; /* list of segments being written */
+ u_long lfs_iocount; /* Number of ios pending */
+ u_char lfs_fmod; /* super block modified flag */
+ u_char lfs_clean; /* file system is clean flag */
+ u_char lfs_ronly; /* mounted read-only flag */
+ u_char lfs_flags; /* currently unused flag */
+ u_char lfs_fsmnt[MAXMNTLEN]; /* name mounted on */
+ u_char pad[3]; /* long-align */
+
+/* Checksum; valid on disk. */
+ u_long lfs_cksum; /* checksum for superblock checking */
+};
+
+/*
+ * The root inode is the root of the file system. Inode 0 is the out-of-band
+ * inode, and inode 1 is the inode number for the ifile. Thus the root inode
+ * is 2.
+ */
+#define ROOTINO ((ino_t)2)
+#define LOSTFOUNDINO ((ino_t)3)