<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gocryptfs/internal/fusefrontend/file.go, branch LockSharedStorage_rebase2</title>
<subtitle>Mirror of gocryptfs source code on Github</subtitle>
<id>http://nuetzlich.net/cgit/gocryptfs/atom?h=LockSharedStorage_rebase2</id>
<link rel='self' href='http://nuetzlich.net/cgit/gocryptfs/atom?h=LockSharedStorage_rebase2'/>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/'/>
<updated>2026-07-16T18:34:50+00:00</updated>
<entry>
<title>fusefrontend: sharedstorage: add two missing unlocks</title>
<updated>2026-07-16T18:34:50+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2026-07-16T18:34:11+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=833103864f18a4e2f514d50d5816bdc2c03ab1e0'/>
<id>urn:sha1:833103864f18a4e2f514d50d5816bdc2c03ab1e0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fusefrontend: sharedstorage: introduce UnlockSharedStorage helper</title>
<updated>2026-07-16T18:34:45+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2026-07-16T18:32:51+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=a244f1ae9e5a67c1bc2fedb80e82bb646993d936'/>
<id>urn:sha1:a244f1ae9e5a67c1bc2fedb80e82bb646993d936</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fusefrontend: sharedstorage: lock truncate agains concurrent access</title>
<updated>2026-07-16T18:10:19+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2024-12-30T11:08:41+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=0acbbc0913a3a7069984c8e52f64e302d7f52df4'/>
<id>urn:sha1:0acbbc0913a3a7069984c8e52f64e302d7f52df4</id>
<content type='text'>
Prevent reads and writes concurrent with the truncate operation. It's
racy on tmpfs and ext4 ( https://lore.kernel.org/all/18e9fa0f-ec31-9107-459c-ae1694503f87@gmail.com/t/ )
as evident by TestOpenTruncate test failures:

  === RUN   TestOpenTruncate
      cluster_test.go:209: POSIX compliance issue: non-exlusive create failed with err=file exists
  doRead 16384215: corrupt block #0: cipher: message authentication failed
  ino16384215 fh8: RMW read failed: errno=5
      cluster_test.go:214: iteration 1: WriteAt: write /tmp/gocryptfs-test-parent-1026/1358464214/TestOpenTruncate.1788296708.mnt2/foo: input/output error
  --- FAIL: TestOpenTruncate (0.06s)
  FAIL
  exit status 1
  FAIL	github.com/rfjakob/gocryptfs/v2/tests/cluster	7.880s

Relates-to: https://github.com/rfjakob/gocryptfs/issues/56
</content>
</entry>
<entry>
<title>fusefrontend: sharedstorage: add warnings for lock failure</title>
<updated>2026-07-16T18:10:19+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2023-06-19T11:35:29+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=c12811349ec04a10e4090dc1becbf92380693f62'/>
<id>urn:sha1:c12811349ec04a10e4090dc1becbf92380693f62</id>
<content type='text'>
Complain loudly when the underlying storage does not support
byte-range locks.

https://github.com/rfjakob/gocryptfs/issues/754
</content>
</entry>
<entry>
<title>fusefrontend: sharedstorage: retry read-path on EIO error</title>
<updated>2026-07-16T18:10:19+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2023-06-19T11:26:44+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=781f1b8be16c1ce4d5f9648641c28a13b258b2e9'/>
<id>urn:sha1:781f1b8be16c1ce4d5f9648641c28a13b258b2e9</id>
<content type='text'>
With -sharedstorage, when we get a decryption error, we lock the
byte range and try again.

This makes concurrent R/W safe agains torn writes.

https://github.com/rfjakob/gocryptfs/issues/754
</content>
</entry>
<entry>
<title>fusefrontend: sharedstorage: add file content byte-range locks</title>
<updated>2026-07-16T18:10:19+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2023-06-09T12:34:20+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=28fe256b2f48466f2d47417494b436527ca875a3'/>
<id>urn:sha1:28fe256b2f48466f2d47417494b436527ca875a3</id>
<content type='text'>
As we must write complete ciphertext blocks (except at EOF), non-overlapping
plaintext writes can overlap in the ciphertext.
And because overlapping writes can turn the data into data soup (see
TestPoCTornWrite) we serialize them using fcntl locking.
</content>
</entry>
<entry>
<title>fusefrontend: sharedstorage: use byte-range lock on file header creation</title>
<updated>2026-07-16T17:56:48+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2023-06-02T12:24:44+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=e56c2e44cc4dd1484cae78956f8ff72a9eea42f2'/>
<id>urn:sha1:e56c2e44cc4dd1484cae78956f8ff72a9eea42f2</id>
<content type='text'>
Multiple host writing to the same empty file at the same time
could have overwritten each other's newly created file header,
leading to data corruption.

Fix the race by placing a byte-range lock on the file when
creating the file header.
</content>
</entry>
<entry>
<title>syscallcompat: DetectQuirks: suppress Btrfs message when -noprealloc has been passed</title>
<updated>2026-02-01T19:05:13+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2026-02-01T19:05:13+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=ed5f8487b15f1d9cd83b4b0a4220271b6c5f189e'/>
<id>urn:sha1:ed5f8487b15f1d9cd83b4b0a4220271b6c5f189e</id>
<content type='text'>
Reported by @Tunoac, https://github.com/rfjakob/gocryptfs/issues/395#issuecomment-3828507487
</content>
</entry>
<entry>
<title>fusefronted: report correct directory size in fstat</title>
<updated>2025-08-03T19:25:24+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2025-08-03T19:22:10+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=ddcc7405e68e6be2cce02dddde3fa6e019c62951'/>
<id>urn:sha1:ddcc7405e68e6be2cce02dddde3fa6e019c62951</id>
<content type='text'>
Fixes https://github.com/rfjakob/gocryptfs/issues/951
</content>
</entry>
<entry>
<title>remove redundant contentEnc reference from file</title>
<updated>2025-07-10T18:06:34+00:00</updated>
<author>
<name>Lars Quentin</name>
</author>
<published>2025-07-10T14:33:26+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=844f339befe67a3f8573f98c23559fd7c1a6e507'/>
<id>urn:sha1:844f339befe67a3f8573f98c23559fd7c1a6e507</id>
<content type='text'>
</content>
</entry>
</feed>
