diff options
| author | bingoohuang <bingoo.huang@gmail.com> | 2021-04-26 17:15:17 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-26 17:15:17 +0800 |
| commit | 4ee58922eff61a5a4ca29c0b4829b097a498549e (patch) | |
| tree | 301805fef4aa5d0096bfb1510536f7a009b661e7 /weed/filesys/dir_rename.go | |
| parent | 5cdff56731d6be220d4d6e8624b859520dfeb021 (diff) | |
| parent | 86185262bb86e31f9a2f71e85d02df2502c7ad40 (diff) | |
| download | seaweedfs-4ee58922eff61a5a4ca29c0b4829b097a498549e.tar.xz seaweedfs-4ee58922eff61a5a4ca29c0b4829b097a498549e.zip | |
Merge pull request #6 from chrislusf/master
Diffstat (limited to 'weed/filesys/dir_rename.go')
| -rw-r--r-- | weed/filesys/dir_rename.go | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/weed/filesys/dir_rename.go b/weed/filesys/dir_rename.go index d2acad4b2..b07710d17 100644 --- a/weed/filesys/dir_rename.go +++ b/weed/filesys/dir_rename.go @@ -64,19 +64,28 @@ func (dir *Dir) Rename(ctx context.Context, req *fuse.RenameRequest, newDirector return fuse.EIO } - // fmt.Printf("rename path: %v => %v\n", oldPath, newPath) - dir.wfs.fsNodeCache.Move(oldPath, newPath) + 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 err + return nil } + glog.V(4).Infof("opened filehandle %s => %s", oldPath, newPath) delete(dir.wfs.handles, inodeId) dir.wfs.handles[newPath.AsInode()] = existingHandle - return err + return nil } |
