Browse Source

rename also applies to open file handle

Chris Lu 4 years ago
parent
commit
a7f669044e
1 changed files with 8 additions and 1 deletions
  1. 8 1
      weed/filesys/dir_rename.go

+ 8 - 1
weed/filesys/dir_rename.go

@@ -64,9 +64,16 @@ func (dir *Dir) Rename(ctx context.Context, req *fuse.RenameRequest, newDirector
 	// fmt.Printf("rename path: %v => %v\n", oldPath, newPath)
 	dir.wfs.fsNodeCache.Move(oldPath, newPath)
 
+	// change file handle
 	dir.wfs.handlesLock.Lock()
 	defer dir.wfs.handlesLock.Unlock()
-	delete(dir.wfs.handles, oldPath.AsInode())
+	inodeId := oldPath.AsInode()
+	existingHandle, found := dir.wfs.handles[inodeId]
+	if !found || existingHandle == nil {
+		return err
+	}
+	delete(dir.wfs.handles, inodeId)
+	dir.wfs.handles[newPath.AsInode()] = existingHandle
 
 	return err
 }