From 20205708b911951a311539839d7715c915d46579 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 24 Nov 2020 11:49:46 +0100 Subject: [PATCH] Ext2FS: Use cached inode block list in resize() if available If we have already cached the block list of an Ext2FSInode, we can save a lot of time by not regenerating it. --- Kernel/FileSystem/Ext2FileSystem.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Kernel/FileSystem/Ext2FileSystem.cpp b/Kernel/FileSystem/Ext2FileSystem.cpp index 00e2a82b22..8de53f4f64 100644 --- a/Kernel/FileSystem/Ext2FileSystem.cpp +++ b/Kernel/FileSystem/Ext2FileSystem.cpp @@ -772,7 +772,12 @@ KResult Ext2FSInode::resize(u64 new_size) return KResult(-ENOSPC); } - auto block_list = fs().block_list_for_inode(m_raw_inode); + Vector block_list; + if (!m_block_list.is_empty()) + block_list = m_block_list; + else + fs().block_list_for_inode(m_raw_inode); + if (blocks_needed_after > blocks_needed_before) { auto new_blocks = fs().allocate_blocks(fs().group_index_from_inode(index()), blocks_needed_after - blocks_needed_before); block_list.append(move(new_blocks));