diff --git a/secondary.py b/secondary.py
index 8a43dbe610142bd1665e439084c8f223445fb969..8e9714be98bcae392f683ea0ed625c18423fb97e 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