FS: Don't default to having a full InodeMetadata in every Inode.

This allows Ext2FS to keep its own ext2_inode around instead.
This commit is contained in:
Andreas Kling 2019-01-01 03:16:36 +01:00
parent 0cb074dc73
commit d07b08a287
Notes: sideshowbarker 2024-07-19 16:06:16 +09:00
8 changed files with 93 additions and 80 deletions

View file

@ -51,7 +51,7 @@ auto VFS::makeNode(InodeIdentifier inode) -> RetainPtr<Vnode>
if (!core_inode)
return nullptr;
auto& metadata = core_inode->metadata();
auto metadata = core_inode->metadata();
InterruptDisabler disabler;
@ -74,7 +74,6 @@ auto VFS::makeNode(InodeIdentifier inode) -> RetainPtr<Vnode>
vnode->inode = inode;
vnode->m_core_inode = move(core_inode);
vnode->m_cachedMetadata = metadata;
#ifdef VFS_DEBUG
kprintf("makeNode: inode=%u, size=%u, mode=%o, uid=%u, gid=%u\n", inode.index(), metadata.size, metadata.mode, metadata.uid, metadata.gid);
@ -474,11 +473,12 @@ void Vnode::release()
}
}
const InodeMetadata& Vnode::metadata() const
InodeMetadata Vnode::metadata() const
{
if (m_core_inode)
return m_core_inode->metadata();
return m_cachedMetadata;
ASSERT_NOT_REACHED();
return { };
}
VFS::Mount::Mount(InodeIdentifier host, RetainPtr<FS>&& guest_fs)