mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
mount: rename also invalidate source inode
This commit is contained in:
parent
48382676d2
commit
d685b94102
|
@ -152,7 +152,7 @@ func (i *InodeToPath) RemovePath(path util.FullPath) {
|
|||
}
|
||||
}
|
||||
|
||||
func (i *InodeToPath) MovePath(sourcePath, targetPath util.FullPath) (replacedInode uint64) {
|
||||
func (i *InodeToPath) MovePath(sourcePath, targetPath util.FullPath) (sourceInode, targetInode uint64) {
|
||||
i.Lock()
|
||||
defer i.Unlock()
|
||||
sourceInode, sourceFound := i.path2inode[sourcePath]
|
||||
|
@ -178,7 +178,7 @@ func (i *InodeToPath) MovePath(sourcePath, targetPath util.FullPath) (replacedIn
|
|||
} else {
|
||||
glog.Errorf("MovePath %s to %s: sourceInode %d not found", sourcePath, targetPath, sourceInode)
|
||||
}
|
||||
return targetInode
|
||||
return
|
||||
}
|
||||
|
||||
func (i *InodeToPath) Forget(inode, nlookup uint64, onForgetDir func(dir util.FullPath)) {
|
||||
|
|
|
@ -233,10 +233,16 @@ func (wfs *WFS) handleRenameResponse(ctx context.Context, resp *filer_pb.StreamR
|
|||
oldPath := oldParent.Child(oldName)
|
||||
newPath := newParent.Child(newName)
|
||||
|
||||
replacedInode := wfs.inodeToPath.MovePath(oldPath, newPath)
|
||||
sourceInode, targetInode := wfs.inodeToPath.MovePath(oldPath, newPath)
|
||||
if sourceInode != 0 {
|
||||
if fh := wfs.fhmap.inode2fh[sourceInode]; foundFh && fh.entry != nil {
|
||||
fh.entry.Name = newName
|
||||
}
|
||||
wfs.fuseServer.InodeNotify(sourceInode, 0, -1)
|
||||
}
|
||||
// invalidate attr and data
|
||||
if replacedInode > 0 {
|
||||
wfs.fuseServer.InodeNotify(replacedInode, 0, -1)
|
||||
if targetInode != 0 {
|
||||
wfs.fuseServer.InodeNotify(targetInode, 0, -1)
|
||||
}
|
||||
|
||||
} else if resp.EventNotification.OldEntry != nil {
|
||||
|
|
Loading…
Reference in a new issue