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