<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gocryptfs/internal/fusefrontend/node_xattr_darwin.go, branch xattr_user_buffer</title>
<subtitle>Mirror of gocryptfs source code on Github</subtitle>
<id>http://nuetzlich.net/cgit/gocryptfs/atom?h=xattr_user_buffer</id>
<link rel='self' href='http://nuetzlich.net/cgit/gocryptfs/atom?h=xattr_user_buffer'/>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/'/>
<updated>2026-02-03T19:28:10+00:00</updated>
<entry>
<title>Use user-provided Listxattr buffer size</title>
<updated>2026-02-03T19:28:10+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2026-02-02T21:18:25+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=14045511d3d91f36845a138359718c0fe7dff21c'/>
<id>urn:sha1:14045511d3d91f36845a138359718c0fe7dff21c</id>
<content type='text'>
This huge buffer showed up big time in ./profiling/ls.bash
and caused a 2x LS benchmark slowdown.

Instead of the fixed-size buffer, use the buffer size
hint the user has provided us.

We return inaccurate (larger than actual, which should be safe)
numbers when the user has provided no buffer (size probe).
</content>
</entry>
<entry>
<title>added -noxattr flag which ignores all xattr operations (#987)</title>
<updated>2026-01-18T18:48:51+00:00</updated>
<author>
<name>Jarek Kowalski</name>
</author>
<published>2026-01-18T18:48:51+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=6013d56f0c09100190107613ce8c5c4c929216dd'/>
<id>urn:sha1:6013d56f0c09100190107613ce8c5c4c929216dd</id>
<content type='text'>
* added -noxattr flag which ignores all xattr operations</content>
</entry>
<entry>
<title>darwin: use O_NOFOLLOW for xattr opens</title>
<updated>2021-12-09T16:55:05+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2021-12-09T16:55:05+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=bd1ecf537983ee5207e78f9bcd6a6ae50c1b4c62'/>
<id>urn:sha1:bd1ecf537983ee5207e78f9bcd6a6ae50c1b4c62</id>
<content type='text'>
Running the tests we have lots of these:

Openat: O_NOFOLLOW missing: flags = 0x4
-wpanic turns this warning into a panic: Openat: O_NOFOLLOW missing: flags = 0x4
panic: -wpanic turns this warning into a panic: Openat: O_NOFOLLOW missing: flags = 0x4

goroutine 114 [running]:
log.(*Logger).Panic(0x14000118280, {0x14000313ca8, 0x1, 0x1})
	log/log.go:224 +0x90
github.com/rfjakob/gocryptfs/v2/internal/tlog.(*toggledLogger).Printf(0x14000076780, {0x1009dc2e8, 0x27}, {0x14000313d18, 0x1, 0x1})
	github.com/rfjakob/gocryptfs/v2/internal/tlog/log.go:78 +0x168
github.com/rfjakob/gocryptfs/v2/internal/syscallcompat.Openat(0x9, {0x1009d0747, 0x1}, 0x4, 0x0)
	github.com/rfjakob/gocryptfs/v2/internal/syscallcompat/sys_common.go:59 +0xf0
github.com/rfjakob/gocryptfs/v2/internal/fusefrontend.(*Node).getXAttr(0x14000142000, {0x1400001c140, 0x3a})
	github.com/rfjakob/gocryptfs/v2/internal/fusefrontend/node_xattr_darwin.go:30 +0x8c
github.com/rfjakob/gocryptfs/v2/internal/fusefrontend.(*Node).Getxattr(0x14000142000, {0x100a7eba0, 0x1400000c2e8}, {0x14000016348, 0x14}, {0x14000326000, 0x20, 0x4000})
	github.com/rfjakob/gocryptfs/v2/internal/fusefrontend/node_xattr.go:65 +0x1ac
github.com/hanwen/go-fuse/v2/fs.(*rawBridge).GetXAttr(0x1400008e140, 0x140001901e0, 0x140001133c0, {0x14000016348, 0x14}, {0x14000326000, 0x20, 0x4000})
	github.com/hanwen/go-fuse/v2@v2.1.1-0.20210825171523-3ab5d95a30ae/fs/bridge.go:685 +0x114
github.com/hanwen/go-fuse/v2/fuse.doGetXAttr(0x14000144000, 0x14000113200)
	github.com/hanwen/go-fuse/v2@v2.1.1-0.20210825171523-3ab5d95a30ae/fuse/opcode.go:270 +0x224
github.com/hanwen/go-fuse/v2/fuse.(*Server).handleRequest(0x14000144000, 0x14000113200)
	github.com/hanwen/go-fuse/v2@v2.1.1-0.20210825171523-3ab5d95a30ae/fuse/server.go:499 +0x214
created by github.com/hanwen/go-fuse/v2/fuse.(*Server).loop
	github.com/hanwen/go-fuse/v2@v2.1.1-0.20210825171523-3ab5d95a30ae/fuse/server.go:470 +0xac

https://github.com/rfjakob/gocryptfs/issues/625
</content>
</entry>
<entry>
<title>go mod: declare module version v2</title>
<updated>2021-08-23T13:05:15+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2021-08-23T13:05:15+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=69d88505fd7f4cb0d9e4f1918de296342fe05858'/>
<id>urn:sha1:69d88505fd7f4cb0d9e4f1918de296342fe05858</id>
<content type='text'>
Our git version is v2+ for some time now, but go.mod
still declared v1. Hopefully making both match makes
https://pkg.go.dev/github.com/rfjakob/gocryptfs/v2 work.

All the import paths have been fixed like this:

  find . -name \*.go | xargs sed -i s%github.com/rfjakob/gocryptfs/%github.com/rfjakob/gocryptfs/v2/%
</content>
</entry>
<entry>
<title>fusefrontend: implement recursive diriv caching</title>
<updated>2021-06-25T11:56:53+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2021-06-25T09:33:18+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=84e702126ac4f017e12150532bfaed675dee2927'/>
<id>urn:sha1:84e702126ac4f017e12150532bfaed675dee2927</id>
<content type='text'>
The new contrib/maxlen.bash showed that we have exponential
runtime with respect to directory depth.

The new recursive diriv caching is a lot smarter as it caches
intermediate lookups. maxlen.bash now completes in a few seconds.

xfstests results same as
https://github.com/rfjakob/fuse-xfstests/blob/2d158e4c82be85c15269af77498e353f928f4fab/screenlog.0 :

  Failures: generic/035 generic/062 generic/080 generic/093 generic/099 generic/215 generic/285 generic/319 generic/426 generic/444 generic/467 generic/477 generic/523
  Failed 13 of 580 tests

benchmark.bash results are identical:

  $ ./benchmark.bash
  Testing gocryptfs at /tmp/benchmark.bash.BdQ: gocryptfs v2.0.1-17-g6b09bc0; go-fuse v2.1.1-0.20210611132105-24a1dfe6b4f8; 2021-06-25 go1.16.5 linux/amd64
  /tmp/benchmark.bash.BdQ.mnt is a mountpoint
  WRITE: 262144000 bytes (262 MB, 250 MiB) copied, 0,4821 s, 544 MB/s
  READ:  262144000 bytes (262 MB, 250 MiB) copied, 0,266061 s, 985 MB/s
  UNTAR: 8,280
  MD5:   4,564
  LS:    1,745
  RM:    2,244
</content>
</entry>
<entry>
<title>fusefrontend: run acl Setxattr in user context</title>
<updated>2021-06-02T17:10:36+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2021-06-02T17:10:36+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=a38e5988bae3319a2c1c6745064f5785a0971d05'/>
<id>urn:sha1:a38e5988bae3319a2c1c6745064f5785a0971d05</id>
<content type='text'>
The result of setting an acl depends on who runs the
operation!

Fixes fuse-xfstests generic/375
(see https://github.com/rfjakob/fuse-xfstests/wiki/results_2021-05-19)
</content>
</entry>
<entry>
<title>v2api: add Darwin xattr support</title>
<updated>2020-09-09T09:17:19+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2020-09-09T09:17:19+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=ac687d53593d8215b881db92fe2d1bbbd2d2d774'/>
<id>urn:sha1:ac687d53593d8215b881db92fe2d1bbbd2d2d774</id>
<content type='text'>
</content>
</entry>
<entry>
<title>v2api: implement Getxattr, Setxattr, Removexattr, Listxattr</title>
<updated>2020-07-14T17:55:20+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2020-07-14T17:55:20+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=57d572dbc10cfb1d14642598b0827d4119b26b64'/>
<id>urn:sha1:57d572dbc10cfb1d14642598b0827d4119b26b64</id>
<content type='text'>
gocryptfs/tests/xattr passes.
</content>
</entry>
</feed>
