<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gocryptfs/internal/fusefrontend, branch v0.12</title>
<subtitle>Mirror of gocryptfs source code on Github</subtitle>
<id>http://nuetzlich.net/cgit/gocryptfs/atom?h=v0.12</id>
<link rel='self' href='http://nuetzlich.net/cgit/gocryptfs/atom?h=v0.12'/>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/'/>
<updated>2016-06-15T21:30:44+00:00</updated>
<entry>
<title>Rename internal "toggledlog" package to "tlog"</title>
<updated>2016-06-15T21:30:44+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-15T21:30:44+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=6c3f97399a01a2d8480b39978209099335efbf7d'/>
<id>urn:sha1:6c3f97399a01a2d8480b39978209099335efbf7d</id>
<content type='text'>
tlog is used heavily everywhere and deserves a shorter name.

Renamed using sed magic, without any manual rework:

   find * -type f -exec sed -i 's/toggledlog/tlog/g' {} +
</content>
</entry>
<entry>
<title>Fix warnings reported by Go 1.6 "go tool vet -shadow=true"</title>
<updated>2016-06-14T20:46:23+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-14T20:45:33+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=393e531afd64ad6c5d1db4c36312a29233c8d3f2'/>
<id>urn:sha1:393e531afd64ad6c5d1db4c36312a29233c8d3f2</id>
<content type='text'>
Warnings were:

  main.go:234: declaration of err shadows declaration at main.go:163:
  internal/fusefrontend/file.go:401: declaration of err shadows declaration at internal/fusefrontend/file.go:379:
  internal/fusefrontend/file.go:419: declaration of err shadows declaration at internal/fusefrontend/file.go:379:
  internal/fusefrontend/fs_dir.go:140: declaration of err shadows declaration at internal/fusefrontend/fs_dir.go:97:
</content>
</entry>
<entry>
<title>fusefrontend: Utimens: convert ENOENT to EBADF</title>
<updated>2016-06-09T20:21:00+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-08T20:39:35+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=5b1eed35eea57655b36be163f0aeadb55d89cf40'/>
<id>urn:sha1:5b1eed35eea57655b36be163f0aeadb55d89cf40</id>
<content type='text'>
If /proc/self/fd/X did not exist, the actual error is that the file
descriptor was invalid.

go-fuse's pathfs prefers using an open fd even for path-based operations
but does not take any locks to prevent the fd from being closed.
Instead, it retries the operation by path if it get EBADF. So this
change allows the retry logic to work correctly.

This fixes the error

    rsync: failed to set times on "/tmp/ping.Kgw.mnt/linux-3.0/[...]/.dvb_demux.c.N7YlEM":
    No such file or directory (2)

that was triggered by pingpong-rsync.bash.
</content>
</entry>
<entry>
<title>fusefrontend: fix chown on dangling symlinks</title>
<updated>2016-06-07T22:32:44+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-07T22:17:18+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=5da292828c3a58254560bb47d700186ff8c3ca9c'/>
<id>urn:sha1:5da292828c3a58254560bb47d700186ff8c3ca9c</id>
<content type='text'>
We (actually, go-fuse) used to call Chown() instead of Lchown()
which meant that the operation would fail on dangling symlinks.

Fix this by calling os.Lchown() ourself. Also add a test case
for this.
</content>
</entry>
<entry>
<title>fusefrontend: report an error if all files in a directory were invalid</title>
<updated>2016-06-04T14:39:27+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-04T14:39:27+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=a602e798b1a65fdfe5e7f0260a34e17ea7ab0615'/>
<id>urn:sha1:a602e798b1a65fdfe5e7f0260a34e17ea7ab0615</id>
<content type='text'>
Just presenting an empty directory means that the user does not know
that things went wrong unless he checks the syslog or tries to delete
the directory.

It would be nice to report the error even if only some files were
invalid. However, go-fuse does not allow returning the valid
directory entries AND an error.
</content>
</entry>
<entry>
<title>fusefrontend: replace unreliable "fd &lt; 0" check</title>
<updated>2016-05-30T07:36:06+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-05-30T07:29:30+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=5dd9576a11bb166e5b3cad70047a46038daf32d6'/>
<id>urn:sha1:5dd9576a11bb166e5b3cad70047a46038daf32d6</id>
<content type='text'>
... with the "released" boolean.

For some reason, the "f.fd.Fd() &lt; 0" check did not work reliably,
leading to nil pointer panics on the following wlock.lock().

The problem was discovered during fsstress testing and is unlikely
to happen in normal operations.

With this change, we passed 1700+ fsstress iterations.
</content>
</entry>
<entry>
<title>fusefrontend: use sync.Once for one-time warnings</title>
<updated>2016-05-29T20:50:03+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-05-29T20:50:03+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=1648c54adb9b7d9d8984857a35c6092bbae6bdec'/>
<id>urn:sha1:1648c54adb9b7d9d8984857a35c6092bbae6bdec</id>
<content type='text'>
Using a simple boolean was racy (which was harmless
in this case) and non-idomatic.
</content>
</entry>
<entry>
<title>fusefronted: check Fstat return value on file create</title>
<updated>2016-05-29T20:43:48+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-05-29T20:41:46+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=fd53dfd2ad88d9d277e5ab93fba1b81a5f2255d4'/>
<id>urn:sha1:fd53dfd2ad88d9d277e5ab93fba1b81a5f2255d4</id>
<content type='text'>
The Fstat call should never fail, but still, if it does return an error
it should be handled properly.
</content>
</entry>
<entry>
<title>fusefrontend: simplify wlockMap</title>
<updated>2016-05-29T20:40:05+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-05-29T20:40:05+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=77813bdc13118fd08bbff7a68c9d5268080a2a15'/>
<id>urn:sha1:77813bdc13118fd08bbff7a68c9d5268080a2a15</id>
<content type='text'>
mapMutex can be anonymous and using an RWMutex is overkill
because the lock protects very short sections.
</content>
</entry>
<entry>
<title>fusefrontend: remove unused "forgotten" variable</title>
<updated>2016-05-29T11:46:47+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-05-29T11:46:47+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=4c0cb37c50c66b03be43063d77a52b74f24ec9f7'/>
<id>urn:sha1:4c0cb37c50c66b03be43063d77a52b74f24ec9f7</id>
<content type='text'>
The functionality has long been replaced by the fd &lt; 0
check.
</content>
</entry>
</feed>
