aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/filesystem/ext2/filesystem.cpp
diff options
context:
space:
mode:
authorMarcel Braun <marcel.braun@ost.ch>2026-05-12 13:50:56 +0200
committerMarcel Braun <marcel.braun@ost.ch>2026-05-12 13:50:56 +0200
commit988977b80cd118749b6b813e0909f4607a4f27fe (patch)
treeae124f5928ded32cdb56c93eddf0d695ccb524aa /kernel/src/filesystem/ext2/filesystem.cpp
parent92994a0c662e19bc94a06a544520e8a48bf8f11e (diff)
downloadkernel-988977b80cd118749b6b813e0909f4607a4f27fe.tar.xz
kernel-988977b80cd118749b6b813e0909f4607a4f27fe.zip
Determine ext2 inode size depending on revision level, add const to several methods
Diffstat (limited to 'kernel/src/filesystem/ext2/filesystem.cpp')
-rw-r--r--kernel/src/filesystem/ext2/filesystem.cpp20
1 files changed, 13 insertions, 7 deletions
diff --git a/kernel/src/filesystem/ext2/filesystem.cpp b/kernel/src/filesystem/ext2/filesystem.cpp
index 47e54fe..aaa50c7 100644
--- a/kernel/src/filesystem/ext2/filesystem.cpp
+++ b/kernel/src/filesystem/ext2/filesystem.cpp
@@ -89,7 +89,7 @@ namespace kernel::filesystem::ext2
return nullptr;
}
- auto filesystem::read_inode(uint32_t inode_number) -> kstd::shared_ptr<inode>
+ auto filesystem::read_inode(uint32_t inode_number) const -> kstd::shared_ptr<inode>
{
auto const block_size = get_block_size();
auto const inodes_per_group = m_superblock.inodes_per_group;
@@ -112,7 +112,8 @@ namespace kernel::filesystem::ext2
return kstd::make_shared<inode>(this, new_inode_data);
}
- auto filesystem::map_inode_block_index_to_global_block_number(uint32_t inode_block_index, inode_data data) -> uint32_t
+ auto filesystem::map_inode_block_index_to_global_block_number(uint32_t inode_block_index, inode_data data) const
+ -> uint32_t
{
if (inode_block_index < constants::direct_block_count)
{
@@ -170,7 +171,7 @@ namespace kernel::filesystem::ext2
return 0; // TODO BA-FS26 really correct??
}
- auto filesystem::read_block_number_at_index(uint32_t block_number, uint32_t index) -> uint32_t
+ auto filesystem::read_block_number_at_index(uint32_t block_number, uint32_t index) const -> uint32_t
{
uint32_t block_number_buffer = 0;
@@ -181,17 +182,22 @@ namespace kernel::filesystem::ext2
return block_number_buffer;
}
- auto filesystem::get_block_size() -> size_t
+ auto filesystem::get_block_size() const -> size_t
{
return constants::base_block_size << m_superblock.log_block_size;
}
- auto filesystem::get_inode_size() -> size_t
+ auto filesystem::get_revision_level() const -> size_t
{
- return m_superblock.rev_level == 0 ? 128 : m_superblock.inode_size;
+ return m_superblock.rev_level;
}
- auto filesystem::get_inode_block_count(inode_data const & data) -> uint32_t
+ auto filesystem::get_inode_size() const -> size_t
+ {
+ return get_revision_level() == constants::good_old_revision ? 128 : m_superblock.inode_size;
+ }
+
+ auto filesystem::get_inode_block_count(inode_data const & data) const -> uint32_t
{
return data.blocks / (2 << m_superblock.log_block_size);
}