From: Matthew Dillon Date: Sat, 12 Dec 2009 18:50:22 +0000 (-0800) Subject: HAMMER VFS - Fix incorrect hammer_cursor_removed_node() call in btree_remove() X-Git-Tag: v2.7.1~320 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/901ba05cd0e7874977a4a937d1b2f9a76ffb9c2d HAMMER VFS - Fix incorrect hammer_cursor_removed_node() call in btree_remove() * hammer_cursor_removed_node() was being called on the wrong node. This fixes a parent != NULL assertion later on. * There is still at least one known issue where btree_iterate can panic due to a cursor tracking issue that has not yet been located. --- diff --git a/sys/vfs/hammer/hammer_btree.c b/sys/vfs/hammer/hammer_btree.c index 6ee1e1aa64..050d4a2b7f 100644 --- a/sys/vfs/hammer/hammer_btree.c +++ b/sys/vfs/hammer/hammer_btree.c @@ -2226,9 +2226,10 @@ btree_remove(hammer_cursor_t cursor) hammer_cursor_deleted_element(cursor->node, 0); error = btree_remove(cursor); if (error == 0) { + KKASSERT(node != cursor->node); hammer_cursor_removed_node( - node, cursor->parent, - cursor->parent_index); + node, cursor->node, + cursor->index); hammer_modify_node_all(cursor->trans, node); ondisk = node->ondisk; ondisk->type = HAMMER_BTREE_TYPE_DELETED;