From e95be4caf33e38246a14be6691f11dd5c4c61b7a Mon Sep 17 00:00:00 2001 From: Jeremy Soller <jackpot51@gmail.com> Date: Tue, 1 Aug 2017 18:23:45 -0600 Subject: [PATCH] Dealocate when node size changes --- src/filesystem.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/filesystem.rs b/src/filesystem.rs index 38408f4..a625052 100644 --- a/src/filesystem.rs +++ b/src/filesystem.rs @@ -265,6 +265,7 @@ impl FileSystem { } } + self.node_set_len(node.0, 0)?; self.remove_blocks(node.0, 1, parent_block)?; self.write_at(node.0, &Node::default())?; @@ -331,7 +332,11 @@ impl FileSystem { let mut node = self.node(block)?; for mut extent in node.1.extents.iter_mut() { if extent.length > length { - //TODO: self.deallocate(block, 512)?; + let start = (length + 511)/512; + let end = (extent.length + 511)/512 + if end > start { + self.deallocate(extent.block + start, (end - start) * 512)?; + } extent.length = length; changed = true; length = 0; -- GitLab