diff options
| -rw-r--r-- | internal/fusefrontend_reverse/node.go | 4 | ||||
| -rw-r--r-- | internal/fusefrontend_reverse/node_helpers.go | 3 | ||||
| -rw-r--r-- | internal/fusefrontend_reverse/virtualconf.go | 9 | ||||
| -rw-r--r-- | internal/fusefrontend_reverse/virtualnode.go | 4 | 
4 files changed, 19 insertions, 1 deletions
diff --git a/internal/fusefrontend_reverse/node.go b/internal/fusefrontend_reverse/node.go index 22ad975..30654e0 100644 --- a/internal/fusefrontend_reverse/node.go +++ b/internal/fusefrontend_reverse/node.go @@ -69,6 +69,10 @@ func (n *Node) Lookup(ctx context.Context, cName string, out *fuse.EntryOut) (ch  		n.translateSize(d.dirfd, cName, d.pName, &out.Attr)  	} +	if rn.args.ForceOwner != nil { +		out.Owner = *rn.args.ForceOwner +	} +  	// Usually we always create a new Node ID by always incrementing the generation  	// number.  	// diff --git a/internal/fusefrontend_reverse/node_helpers.go b/internal/fusefrontend_reverse/node_helpers.go index 6bba097..30361bc 100644 --- a/internal/fusefrontend_reverse/node_helpers.go +++ b/internal/fusefrontend_reverse/node_helpers.go @@ -201,6 +201,9 @@ func (n *Node) lookupConf(ctx context.Context, out *fuse.EntryOut) (ch *fs.Inode  	// Get unique inode number  	rn.inoMap.TranslateStat(&st)  	out.Attr.FromStat(&st) +	if rn.args.ForceOwner != nil { +		out.Owner = *rn.args.ForceOwner +	}  	// Create child node  	id := rn.uniqueStableAttr(uint32(st.Mode), st.Ino)  	node := &VirtualConfNode{path: p} diff --git a/internal/fusefrontend_reverse/virtualconf.go b/internal/fusefrontend_reverse/virtualconf.go index 3643fad..ea358dd 100644 --- a/internal/fusefrontend_reverse/virtualconf.go +++ b/internal/fusefrontend_reverse/virtualconf.go @@ -18,6 +18,11 @@ type VirtualConfNode struct {  	path string  } +// rootNode returns the Root Node of the filesystem. +func (n *VirtualConfNode) rootNode() *RootNode { +	return n.Root().Operations().(*RootNode) +} +  func (n *VirtualConfNode) Open(ctx context.Context, flags uint32) (fh fs.FileHandle, fuseFlags uint32, errno syscall.Errno) {  	fd, err := syscall.Open(n.path, syscall.O_RDONLY, 0)  	if err != nil { @@ -35,6 +40,10 @@ func (n *VirtualConfNode) Getattr(ctx context.Context, fh fs.FileHandle, out *fu  		return fs.ToErrno(err)  	}  	out.FromStat(&st) +	rn := n.rootNode() +	if rn.args.ForceOwner != nil { +		out.Owner = *rn.args.ForceOwner +	}  	return 0  } diff --git a/internal/fusefrontend_reverse/virtualnode.go b/internal/fusefrontend_reverse/virtualnode.go index 922cfa7..732564a 100644 --- a/internal/fusefrontend_reverse/virtualnode.go +++ b/internal/fusefrontend_reverse/virtualnode.go @@ -100,7 +100,9 @@ func (n *Node) newVirtualMemNode(content []byte, parentStat *syscall.Stat_t, ino  	st.Nlink = 1  	var a fuse.Attr  	a.FromStat(st) - +	if rn.args.ForceOwner != nil { +		a.Owner = *rn.args.ForceOwner +	}  	vf = &VirtualMemNode{content: content, attr: a}  	return  }  | 
