<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gocryptfs/internal/fusefrontend/node_helpers.go, branch unlinked_fsync</title>
<subtitle>Mirror of gocryptfs source code on Github</subtitle>
<id>http://nuetzlich.net/cgit/gocryptfs/atom?h=unlinked_fsync</id>
<link rel='self' href='http://nuetzlich.net/cgit/gocryptfs/atom?h=unlinked_fsync'/>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/'/>
<updated>2026-07-22T19:57:57+00:00</updated>
<entry>
<title>fusefrontend: expose birth time via statx</title>
<updated>2026-07-22T19:57:57+00:00</updated>
<author>
<name>Marios Titas</name>
</author>
<published>2026-07-21T17:27:38+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=790362e8f8eabd1bdf75f98328daf94cf623c600'/>
<id>urn:sha1:790362e8f8eabd1bdf75f98328daf94cf623c600</id>
<content type='text'>
Forward the backing filesystem's STATX_BTIME on Linux while preserving
existing metadata translations and fallback behavior.

On Linux 6.6 and newer, this allows statx consumers such as GNU stat
to report birth time when the backing filesystem provides it. Older
kernels and backing filesystems without birth-time support retain the
existing behavior. No on-disk format change or migration is required.

Reverse mode remains unchanged.

Fixes #868.

Related context: #732
</content>
</entry>
<entry>
<title>fusefrontend: make translateSize Stat_t/Statx_t agnostic</title>
<updated>2026-07-22T19:51:40+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2026-07-22T19:49:43+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=b3b292a8a3c1478b769e213e0e590f38cb1b923c'/>
<id>urn:sha1:b3b292a8a3c1478b769e213e0e590f38cb1b923c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fusefronted: comment syscall.S_IFMT masking</title>
<updated>2025-06-15T11:12:00+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2025-06-15T11:12:00+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=17524d373c388b2d2510662aa8aefb633bae674e'/>
<id>urn:sha1:17524d373c388b2d2510662aa8aefb633bae674e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Switch to the new atomic Uint64.Add api</title>
<updated>2025-05-06T07:11:49+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2025-05-06T07:11:49+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=9b6e47fc0a2ed65d462424152a13f995a8d7dd9a'/>
<id>urn:sha1:9b6e47fc0a2ed65d462424152a13f995a8d7dd9a</id>
<content type='text'>
The new api guarantees that the value is aligned, preventing
stuff like this on 32 bit platforms:

	goroutine 26 [running]:
	internal/runtime/atomic.panicUnaligned()
		/usr/lib/go-1.24/src/internal/runtime/atomic/unaligned.go:8 +0x24
	internal/runtime/atomic.Xadd64(0x2496c74, 0x1)
		/usr/lib/go-1.24/src/internal/runtime/atomic/atomic_arm.s:318 +0x14
	github.com/rfjakob/gocryptfs/internal/inomap.(*InoMap).NextSpillIno(0x2496c60)

Fixes https://github.com/rfjakob/gocryptfs/issues/912
</content>
</entry>
<entry>
<title>fusefrontent: report correct size on hard link creation</title>
<updated>2023-03-29T20:16:14+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2023-03-29T20:16:14+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=24b3978715186bed3edc2703e81f165a73c0a74a'/>
<id>urn:sha1:24b3978715186bed3edc2703e81f165a73c0a74a</id>
<content type='text'>
And add a test for it.

Fixes https://github.com/rfjakob/gocryptfs/issues/724
</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>syscallcompat: move quirks logic here &amp; fix darwin</title>
<updated>2021-08-11T18:23:35+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2021-08-11T18:21:32+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=2d386fc92e88be5384d1654db5d6e23ef4682354'/>
<id>urn:sha1:2d386fc92e88be5384d1654db5d6e23ef4682354</id>
<content type='text'>
We need to look at f_fstypename acc. to
https://stackoverflow.com/a/52299141/1380267 :

&gt; As filesystem type numbers are now assigned at runtime in
&gt; recent versions of MacOS, you must use f_fstypename to
&gt; determine the type.

https://github.com/rfjakob/gocryptfs/issues/585
</content>
</entry>
<entry>
<title>fusefrontend: add quirks for MacOS ExFAT</title>
<updated>2021-08-02T18:01:26+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2021-08-02T18:01:26+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=c3c9513e6504276698ed1f50a259d4333476acf8'/>
<id>urn:sha1:c3c9513e6504276698ed1f50a259d4333476acf8</id>
<content type='text'>
This also moves the quirks logic into fusefrontend.

Fixes https://github.com/rfjakob/gocryptfs/issues/585
</content>
</entry>
<entry>
<title>fusefrontend: -sharedstorage: present stable inode numbers</title>
<updated>2021-07-31T11:24:25+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2021-07-31T11:24:25+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=1bc1db620b061aabf59469a5eb4fb60e3e1701a3'/>
<id>urn:sha1:1bc1db620b061aabf59469a5eb4fb60e3e1701a3</id>
<content type='text'>
Use the Gen field (inode generation) to distinguish hard links
while passing the real inode numbers to userspace.

Fixes https://github.com/rfjakob/gocryptfs/issues/584
</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>
</feed>
