We need to remove the tree from the transaction. Fixes #3159.
* The tree does keep a reference to the inode as well as long as it is part of a transaction. * Even if it wouldn't have done it (and would not have triggered the panic), Haiku would likely have crashed, as the inode (and therefore its tree) was already deleted at the time when the transaction discarded its listeners.
This commit is contained in:
@@ -176,6 +176,9 @@ InodeAllocator::~InodeAllocator()
|
||||
fInode->Node().flags &= ~HOST_ENDIAN_TO_BFS_INT32(INODE_IN_USE);
|
||||
// this unblocks any pending bfs_read_vnode() calls
|
||||
fInode->Free(*fTransaction);
|
||||
|
||||
if (fInode->fTree != NULL)
|
||||
fTransaction->RemoveListener(fInode->fTree);
|
||||
fTransaction->RemoveListener(fInode);
|
||||
|
||||
remove_vnode(volume->FSVolume(), fInode->ID());
|
||||
|
||||
Reference in New Issue
Block a user