diff --git a/src/add-ons/kernel/file_systems/bfs/Inode.cpp b/src/add-ons/kernel/file_systems/bfs/Inode.cpp index 8c763c298a..999258b1aa 100644 --- a/src/add-ons/kernel/file_systems/bfs/Inode.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Inode.cpp @@ -398,9 +398,6 @@ Inode::~Inode() file_map_delete(Map()); delete fTree; - if ((Flags() & INODE_DELETED) != 0) - fVolume->RemovedInodes().Remove(this); - rw_lock_destroy(&fLock); } diff --git a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp index cc17b47f09..d11552e457 100644 --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp @@ -363,6 +363,8 @@ bfs_remove_vnode(fs_volume* _volume, fs_vnode* _node, bool reenter) return B_OK; } + ASSERT((inode->Flags() & INODE_DELETED) != 0); + status_t status = inode->Free(transaction); if (status == B_OK) { status = transaction.Done(); @@ -371,6 +373,8 @@ bfs_remove_vnode(fs_volume* _volume, fs_vnode* _node, bool reenter) status = transaction.Done(); } + volume->RemovedInodes().Remove(inode); + // TODO: the VFS currently does not allow this to fail delete inode;