aboutsummaryrefslogtreecommitdiff
path: root/weed/filesys/dir_rename.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-04-17 10:48:22 -0700
committerChris Lu <chris.lu@gmail.com>2021-04-18 13:07:28 -0700
commit6cbd786db9b96833248444c42992c239f2424d95 (patch)
treed9ff8c06b5664858d14e16cfdf04b7eca95aabe0 /weed/filesys/dir_rename.go
parentd41e6826d3a0a51750e3f9c14b33a6aa9953bb09 (diff)
downloadseaweedfs-6cbd786db9b96833248444c42992c239f2424d95.tar.xz
seaweedfs-6cbd786db9b96833248444c42992c239f2424d95.zip
correctly runs git clone
Diffstat (limited to 'weed/filesys/dir_rename.go')
-rw-r--r--weed/filesys/dir_rename.go11
1 files changed, 11 insertions, 0 deletions
diff --git a/weed/filesys/dir_rename.go b/weed/filesys/dir_rename.go
index 7bc705102..b07710d17 100644
--- a/weed/filesys/dir_rename.go
+++ b/weed/filesys/dir_rename.go
@@ -64,11 +64,22 @@ func (dir *Dir) Rename(ctx context.Context, req *fuse.RenameRequest, newDirector
return fuse.EIO
}
+ oldFsNode := NodeWithId(oldPath.AsInode())
+ newFsNode := NodeWithId(newPath.AsInode())
+ dir.wfs.Server.InvalidateInternalNode(oldFsNode, newFsNode, func(internalNode fs.Node) {
+ if file, ok := internalNode.(*File); ok {
+ glog.V(4).Infof("internal node %s", file.Name)
+ file.Name = req.NewName
+ file.id = uint64(newFsNode)
+ }
+ })
+
// change file handle
dir.wfs.handlesLock.Lock()
defer dir.wfs.handlesLock.Unlock()
inodeId := oldPath.AsInode()
existingHandle, found := dir.wfs.handles[inodeId]
+ glog.V(4).Infof("has open filehandle %s: %v", oldPath, found)
if !found || existingHandle == nil {
return nil
}