diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp index e85b302e02e..d991924b959 100644 --- a/Kernel/FileSystem/Ext2FileSystem.cpp +++ b/Kernel/FileSystem/Ext2FileSystem.cpp @@ -184,7 +184,7 @@ bool Ext2FS::find_block_containing_inode(unsigned inode, unsigned& block_index, return true; } -Ext2FS::BlockListShape Ext2FS::compute_block_list_shape(unsigned blocks) +Ext2FS::BlockListShape Ext2FS::compute_block_list_shape(unsigned blocks) const { BlockListShape shape; const unsigned entries_per_block = EXT2_ADDR_PER_BLOCK(&super_block()); @@ -440,6 +440,12 @@ Vector Ext2FS::block_list_for_inode_impl(const ext2_inode& e #endif unsigned blocks_remaining = block_count; + + if (include_block_list_blocks) { + auto shape = compute_block_list_shape(block_count); + blocks_remaining += shape.meta_blocks; + } + Vector list; auto add_block = [&](BlockIndex bi) { diff --git a/Kernel/FileSystem/Ext2FileSystem.h b/Kernel/FileSystem/Ext2FileSystem.h index 7d28b84ff27..d274fb082e2 100644 --- a/Kernel/FileSystem/Ext2FileSystem.h +++ b/Kernel/FileSystem/Ext2FileSystem.h @@ -165,7 +165,7 @@ private: unsigned meta_blocks { 0 }; }; - BlockListShape compute_block_list_shape(unsigned blocks); + BlockListShape compute_block_list_shape(unsigned blocks) const; unsigned m_block_group_count { 0 };