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.cpp2
-rw-r--r--kernel/src/filesystem/ext2/inode.cpp12
2 files changed, 11 insertions, 3 deletions
diff --git a/kernel/src/filesystem/ext2/filesystem.cpp b/kernel/src/filesystem/ext2/filesystem.cpp
index 56c0b88..514bb59 100644
--- a/kernel/src/filesystem/ext2/filesystem.cpp
+++ b/kernel/src/filesystem/ext2/filesystem.cpp
@@ -136,7 +136,7 @@ namespace kernel::filesystem::ext2
auto const inode_table_offset = static_cast<size_t>(inode_table_start_block) * block_size;
auto const inode_offset = inode_table_offset + inode_index_within_group * get_inode_size();
- auto new_inode = kstd::make_shared<inode>();
+ auto new_inode = kstd::make_shared<inode>(this);
kernel::devices::block_device_utils::read(m_device, &new_inode->m_data, inode_offset, sizeof(inode_data));
// TODO BA-FS26 improve inode_kind really needed? or just map it to the mode bits?
diff --git a/kernel/src/filesystem/ext2/inode.cpp b/kernel/src/filesystem/ext2/inode.cpp
index b75969a..4d36e66 100644
--- a/kernel/src/filesystem/ext2/inode.cpp
+++ b/kernel/src/filesystem/ext2/inode.cpp
@@ -1,14 +1,22 @@
#include "kernel/filesystem/ext2/inode.hpp"
+#include "kapi/system.hpp"
+
#include "kernel/filesystem/inode.hpp"
#include <cstddef>
namespace kernel::filesystem::ext2
{
- inode::inode()
+ inode::inode(filesystem * fs)
: kernel::filesystem::inode(inode_kind::regular)
- {}
+ , m_filesystem(fs)
+ {
+ if (!m_filesystem)
+ {
+ kapi::system::panic("[EXT2] ext2::inode constructed with filesystem null pointer");
+ }
+ }
auto inode::read(void * /*buffer*/, size_t /*offset*/, size_t /*size*/) const -> size_t
{