DragonFly-2.3.0.838.g4c286c master sys/vfs/hammer hammer.h hammer_btree.c hammer_cursor.c hammer_inode.c hammer_ioctl.h hammer_mirror.c hammer_object.c hammer_ondisk.c hammer_vnops.c
Matthew Dillon
dillon at crater.dragonflybsd.org
Wed Apr 29 15:51:32 PDT 2009
commit 4c286c362d37391fa082d7eb6975b4519ff49d91
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Wed Apr 29 15:34:59 2009 -0700
HAMMER VFS - Better CRC handling, bad-file handling.
Data CRC errors should now generate EIO instead of panic()ing the system.
B-Tree CRC errors might still panic() and freemap CRC errors WILL still
panic().
Continuing from DDB on a B-Tree node CRC error when debugging is enabled
now no longer marks the B-Tree node as good.
The mirror-read command will now transfer data records with bad CRCs
instead of aborting the transfer, identifying them with a new type field.
The mirror-write ioctl currently ignores such records.
If a directory entry is encountered and the related inode cannot be
looked up, generate a dummy in-memory inode of type FIFO to placemark
the bad directory entry, allowing it to be removed. Currently it is
possible for a directory entry to be synced to the media in a different
transaction then the related inode (a bug which needs to be fixed).
If a crash occurs at the wrong time the recovery code can leave the media
in a state where the directory entry exists but the inode does not. This
change allows the bad directory entry to be removed.
Reported-by: Antonio Huete Jimenez
Summary of changes:
sys/vfs/hammer/hammer.h | 14 ++++-
sys/vfs/hammer/hammer_btree.c | 7 ++-
sys/vfs/hammer/hammer_cursor.c | 2 +-
sys/vfs/hammer/hammer_inode.c | 123 ++++++++++++++++++++++++++++++++++++++--
sys/vfs/hammer/hammer_ioctl.h | 17 ++++++
sys/vfs/hammer/hammer_mirror.c | 31 +++++++++-
sys/vfs/hammer/hammer_object.c | 35 ++++++++----
sys/vfs/hammer/hammer_ondisk.c | 48 ++++++++++++----
sys/vfs/hammer/hammer_vnops.c | 35 +++++++++--
9 files changed, 271 insertions(+), 41 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/4c286c362d37391fa082d7eb6975b4519ff49d91
--
DragonFly BSD source repository
More information about the Commits
mailing list