Implement Red-Black trees for the vnode clean/dirty buffer lists.
authorMatthew Dillon <dillon@dragonflybsd.org>
Fri, 15 Apr 2005 19:08:32 +0000 (19:08 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Fri, 15 Apr 2005 19:08:32 +0000 (19:08 +0000)
commit6bae617753eedfd0a0d9a7b600cb8bb31e98dae5
treea6f1401e64b9e2f44f1bf462789c05258dd2116c
parenta96c60d11184af8657fecf6d2ee401e7ca7b6d54
Implement Red-Black trees for the vnode clean/dirty buffer lists.

Implement ranged fsyncs and adjust the syncer to use the new capability.
This capability will also soon be used to replace the write_behind
heuristic.  Rewrite the fsync code for all VFSs to use the new APIs
(generally simplifying them).

Get rid of B_WRITEINPROG, it is no longer useful or needed.
Get rid of B_SCANNED, it is no longer useful or needed.

Rewrite the NFS 2-phase commit protocol to take advantage of the new
Red-Black tree topology.

Add RB_SCAN() for callback-scanning of Red-Black trees.  Give RB_SCAN
the ability to track the 'next' scan node and automatically fix it up
if the callback directly or indirectly or through blocking indirectly
deletes nodes in the tree while the scan is in progress.

Remove most related loop restart conditions, they are no longer necessary.

Disable filesystem background bitmap writes.  This really needs to be
solved a different way and the concept does not work well with red-black
trees.
31 files changed:
sys/kern/vfs_bio.c
sys/kern/vfs_lock.c
sys/kern/vfs_subr.c
sys/kern/vfs_sync.c
sys/sys/buf.h
sys/sys/mount.h
sys/sys/tree.h
sys/sys/vnode.h
sys/vfs/gnu/ext2fs/ext2_inode.c
sys/vfs/gnu/ext2fs/ext2_vfsops.c
sys/vfs/gnu/ext2fs/ext2_vnops.c
sys/vfs/hpfs/hpfs_vnops.c
sys/vfs/msdosfs/msdosfs_vfsops.c
sys/vfs/msdosfs/msdosfs_vnops.c
sys/vfs/nfs/nfs_bio.c
sys/vfs/nfs/nfs_nqlease.c
sys/vfs/nfs/nfs_subs.c
sys/vfs/nfs/nfs_vfsops.c
sys/vfs/nfs/nfs_vnops.c
sys/vfs/nwfs/nwfs_io.c
sys/vfs/nwfs/nwfs_vfsops.c
sys/vfs/smbfs/smbfs_io.c
sys/vfs/smbfs/smbfs_vfsops.c
sys/vfs/specfs/spec_vnops.c
sys/vfs/ufs/ffs_extern.h
sys/vfs/ufs/ffs_inode.c
sys/vfs/ufs/ffs_rawread.c
sys/vfs/ufs/ffs_softdep.c
sys/vfs/ufs/ffs_softdep_stub.c
sys/vfs/ufs/ffs_vfsops.c
sys/vfs/ufs/ffs_vnops.c