From e2781ac743aa7fbf6372c2f39dd234336b06cb86 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sat, 2 Jul 2016 02:19:59 -0500 Subject: [PATCH] Add first inode to FileStore Added first inode refernce to FileStore so m_root can be something other than the first inode. --- src/ox/fs/filestore.hpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/ox/fs/filestore.hpp b/src/ox/fs/filestore.hpp index fbeff9205..d3e0e59ad 100644 --- a/src/ox/fs/filestore.hpp +++ b/src/ox/fs/filestore.hpp @@ -48,6 +48,7 @@ class FileStore { uint32_t m_version; FsSize_t m_size; + FsSize_t m_firstInode; FsSize_t m_rootInode; public: @@ -112,7 +113,7 @@ class FileStore { void *alloc(FsSize_t size); /** - * Compresses all of the inode into a contiguous space, starting at m_rootInode. + * Compresses all of the inode into a contiguous space, starting at m_firstInode. */ void compress(); @@ -261,14 +262,13 @@ void *FileStore::alloc(FsSize_t size) { const auto inode = ptr(retval); memset(inode, 0, size); inode->next = retval + size; - ptr(m_rootInode)->prev = retval; - ptr(inode->next)->prev = retval; + ptr(m_firstInode)->prev = retval; return inode; } template void FileStore::compress() { - auto current = ptr(m_rootInode); + auto current = ptr(m_firstInode); while (current->next) { auto prevEnd = current + current->size(); current = ptr(current->next); @@ -319,7 +319,7 @@ typename FileStore::Inode *FileStore::firstInode() { template typename FileStore::Inode *FileStore::lastInode() { - return ptr(ptr(m_rootInode)->prev); + return ptr(ptr(m_firstInode)->prev); } template @@ -335,6 +335,7 @@ uint8_t *FileStore::format(uint8_t *buffer, FsSize_t size) { fs->m_version = FileStore::version(); fs->m_size = size; fs->m_rootInode = sizeof(FileStore); + fs->m_firstInode = sizeof(FileStore); fs->lastInode()->m_id = 0; fs->lastInode()->next = sizeof(FileStore);