* Only remove the inode from the Volume::RemovedNodes() list when it has gone
through the VFS. * This fixes bug #4942. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34007 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
70d385fb2f
commit
b6670723e1
@ -398,9 +398,6 @@ Inode::~Inode()
|
|||||||
file_map_delete(Map());
|
file_map_delete(Map());
|
||||||
delete fTree;
|
delete fTree;
|
||||||
|
|
||||||
if ((Flags() & INODE_DELETED) != 0)
|
|
||||||
fVolume->RemovedInodes().Remove(this);
|
|
||||||
|
|
||||||
rw_lock_destroy(&fLock);
|
rw_lock_destroy(&fLock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -363,6 +363,8 @@ bfs_remove_vnode(fs_volume* _volume, fs_vnode* _node, bool reenter)
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ASSERT((inode->Flags() & INODE_DELETED) != 0);
|
||||||
|
|
||||||
status_t status = inode->Free(transaction);
|
status_t status = inode->Free(transaction);
|
||||||
if (status == B_OK) {
|
if (status == B_OK) {
|
||||||
status = transaction.Done();
|
status = transaction.Done();
|
||||||
@ -371,6 +373,8 @@ bfs_remove_vnode(fs_volume* _volume, fs_vnode* _node, bool reenter)
|
|||||||
status = transaction.Done();
|
status = transaction.Done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
volume->RemovedInodes().Remove(inode);
|
||||||
|
|
||||||
// TODO: the VFS currently does not allow this to fail
|
// TODO: the VFS currently does not allow this to fail
|
||||||
delete inode;
|
delete inode;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user