<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gocryptfs/internal, branch v0.11</title>
<subtitle>Mirror of gocryptfs source code on Github</subtitle>
<id>http://nuetzlich.net/cgit/gocryptfs/atom?h=v0.11</id>
<link rel='self' href='http://nuetzlich.net/cgit/gocryptfs/atom?h=v0.11'/>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/'/>
<updated>2016-06-09T20:21:00+00:00</updated>
<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>configfile: warn about missing feature flags</title>
<updated>2016-06-06T21:13:10+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-06T21:13:10+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=0f4d3501369e13c8ba6ee4c9fc7df02a3cc698b1'/>
<id>urn:sha1:0f4d3501369e13c8ba6ee4c9fc7df02a3cc698b1</id>
<content type='text'>
The plan is to drop support for the oldest filesystem versions
in gocryptfs v1.0. For now, we only warn the user.
</content>
</entry>
<entry>
<title>toggledlog: convert remaing naked fmt.Print*</title>
<updated>2016-06-05T12:32:07+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-05T12:26:16+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=0c80cca674931c9dbfc69c25df24d53abbdd63a9'/>
<id>urn:sha1:0c80cca674931c9dbfc69c25df24d53abbdd63a9</id>
<content type='text'>
Several fatal errors were just printed to stdout, which
meant they were invisible when running the test suite.

Fix this by introducing toggledlog.Fatal and convert as
follows:

Fatal errors     -&gt; toggledlog.Fatal
Warnings         -&gt; toggledlog.Warn
Password prompts -&gt; fmt.Fprintf
</content>
</entry>
<entry>
<title>main: print actual error from LoadConfFile()</title>
<updated>2016-06-05T11:44:22+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-05T11:44:22+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=ca54b665e32a9b298ea3e70b5da0108db3a71364'/>
<id>urn:sha1:ca54b665e32a9b298ea3e70b5da0108db3a71364</id>
<content type='text'>
It may not have been a "Wrong password" after all.

Also, push down disabling the warning so LoadConfFile() can
warn about things that matter.
</content>
</entry>
<entry>
<title>configfile: use map[flagIota] for feature flags</title>
<updated>2016-06-05T10:54:45+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-05T10:53:10+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=f2d208c464a1f157014127bfa97dbb7b84158f95'/>
<id>urn:sha1:f2d208c464a1f157014127bfa97dbb7b84158f95</id>
<content type='text'>
This should make things saner and more extensible. It prepares
the infrastructure for "required feature flags" that will be used
to deprecate old gocryptfs version.
</content>
</entry>
<entry>
<title>configfile: bake the "Creator" gocryptfs version into the file</title>
<updated>2016-06-05T09:40:13+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-05T09:33:54+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=b97268c94824b8047c8d4f97a68549260e4f6835'/>
<id>urn:sha1:b97268c94824b8047c8d4f97a68549260e4f6835</id>
<content type='text'>
This field is added for the convenience of users and
may help them to identify which gocryptfs version
they need to mount a filesystem.

The same information is essentially contained in FeatureFlags,
but this is more difficult to decode for humans.

It is completely ignored programmatically (also by older gocryptfs
versions).
</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>nametransform, main: better error messages</title>
<updated>2016-06-01T18:07:43+00:00</updated>
<author>
<name>Jakob Unterwurzacher</name>
</author>
<published>2016-06-01T18:07:43+00:00</published>
<link rel='alternate' type='text/html' href='http://nuetzlich.net/cgit/gocryptfs/commit/?id=80b027f830ba5d9e5bf2514462208fcea573c388'/>
<id>urn:sha1:80b027f830ba5d9e5bf2514462208fcea573c388</id>
<content type='text'>
</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>
</feed>
