diff options
| author | chrislu <chris.lu@gmail.com> | 2022-02-27 00:00:23 -0800 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2022-02-27 00:00:23 -0800 |
| commit | 9ef5bb20f6cea962e2e521f183c1d2fa692a4a2b (patch) | |
| tree | 2126870523c9dd15078aebd4129e9dd56428daf9 /weed/mount/weedfs_rename.go | |
| parent | 4ddcbaab573be19ec5b78b7ff4a9ebcb9cd1f605 (diff) | |
| download | seaweedfs-9ef5bb20f6cea962e2e521f183c1d2fa692a4a2b.tar.xz seaweedfs-9ef5bb20f6cea962e2e521f183c1d2fa692a4a2b.zip | |
mount2: invalidate fuse cache for replaced inode
Diffstat (limited to 'weed/mount/weedfs_rename.go')
| -rw-r--r-- | weed/mount/weedfs_rename.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/weed/mount/weedfs_rename.go b/weed/mount/weedfs_rename.go index 44f3c910c..5446c7ed1 100644 --- a/weed/mount/weedfs_rename.go +++ b/weed/mount/weedfs_rename.go @@ -214,6 +214,8 @@ func (wfs *WFS) Rename(cancel <-chan struct{}, in *fuse.RenameIn, oldName string func (wfs *WFS) handleRenameResponse(ctx context.Context, resp *filer_pb.StreamRenameEntryResponse) error { // comes from filer StreamRenameEntry, can only be create or delete entry + glog.V(4).Infof("dir Rename %+v", resp.EventNotification) + if resp.EventNotification.NewEntry != nil { // with new entry, the old entry name also exists. This is the first step to create new entry newEntry := filer.FromPbEntry(resp.EventNotification.NewParentPath, resp.EventNotification.NewEntry) @@ -227,7 +229,11 @@ func (wfs *WFS) handleRenameResponse(ctx context.Context, resp *filer_pb.StreamR oldPath := oldParent.Child(oldName) newPath := newParent.Child(newName) - wfs.inodeToPath.MovePath(oldPath, newPath) + replacedInode := wfs.inodeToPath.MovePath(oldPath, newPath) + // invalidate attr and data + if replacedInode > 0 { + wfs.fuseServer.InodeNotify(replacedInode, 0, -1) + } } else if resp.EventNotification.OldEntry != nil { // without new entry, only old entry name exists. This is the second step to delete old entry |
