aboutsummaryrefslogtreecommitdiff
path: root/internal/fusefrontend_reverse/node_xattr.go
diff options
context:
space:
mode:
authorJarek Kowalski2026-01-18 10:48:51 -0800
committerGitHub2026-01-18 19:48:51 +0100
commit6013d56f0c09100190107613ce8c5c4c929216dd (patch)
tree33eff2f7c85aeb50be96652773fd76512d9ab386 /internal/fusefrontend_reverse/node_xattr.go
parentc9cf6f1f8a5b90c9cb70ed19f8c8426dc2655c9d (diff)
added -noxattr flag which ignores all xattr operations (#987)HEADmaster
* added -noxattr flag which ignores all xattr operations
Diffstat (limited to 'internal/fusefrontend_reverse/node_xattr.go')
-rw-r--r--internal/fusefrontend_reverse/node_xattr.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/internal/fusefrontend_reverse/node_xattr.go b/internal/fusefrontend_reverse/node_xattr.go
index f4e3bda..f22764a 100644
--- a/internal/fusefrontend_reverse/node_xattr.go
+++ b/internal/fusefrontend_reverse/node_xattr.go
@@ -25,6 +25,10 @@ func isAcl(attr string) bool {
// This function is symlink-safe through Fgetxattr.
func (n *Node) Getxattr(ctx context.Context, attr string, dest []byte) (uint32, syscall.Errno) {
rn := n.rootNode()
+ // If -noxattr is enabled, return ENOATTR for all getxattr calls
+ if rn.args.NoXattr {
+ return 0, noSuchAttributeError
+ }
var data []byte
// ACLs are passed through without encryption
if isAcl(attr) {
@@ -56,11 +60,15 @@ func (n *Node) Getxattr(ctx context.Context, attr string, dest []byte) (uint32,
//
// This function is symlink-safe through Flistxattr.
func (n *Node) Listxattr(ctx context.Context, dest []byte) (uint32, syscall.Errno) {
+ rn := n.rootNode()
+ // If -noxattr is enabled, return zero results for listxattr
+ if rn.args.NoXattr {
+ return 0, 0
+ }
pNames, errno := n.listXAttr()
if errno != 0 {
return 0, errno
}
- rn := n.rootNode()
var buf bytes.Buffer
for _, pName := range pNames {
// ACLs are passed through without encryption