aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/ext2
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/src/filesystem/ext2')
-rw-r--r--kernel/src/filesystem/ext2/filesystem.cpp12
-rw-r--r--kernel/src/filesystem/ext2/inode.cpp2
2 files changed, 11 insertions, 3 deletions
diff --git a/kernel/src/filesystem/ext2/filesystem.cpp b/kernel/src/filesystem/ext2/filesystem.cpp
index d7c989c..7ee1072 100644
--- a/kernel/src/filesystem/ext2/filesystem.cpp
+++ b/kernel/src/filesystem/ext2/filesystem.cpp
@@ -36,6 +36,10 @@ namespace kernel::filesystem::ext2
constexpr uint16_t S_IFREG = 0x8000;
constexpr uint16_t S_IFDIR = 0x4000;
+ // Error codes
+ constexpr int INVALID_MAGIC_NUMBER = -1;
+ constexpr int INVALID_ROOT_INODE = -2;
+
auto S_ISREG(uint16_t mode) -> bool
{
return (mode & S_IFMT) == S_IFREG;
@@ -55,7 +59,7 @@ namespace kernel::filesystem::ext2
if (m_superblock.magic != MAGIC_NUMBER)
{
- return -1;
+ return INVALID_MAGIC_NUMBER;
}
auto const block_size = get_block_size();
@@ -70,7 +74,11 @@ namespace kernel::filesystem::ext2
num_block_groups * sizeof(block_group_descriptor));
m_root_inode = read_inode(ROOT_INODE_NUMBER);
- // TODO BA-FS26 check if root inode is valid and is a directory ??
+
+ if (!m_root_inode || !m_root_inode->is_directory())
+ {
+ return INVALID_ROOT_INODE;
+ }
return 0;
}
diff --git a/kernel/src/filesystem/ext2/inode.cpp b/kernel/src/filesystem/ext2/inode.cpp
index 7f4cf69..a29bb3b 100644
--- a/kernel/src/filesystem/ext2/inode.cpp
+++ b/kernel/src/filesystem/ext2/inode.cpp
@@ -53,7 +53,7 @@ namespace kernel::filesystem::ext2
auto inode::write(void const * /*buffer*/, size_t /*offset*/, size_t /*size*/) -> size_t
{
- // TODO BA-FS26 implement
+ kapi::system::panic("[EXT2] inode::write is not implemented yet");
return 0;
}
} // namespace kernel::filesystem::ext2 \ No newline at end of file