Subject: CVS commit: syssrc/sys/ufs/lfs
To: None <source-changes@netbsd.org>
From: Konrad Schroder <perseant@netbsd.org>
List: source-changes
Date: 05/14/2002 23:03:56
Module Name:	syssrc
Committed By:	perseant
Date:		Tue May 14 20:03:55 UTC 2002

Modified Files:
	syssrc/sys/ufs/lfs: lfs.h lfs_alloc.c lfs_balloc.c lfs_bio.c
	    lfs_debug.c lfs_extern.h lfs_inode.c lfs_segment.c lfs_subr.c
	    lfs_syscalls.c lfs_vfsops.c lfs_vnops.c

Log Message:
Phase one of my three-phase plan to make LFS play nice with UBC, and bug-fixes
I found while making sure there weren't any new ones.

* Make the write clusters keep track of the buffers whose blocks they contain.
  This should make it possible to (1) write clusters using a page mapping
  instead of malloc, if desired, and (2) schedule blocks for rewriting
  (somewhere else) if a write error occurs.  Code is present to use
  pagemove() to construct the clusters but that is untested and will go away
  anyway in favor of page mapping.
* DEBUG now keeps a log of Ifile writes, so that any lingering instances of
  the "dirty bufs" problem can be properly debugged.
* Keep track of whether the Ifile has been dirtied by various routines that
  can be called by lfs_segwrite, and loop on that until it is clean, for
  a checkpoint.  Checkpoints need to be squeaky clean.
* Warn the user (once) if the Ifile grows larger than is reasonable for their
  buffer cache.  Both lfs_mountfs and lfs_unmount check since the Ifile can
  grow.
* If an inode is not found in a disk block, try rereading the block, under
  the assumption that the block was copied to a cluster and then freed.
* Protect WRITEINPROG() with splbio() to fix a hang in lfs_update.


To generate a diff of this commit:
cvs rdiff -r1.38 -r1.39 syssrc/sys/ufs/lfs/lfs.h
cvs rdiff -r1.55 -r1.56 syssrc/sys/ufs/lfs/lfs_alloc.c
cvs rdiff -r1.31 -r1.32 syssrc/sys/ufs/lfs/lfs_balloc.c
cvs rdiff -r1.42 -r1.43 syssrc/sys/ufs/lfs/lfs_bio.c
cvs rdiff -r1.15 -r1.16 syssrc/sys/ufs/lfs/lfs_debug.c
cvs rdiff -r1.29 -r1.30 syssrc/sys/ufs/lfs/lfs_extern.h
cvs rdiff -r1.56 -r1.57 syssrc/sys/ufs/lfs/lfs_inode.c
cvs rdiff -r1.73 -r1.74 syssrc/sys/ufs/lfs/lfs_segment.c \
    syssrc/sys/ufs/lfs/lfs_vfsops.c
cvs rdiff -r1.21 -r1.22 syssrc/sys/ufs/lfs/lfs_subr.c
cvs rdiff -r1.64 -r1.65 syssrc/sys/ufs/lfs/lfs_syscalls.c
cvs rdiff -r1.62 -r1.63 syssrc/sys/ufs/lfs/lfs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.