看板 DFBSD_commit 關於我們 聯絡資訊
commit c9ce54d64fd77d8901f15263a4acbfda66fc1d0b Author: Matthew Dillon <dillon@apollo.backplane.com> Date: Thu Sep 3 08:18:43 2009 -0700 HAMMER - Fix lost inode issue (primarily with nohistory mounts) * When a HAMMER cursor is unlocked it becomes tracked and unrelated B-Tree operations will cause the tracked cursor's nodes and indices to be updated. The cursor structure also has a leaf element pointer which was not being properly updated. This could lead to panics and lost inodes. Properly adjust the leaf element pointer in tracked cursors. * The bug primarily occurs with nohistory mounts or nohistory sub-trees due to the larger number of physical deletions made to the B-Tree, but could also occur (rarely) with normal mounts. * Add additional assertions to catch any further occurrences (though I think all the cases have been covered now). * Add a new sysctl vfs.hammer.error_panic which can be set to e.g. 9 to cause critical errors to panic immediately instead of returning through the call stack, making debugging possible. Reported-by: Numerous people Summary of changes: sys/vfs/hammer/hammer_btree.c | 7 +++++ sys/vfs/hammer/hammer_cursor.c | 50 ++++++++++++++++++++++++++++++++++++- sys/vfs/hammer/hammer_inode.c | 2 + sys/vfs/hammer/hammer_mirror.c | 6 ++++ sys/vfs/hammer/hammer_object.c | 13 +++++++++- sys/vfs/hammer/hammer_pfs.c | 2 + sys/vfs/hammer/hammer_prune.c | 3 ++ sys/vfs/hammer/hammer_rebalance.c | 3 ++ sys/vfs/hammer/hammer_reblock.c | 10 ++++++- sys/vfs/hammer/hammer_vfsops.c | 14 ++++++++-- sys/vfs/hammer/hammer_vnops.c | 3 ++ 11 files changed, 107 insertions(+), 6 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/c9ce54d64fd77d8901f15263a4acbfda66fc1d0b -- DragonFly BSD source repository