DragonFly commits List (threaded) for 2008-07
cvs commit: src/sys/vfs/hammer hammer.h hammer_blockmap.c hammer_btree.c hammer_io.c hammer_mirror.c hammer_object.c hammer_ondisk.c hammer_vnops.c
dillon 2008/07/31 15:30:33 PDT
DragonFly src repository
sys/vfs/hammer hammer.h hammer_blockmap.c hammer_btree.c
HAMMER: Mirroring work
* Fix an invalidation race that can be triggered by the mirroring or
reblocking code. The invalidation was being made before the direct IO
completed rather then after.
* Fix an invalidation race. hammer_io_inval() was cleaning out any
pre-existing buffer cache buffer aliases but was not cleaning out the
VM backing store, resulting in CRC assertions (but no on-media corruption)
by the mirroring code.
* Change the bulk-record sequencing to avoid adding the record to
the inode's record list until after the direct-io has been initiated.
* Change the mirror_read code to generate PASS records for deleted records
whos create_tid is out of bounds, so we do not have to transport the
data for deleted data records. This greatly reduces the mirror bandwidth
needed to mirror deletions.
The mirror_write code similarly will issue delete_tid updates as
appropriate when presented with a PASS record.
* Mirror targets no longer strip deleted records which had yet to be created
on the target. The record is now created so snapshot state is retained.
Revision Changes Path
1.125 +3 -0 src/sys/vfs/hammer/hammer.h
1.27 +5 -1 src/sys/vfs/hammer/hammer_blockmap.c
1.75 +4 -1 src/sys/vfs/hammer/hammer_btree.c
1.52 +77 -36 src/sys/vfs/hammer/hammer_io.c
1.17 +34 -23 src/sys/vfs/hammer/hammer_mirror.c
1.93 +15 -35 src/sys/vfs/hammer/hammer_object.c
1.74 +1 -1 src/sys/vfs/hammer/hammer_ondisk.c
1.94 +0 -1 src/sys/vfs/hammer/hammer_vnops.c