|
@@ -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
|
|
|
}
|