Merge pull request #4020 from greatroar/fuse-inode

fuse: Better inode generation
This commit is contained in:
Michael Eischer
2022-12-02 22:28:15 +01:00
committed by GitHub
4 changed files with 95 additions and 12 deletions

View File

@@ -78,7 +78,7 @@ func (d *SnapshotsDir) ReadDirAll(ctx context.Context) ([]fuse.Dirent, error) {
for name, entry := range meta.names {
d := fuse.Dirent{
Inode: fs.GenerateDynamicInode(d.inode, name),
Inode: inodeFromName(d.inode, name),
Name: name,
Type: fuse.DT_Dir,
}
@@ -104,12 +104,13 @@ func (d *SnapshotsDir) Lookup(ctx context.Context, name string) (fs.Node, error)
entry := meta.names[name]
if entry != nil {
inode := inodeFromName(d.inode, name)
if entry.linkTarget != "" {
return newSnapshotLink(d.root, fs.GenerateDynamicInode(d.inode, name), entry.linkTarget, entry.snapshot)
return newSnapshotLink(d.root, inode, entry.linkTarget, entry.snapshot)
} else if entry.snapshot != nil {
return newDirFromSnapshot(d.root, fs.GenerateDynamicInode(d.inode, name), entry.snapshot)
return newDirFromSnapshot(d.root, inode, entry.snapshot)
} else {
return NewSnapshotsDir(d.root, fs.GenerateDynamicInode(d.inode, name), d.inode, d.dirStruct, d.prefix+"/"+name), nil
return NewSnapshotsDir(d.root, inode, d.inode, d.dirStruct, d.prefix+"/"+name), nil
}
}