mirror of
https://github.com/fergalmoran/ladybird.git
synced 2025-12-25 10:48:41 +00:00
Ext2FS: Deallocate block list meta blocks when freeing an inode
When computing the list of blocks to deallocate when freeing an inode, we would stop collecting blocks after reaching the inode's block count. Since we're getting rid of the inode, we need to also include the meta blocks used by the on-disk block list itself.
This commit is contained in:
@@ -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::BlockIndex> 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<BlockIndex> list;
|
||||
|
||||
auto add_block = [&](BlockIndex bi) {
|
||||
|
||||
Reference in New Issue
Block a user