aboutsummaryrefslogtreecommitdiffstats
path: root/FuseArchive
diff options
context:
space:
mode:
Diffstat (limited to 'FuseArchive')
-rw-r--r--FuseArchive/ChunkFile.py7
-rw-r--r--FuseArchive/FileSystem.py4
2 files changed, 9 insertions, 2 deletions
diff --git a/FuseArchive/ChunkFile.py b/FuseArchive/ChunkFile.py
index 7cc8e07..e19a9fb 100644
--- a/FuseArchive/ChunkFile.py
+++ b/FuseArchive/ChunkFile.py
@@ -476,6 +476,13 @@ class ChunkFile(object):
logging.debug( "_fflush exit" )
return 1
+ def pre_unlink(self):
+ # Release all our blocks and our main file key
+ logging.debug( "Unlocking all our chunks for unlink" )
+ for key in self.chunks:
+ unlock_chunk( key )
+
+ unlock_chunk( self.original_key )
# Currently we treat fsync as flush since we don't keep any data
# hanging around anyway in fh stuff
diff --git a/FuseArchive/FileSystem.py b/FuseArchive/FileSystem.py
index 16e5b2c..dfb5515 100644
--- a/FuseArchive/FileSystem.py
+++ b/FuseArchive/FileSystem.py
@@ -47,9 +47,9 @@ class FileSystem(fuse.Fuse):
yield fuse.Direntry(e)
def unlink(self, path):
- # Do a truncate to free our chunks
+ # Ask our file to release it's chunks
f = ChunkFile( path, os.O_RDWR, 0 )
- f.ftruncate( 0 )
+ f.pre_unlink()
f.release( 0 )
os.unlink("./tree" + path)