* Copyright 2012 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Paweł Dziepak, pdziepak@quarnos.org
*/
#include "VnodeToInode.h"
Inode*
VnodeToInode::Get()
{
if (fInode == NULL) {
status_t result = fFileSystem->GetInode(fID, &fInode);
if (result != B_OK)
fInode = NULL;
}
return fInode;
}
void
VnodeToInode::Replace(Inode* newInode)
{
WriteLocker _(fLock);
if (!IsRoot())
delete fInode;
fInode = newInode;
}
bool
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 false;
}