From fa36368c35cef8f38d2658b3089d0ede8ac9862b Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Wed, 21 Apr 2021 08:48:35 +0200
Subject: [PATCH] Use path length in space allocation

---
 secondary.py | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/secondary.py b/secondary.py
index 8a43dbe..8e9714b 100644
--- a/secondary.py
+++ b/secondary.py
@@ -74,7 +74,7 @@ class Backup:
         cwd = os.path.join(self.mount, self.path)
         reader = tar_stream.TarReader(self.primary_out)
         for e in reader:
-            self.make_room(e.size)
+            self.make_room(e.size, e.path)
             e.tarfile.extract(e, path=cwd)
         pass
 
@@ -117,15 +117,17 @@ class Backup:
             else:
                 self.status.unchanged += 1
                 
-    def make_room(self, size):
-        def get_free_need(size):
+    def make_room(self, size, path=None):
+        def get_free_need(size, path):
             stat = os.statvfs(self.dst_root)
             free = stat.f_frsize * stat.f_bavail
             need = size + stat.f_frsize
+            if path:
+                need += stat.f_frsize * len(path.split('/'))
             return (free, need)
         do_log = False
         while True:
-            free,need = get_free_need(size)
+            free,need = get_free_need(size, path)
             if do_log:
                 self.log.MESSAGE("After, free=%d, need=%d" % (free, need))
                 pass
-- 
GitLab