aboutsummaryrefslogtreecommitdiff
path: root/kernel/kernel/filesystem/ext2/inode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kernel/filesystem/ext2/inode.cpp')
-rw-r--r--kernel/kernel/filesystem/ext2/inode.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/kernel/kernel/filesystem/ext2/inode.cpp b/kernel/kernel/filesystem/ext2/inode.cpp
index 23344a7b..6dadbec5 100644
--- a/kernel/kernel/filesystem/ext2/inode.cpp
+++ b/kernel/kernel/filesystem/ext2/inode.cpp
@@ -6,6 +6,7 @@
#include <kapi/system.hpp>
#include <kstd/cstring.hpp>
+#include <kstd/result.hpp>
#include <algorithm>
#include <cstddef>
@@ -23,7 +24,7 @@ namespace kernel::filesystem::ext2
}
}
- auto inode::read(void * buffer, size_t offset, size_t size) const -> size_t
+ auto inode::read(void * buffer, size_t offset, size_t size) const -> kstd::result<size_t>
{
auto const max_readable = this->size() - offset;
auto const requested_size = std::min(size, max_readable);
@@ -58,9 +59,14 @@ namespace kernel::filesystem::ext2
{
auto const block_start_offset = block_number.value() * m_filesystem->block_size();
auto const read_offset = block_start_offset + in_block_offset;
-
- bytes_read += m_filesystem->backing_inode()->read(static_cast<uint8_t *>(buffer) + bytes_read, read_offset,
- bytes_to_read);
+ auto const read_result = m_filesystem->backing_inode()->read(static_cast<uint8_t *>(buffer) + bytes_read,
+ read_offset, bytes_to_read);
+ if (!read_result)
+ {
+ return kstd::failure(read_result.error());
+ }
+
+ bytes_read += read_result.value();
}
block_index++;
@@ -70,7 +76,7 @@ namespace kernel::filesystem::ext2
return bytes_read;
}
- auto inode::write(void const *, size_t, size_t) -> size_t
+ auto inode::write(void const *, size_t, size_t) -> kstd::result<size_t>
{
kapi::system::panic("[EXT2] inode::write is not implemented yet");
return 0;