freebsd-dev/sys/ufs/ffs
Kirk McKusick 7839b23f00 The UFS2 filesystem allocates new blocks of inodes as they are needed.
When a cylinder group runs short of inodes, a new block for inodes is
allocated, zero'ed, and written to the disk. The zero'ed inodes must
be on the disk before the cylinder group can be updated to claim them.
If the cylinder group claiming the new inodes were written before the
zero'ed block of inodes, the system could crash with the filesystem in
an unrecoverable state.

Rather than adding a soft updates dependency to ensure that the new
inode block is written before it is claimed by the cylinder group
map, we just do a barrier write of the zero'ed inode block to ensure
that it will get written before the updated cylinder group map can
be written. This change should only slow down bulk loading of newly
created filesystems since that is the primary time that new inode
blocks need to be created.

Reported by: Robert Watson
Reviewed by: kib
Tested by:   Peter Holm
2013-02-16 15:11:40 +00:00
..
ffs_alloc.c The UFS2 filesystem allocates new blocks of inodes as they are needed. 2013-02-16 15:11:40 +00:00
ffs_balloc.c When a file is first being written, the dynamic block reallocation 2012-11-03 18:55:55 +00:00
ffs_extern.h Add UFS writesuspension mechanism, designed to allow userland processes 2012-11-18 18:57:19 +00:00
ffs_inode.c For UFS2 i_blocks is unsigned. The current "sanity" check that it 2013-02-03 17:16:32 +00:00
ffs_rawread.c Add a third flags argument to ffs_syncvnode to avoid a possible conflict 2012-03-25 00:02:37 +00:00
ffs_snapshot.c Add flags argument to vfs_write_resume() and remove 2013-01-11 06:08:32 +00:00
ffs_softdep.c Add flags argument to vfs_write_resume() and remove 2013-01-11 06:08:32 +00:00
ffs_subr.c - Merge soft-updates journaling from projects/suj/head into head. This 2010-04-24 07:05:35 +00:00
ffs_suspend.c Add flags argument to vfs_write_resume() and remove 2013-01-11 06:08:32 +00:00
ffs_tables.c
ffs_vfsops.c Add flags argument to vfs_write_resume() and remove 2013-01-11 06:08:32 +00:00
ffs_vnops.c After the PHYS_TO_VM_PAGE() function was de-inlined, the main reason 2012-08-05 14:11:42 +00:00
fs.h Fix build of kdump(1). 2012-11-18 22:03:31 +00:00
softdep.h - Speed up pendingblock processing again. Having too much delay between 2011-07-04 22:08:04 +00:00