Subject: CVS commit: syssrc/sys/ufs
To: None <source-changes@netbsd.org>
From: Konrad Schroder <perseant@netbsd.org>
List: source-changes
Date: 07/06/2002 04:30:17
Module Name:	syssrc
Committed By:	perseant
Date:		Sat Jul  6 01:30:16 UTC 2002

Modified Files:
	syssrc/sys/ufs/lfs: lfs.h lfs_balloc.c lfs_inode.c lfs_segment.c
	    lfs_subr.c lfs_syscalls.c lfs_vfsops.c
	syssrc/sys/ufs/ufs: inode.h

Log Message:
Deal with fragment size changes better.  For each fragment that can
exist on an on-disk inode, we keep a record of its size in struct inode,
which is updated when we write the block to disk.  The cleaner routines
thus have ready access to what size is the correct size for this block,
on disk.

Fixed a related bug: if a file with fragments is being cleaned
(fragments being cleaned) at the same time it is being extended beyond
NDADDR blocks, we could write a bogus FINFO record that has a frag in the
middle; when it was cleaned this would give back bogus file data.  Don't
write the indirect blocks in this case, since there is no need.

lfs_fragextend and lfs_truncate no longer require the seglock, but instead
take a shared lock, which the seglock locks exclusively.


To generate a diff of this commit:
cvs rdiff -r1.40 -r1.41 syssrc/sys/ufs/lfs/lfs.h
cvs rdiff -r1.32 -r1.33 syssrc/sys/ufs/lfs/lfs_balloc.c
cvs rdiff -r1.58 -r1.59 syssrc/sys/ufs/lfs/lfs_inode.c
cvs rdiff -r1.79 -r1.80 syssrc/sys/ufs/lfs/lfs_segment.c
cvs rdiff -r1.26 -r1.27 syssrc/sys/ufs/lfs/lfs_subr.c
cvs rdiff -r1.68 -r1.69 syssrc/sys/ufs/lfs/lfs_syscalls.c
cvs rdiff -r1.77 -r1.78 syssrc/sys/ufs/lfs/lfs_vfsops.c
cvs rdiff -r1.28 -r1.29 syssrc/sys/ufs/ufs/inode.h

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