diff --git a/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.cpp b/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.cpp index 198964017c..47635f3b40 100644 --- a/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/VnodeToInode.cpp @@ -39,13 +39,8 @@ VnodeToInode::Unlink(InodeNames* parent, const char* name) { WriteLocker _(fLock); if (fInode != NULL && !IsRoot()) { - bool removed = fInode->GetFileSystem()->InoIdMap()->RemoveName(fID, - parent, name); - if (removed) { - delete fInode; - fInode = NULL; - } - return removed; + return fInode->GetFileSystem()->InoIdMap()->RemoveName(fID, parent, + name); } return false; diff --git a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp index a8c68bed40..b46d2608a9 100644 --- a/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/nfs4/kernel_interface.cpp @@ -341,13 +341,10 @@ nfs4_remove_vnode(fs_volume* volume, fs_vnode* vnode, bool reenter) if (node == fs->Root()) return B_OK; - if (node != NULL && node->IsStale()) { - // in the case of a stale node, VnodeToInode::Unlink was never called by the client, - // so the Inode hasn't been deleted yet - vti->Clear(); - } + // Verify that all known names have been unlinked. + FileInfo fileInfo; + ASSERT(fs->InoIdMap()->GetFileInfo(&fileInfo, vti->ID()) == B_ENTRY_NOT_FOUND); - ASSERT(vti->GetPointer() == NULL); delete vti; return B_OK;