From b9d7e2db936bbb095dc228bfba316110d173f517 Mon Sep 17 00:00:00 2001 From: implicitfield <114500360+implicitfield@users.noreply.github.com> Date: Tue, 9 Apr 2024 00:31:47 +0300 Subject: [PATCH] Kernel/FATFS: Prefer `read_block()` over `raw_read()` `raw_read()` has proven to be a source of subtle bugs that occur as a result of the cache and disk contents being out of sync. --- Kernel/FileSystem/FATFS/Inode.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Kernel/FileSystem/FATFS/Inode.cpp b/Kernel/FileSystem/FATFS/Inode.cpp index 2f6a613eaec..2556d19bd08 100644 --- a/Kernel/FileSystem/FATFS/Inode.cpp +++ b/Kernel/FileSystem/FATFS/Inode.cpp @@ -84,7 +84,7 @@ ErrorOr> FATInode::compute_block_list() u32 fat_sector_index = fs().m_parameter_block->common_bpb()->reserved_sector_count + (fat_offset / fs().m_device_block_size); u32 entry_offset = fat_offset % fs().m_device_block_size; - TRY(fs().raw_read(fat_sector_index, fat_sector_buffer)); + TRY(fs().read_block(fat_sector_index, &fat_sector_buffer, m_device_block_size)); // Look up the next cluster to read, or read End of Chain marker from table. cluster = cluster_number(*fat_sector, cluster, entry_offset); @@ -191,7 +191,7 @@ ErrorOr> FATInode::read_block_list() for (BlockBasedFileSystem::BlockIndex block : m_block_list) { dbgln_if(FAT_DEBUG, "FATFS: reading block: {}", block); - TRY(fs().raw_read(block, buf)); + TRY(fs().read_block(block, &buf, sizeof(buffer))); TRY(builder.append((char const*)buffer, fs().m_device_block_size)); }