aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-11-01 01:33:26 -0800
committerChris Lu <chris.lu@gmail.com>2020-11-01 01:33:26 -0800
commit4609644658c824f7e8feb0a741b3fbc8de6da5a6 (patch)
treebc741e2ce4ecea681b5c119db35d4ac2310d87ca
parentdf8d976bb0deb087b639b277862e4ad0ea2e0dc6 (diff)
downloadseaweedfs-4609644658c824f7e8feb0a741b3fbc8de6da5a6.tar.xz
seaweedfs-4609644658c824f7e8feb0a741b3fbc8de6da5a6.zip
mount: remove files that may still are open
related to https://github.com/chrislusf/seaweedfs/issues/1581
-rw-r--r--weed/filesys/dir.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/weed/filesys/dir.go b/weed/filesys/dir.go
index 7c0a2b0e2..d29bc9b90 100644
--- a/weed/filesys/dir.go
+++ b/weed/filesys/dir.go
@@ -364,6 +364,12 @@ func (dir *Dir) removeOneFile(req *fuse.RemoveRequest) error {
dir.wfs.metaCache.DeleteEntry(context.Background(), filePath)
dir.wfs.fsNodeCache.DeleteFsNode(filePath)
+ // remove current file handle if any
+ dir.wfs.handlesLock.Lock()
+ defer dir.wfs.handlesLock.Unlock()
+ inodeId := util.NewFullPath(dir.FullPath(), req.Name).AsInode()
+ delete(dir.wfs.handles, inodeId)
+
// delete the chunks last
if isDeleteData {
dir.wfs.deleteFileChunks(entry.Chunks)