Browse Source

do not add new inode during link

pull/3354/head
chrislu 3 years ago
parent
commit
41eeb4deef
  1. 18
      weed/mount/inode_to_path.go
  2. 4
      weed/mount/weedfs_link.go

18
weed/mount/inode_to_path.go

@ -163,6 +163,24 @@ func (i *InodeToPath) HasInode(inode uint64) bool {
return found
}
func (i *InodeToPath) AddPath(inode uint64, path util.FullPath) {
i.Lock()
defer i.Unlock()
i.path2inode[path] = inode
ie, found := i.inode2path[inode]
if found {
ie.paths = append(ie.paths, path)
} else {
i.inode2path[inode] = &InodeEntry{
paths: []util.FullPath{path},
nlookup: 1,
isDirectory: false,
isChildrenCached: false,
}
}
}
func (i *InodeToPath) RemovePath(path util.FullPath) {
i.Lock()
defer i.Unlock()

4
weed/mount/weedfs_link.go

@ -102,9 +102,9 @@ func (wfs *WFS) Link(cancel <-chan struct{}, in *fuse.LinkIn, name string, out *
return fuse.EIO
}
inode := wfs.inodeToPath.Lookup(newEntryPath, oldEntry.Attributes.Crtime, oldEntry.IsDirectory, true, oldEntry.Attributes.Inode, true)
wfs.inodeToPath.AddPath(oldEntry.Attributes.Inode, newEntryPath)
wfs.outputPbEntry(out, inode, request.Entry)
wfs.outputPbEntry(out, oldEntry.Attributes.Inode, request.Entry)
return fuse.OK
}
Loading…
Cancel
Save