HAMMER 12/many - buffer cache sync, buffer cache interactions, misc fixes.
authorMatthew Dillon <dillon@dragonflybsd.org>
Sun, 30 Dec 2007 08:49:20 +0000 (08:49 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Sun, 30 Dec 2007 08:49:20 +0000 (08:49 +0000)
commit0b07555568dd51216abf92a42c87d4af4e2362c0
treebc44ef6fce87016c281d6870d4a615755beb2f8b
parent7a04d74f44666553c6e04a1703941125d3d48c1e
HAMMER 12/many - buffer cache sync, buffer cache interactions, misc fixes.

As of this commit all vnops work, the filesystem remains consistent across
umount/remount, and the 'cpdup / /mnt/root' test succeeds.  There is still
a ton of work to do but this is a major milestone.

* Get sync and umount working properly.  Properly sync out in-memory records
  and inode updates, and properly release buffer cache buffers so the
  kernel can throw them away.

* Modifications to buffers backed by the buffer cache ensure that any
  asynchronous writes complete to avoid a modify-write race.

* Fix miscellanious reference counting bugs.

* Fix two insertion bugs for internal B-Tree nodes that were causing the
  code to blow up.
sys/vfs/hammer/hammer.h
sys/vfs/hammer/hammer_btree.c
sys/vfs/hammer/hammer_cursor.c
sys/vfs/hammer/hammer_inode.c
sys/vfs/hammer/hammer_io.c
sys/vfs/hammer/hammer_object.c
sys/vfs/hammer/hammer_ondisk.c
sys/vfs/hammer/hammer_spike.c
sys/vfs/hammer/hammer_subs.c
sys/vfs/hammer/hammer_transaction.c
sys/vfs/hammer/hammer_vnops.c