git: HAMMER - Fix lost inode issue (primarily with nohistory mou

看板DFBSD_commit作者時間16年前 (2009/09/04 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
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
文章代碼(AID): #1Ae0HiP- (DFBSD_commit)