aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/ext2/filesystem.cpp
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-04-08 09:31:32 +0200
committerLukas Oesch <lukasoesch20@gmail.com>2026-04-11 07:58:20 +0200
commitdd330e7a05905713acfa87ec109956bfe78f78c4 (patch)
treecb2d740da921f6ebf34269e08ef43413bd510d79 /kernel/src/filesystem/ext2/filesystem.cpp
parent2240b9a36e4a9f6f8291c9271e6aac8f5536dbd7 (diff)
downloadteachos-dd330e7a05905713acfa87ec109956bfe78f78c4.tar.xz
teachos-dd330e7a05905713acfa87ec109956bfe78f78c4.zip
add descriptions, some refactoring
Diffstat (limited to 'kernel/src/filesystem/ext2/filesystem.cpp')
-rw-r--r--kernel/src/filesystem/ext2/filesystem.cpp12
1 files changed, 10 insertions, 2 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;
}