git: hammer2 hammer2 - general stabilization, flusher, mmap, etc
Matthew Dillon
dillon at crater.dragonflybsd.org
Fri May 18 17:45:28 PDT 2012
commit 004f88b45de50f4b39b539be43b90529b027b4e5
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Fri May 18 17:19:17 2012 -0700
hammer2 - general stabilization, flusher, mmap, etc
* Revamp the flush logic. Flushes now stage the blockref related to the
data written out to the media. Higher level chains save the staged
blockref instead of the current blockref.
* This allows flushes to occur concurrent with active modification of the
topology without having to restart the flush. Modifications made after
the flush has started running will remain intact and not be committed
to media until the next flush (see note).
NOTE: Currently chain deletions break this, but this is the only issue
currently.
* Fix lost chains during unmount. Deleted chains can still have the MOVED
and/or MODIFIED bits set, which add additional refs and prevents them
from being freed.
Detect when a chain is being deleted permanently (verses temporarily due
to a rename) and clean out the bits in question.
NOTE: Currently deletions are removed from the in-memory topology, which
is why the previous NOTE above is still a problem, so we will need
to fix this and to retain at least the MOVED for flushes in
progress.
* Fix data corruption related to unflagged chains which wind up not getting
flushed and also due to a bug in the indirect block management code.
* Fix a mmap() access failure for cached direct-data (less than 512 bytes).
nvextendbuf() was not being called for the direct-data case during the
write().
* Buildworld with a HAMMER2 /usr/obj now succeeds.
* 'hammer2 pfs-create <label>' now defaults to a pfstype of MASTER,
instead of requiring that the pfstype always be specified.
Summary of changes:
sbin/hammer2/cmd_pfs.c | 6 +-
sys/vfs/hammer2/hammer2.h | 17 ++-
sys/vfs/hammer2/hammer2_chain.c | 421 +++++++++++++++++++------------------
sys/vfs/hammer2/hammer2_freemap.c | 63 +++++-
sys/vfs/hammer2/hammer2_inode.c | 69 ++++--
sys/vfs/hammer2/hammer2_ioctl.c | 3 +-
sys/vfs/hammer2/hammer2_subr.c | 4 +-
sys/vfs/hammer2/hammer2_vfsops.c | 7 +-
sys/vfs/hammer2/hammer2_vnops.c | 48 +++--
9 files changed, 374 insertions(+), 264 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/004f88b45de50f4b39b539be43b90529b027b4e5
--
DragonFly BSD source repository
More information about the Commits
mailing list