<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gocryptfs, branch master</title>
<subtitle>Mirror of gocryptfs source code on Github</subtitle>
<id>http://nuetzlich.net/cgit/gocryptfs/atom?h=master</id>
<link rel='self' href='http://nuetzlich.net/cgit/gocryptfs/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/'/>
<updated>2026-09-01T20:38:37+00:00</updated>
<entry>
<title>fsync gocryptfs.diriv files</title>
<updated>2026-09-01T20:38:37+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2026-09-01T20:35:45+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=842af4463989ee6808d397433e9aba8517e49c89'/>
<id>urn:sha1:842af4463989ee6808d397433e9aba8517e49c89</id>
<content type='text'>
There is a performance penalty here, but the alternative is
potential data loss on a system crash / power outage as shown in
https://github.com/rfjakob/gocryptfs/issues/1033 .

Also deduplicate the code a little using goto.

Fixes https://github.com/rfjakob/gocryptfs/issues/1033
</content>
</entry>
<entry>
<title>fusefronted: fix mkdir log message on empty gocryptfs.diriv</title>
<updated>2026-09-01T20:38:37+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2026-09-01T20:26:12+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=c7f1fe301a43604cb2eb9d67f389563e8734016c'/>
<id>urn:sha1:c7f1fe301a43604cb2eb9d67f389563e8734016c</id>
<content type='text'>
Before:

$ mkdir asd
mkdir: cannot create directory ‘asd’: Operation not supported

Sep 01 22:24:15 brikett gocryptfs[185344]: go-fuse: can't convert error type: wanted 16 bytes, got 0

After:

$ mkdir asdasd
mkdir: cannot create directory ‘asdasd’: Input/output error

Sep 01 22:25:00 brikett gocryptfs[185784]: prepareAtSyscall: could not read gocryptfs.diriv: wanted 16 bytes, got 0

https://github.com/rfjakob/gocryptfs/issues/1033
</content>
</entry>
<entry>
<title>build(deps): bump actions/setup-go from 6 to 7</title>
<updated>2026-09-01T20:03:15+00:00</updated>
<author>
<name>dependabot[bot]</name>
</author>
<published>2026-07-20T11:34:02+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=8ad75e1e2c18eb88cf1d2225270baadd8abe116f'/>
<id>urn:sha1:8ad75e1e2c18eb88cf1d2225270baadd8abe116f</id>
<content type='text'>
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 6 to 7.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] &lt;support@github.com&gt;</content>
</entry>
<entry>
<title>plaintextnames: don't initialize nametransform</title>
<updated>2026-09-01T19:37:42+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2026-09-01T19:36:57+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=12fa2c54de65e57649e07042b6cf517896a430aa'/>
<id>urn:sha1:12fa2c54de65e57649e07042b6cf517896a430aa</id>
<content type='text'>
We should never call it in -plaintextnames mode.
</content>
</entry>
<entry>
<title>Update performance.txt</title>
<updated>2026-09-01T18:58:05+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2026-09-01T18:58:05+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=119471f951dff9132aee18c66abeec551e47f89d'/>
<id>urn:sha1:119471f951dff9132aee18c66abeec551e47f89d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>cli: use READDIR by default</title>
<updated>2026-09-01T18:51:36+00:00</updated>
<author>
<name>Marios Titas</name>
</author>
<published>2026-08-15T20:03:54+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=5b2881e7cbc347eb379d35c3ae1f491bef8f227f'/>
<id>urn:sha1:5b2881e7cbc347eb379d35c3ae1f491bef8f227f</id>
<content type='text'>
Avoid eager per-entry metadata work for names-only listings, and
add -readdirplus for workloads that benefit from eager attributes.

Co-authored-by: Cursor &lt;cursoragent@cursor.com&gt;
</content>
</entry>
<entry>
<title>fusefrontend: take ContentLock for truncate through node.Setattr</title>
<updated>2026-08-30T20:49:34+00:00</updated>
<author>
<name>max</name>
</author>
<published>2026-08-17T01:15:41+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=9c2130d6c2e54c45c6787fbc49a896a8544a5e47'/>
<id>urn:sha1:9c2130d6c2e54c45c6787fbc49a896a8544a5e47</id>
<content type='text'>
node.Setattr opens its own file handle and called truncate directly,
without ContentLock. truncate ends in doWrite, which documents that the
caller holds that lock, and file.Setattr and Allocate both take it.

Besides leaving a path truncate unserialized against concurrent writes,
this skipped the write-operation counter that ContentLock.Lock()
increments. isConsecutiveWrite() reads that counter to notice foreign
modifications, so an already-open handle kept assuming its next write
appends, skipped writePadHole() and grew the file past a short last
block. That block no longer decrypted, and every later operation on the
file failed with EIO.

Fixes #1024
</content>
</entry>
<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>sharedstorage: fix darwin &amp; freebsd build failure</title>
<updated>2026-07-16T20:07:54+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2026-07-16T19:16:45+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=b8e34b1efcb27c772f0d2ca12f5ecdd6b7fc817b'/>
<id>urn:sha1:b8e34b1efcb27c772f0d2ca12f5ecdd6b7fc817b</id>
<content type='text'>
</content>
</entry>
</feed>
