<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/fuse, branch v3.19</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v3.19</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v3.19'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2015-01-06T09:45:35Z</updated>
<entry>
<title>fuse: add memory barrier to INIT</title>
<updated>2015-01-06T09:45:35Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2015-01-06T09:45:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=9759bd51899458af4f4bcc11046f01285642ca10'/>
<id>urn:sha1:9759bd51899458af4f4bcc11046f01285642ca10</id>
<content type='text'>
Theoretically we need to order setting of various fields in fc with
fc-&gt;initialized.

No known bug reports related to this yet.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>fuse: fix LOOKUP vs INIT compat handling</title>
<updated>2015-01-06T09:45:35Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2015-01-06T09:45:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=21f621741a770c119e7529a3f5c0e6b7c91383a3'/>
<id>urn:sha1:21f621741a770c119e7529a3f5c0e6b7c91383a3</id>
<content type='text'>
Analysis from Marc:

 "Commit 7078187a795f ("fuse: introduce fuse_simple_request() helper")
  from the above pull request triggers some EIO errors for me in some tests
  that rely on fuse

  Looking at the code changes and a bit of debugging info I think there's a
  general problem here that fuse_get_req checks and possibly waits for
  fc-&gt;initialized, and this was always called first.  But this commit
  changes the ordering and in many places fc-&gt;minor is now possibly used
  before fuse_get_req, and we can't be sure that fc has been initialized.
  In my case fuse_lookup_init sets req-&gt;out.args[0].size to the wrong size
  because fc-&gt;minor at that point is still 0, leading to the EIO error."

Fix by moving the compat adjustments into fuse_simple_request() to after
fuse_get_req().

This is also more readable than the original, since now compatibility is
handled in a single function instead of cluttering each operation.

Reported-by: Marc Dionne &lt;marc.c.dionne@gmail.com&gt;
Tested-by: Marc Dionne &lt;marc.c.dionne@gmail.com&gt;
Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Fixes: 7078187a795f ("fuse: introduce fuse_simple_request() helper")
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse</title>
<updated>2014-12-17T17:41:32Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-12-17T17:41:32Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=c103b21c20ee3d173ccccb7d5ca8f5b8bc02cac3'/>
<id>urn:sha1:c103b21c20ee3d173ccccb7d5ca8f5b8bc02cac3</id>
<content type='text'>
Pull fuse update from Miklos Szeredi:
 "The first part makes sure we don't hold up umount with pending async
  requests.  In addition to being a cleanup, this is a small behavioral
  change (for the better) and unlikely to break anything.

  The second part prepares for a cleanup of the fuse device I/O code by
  adding a helper for simple request submission, with some savings in
  line numbers already realized"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
  fuse: use file_inode() in fuse_file_fallocate()
  fuse: introduce fuse_simple_request() helper
  fuse: reduce max out args
  fuse: hold inode instead of path after release
  fuse: flush requests on umount
  fuse: don't wake up reserved req in fuse_conn_kill()
</content>
</entry>
<entry>
<title>fuse: use file_inode() in fuse_file_fallocate()</title>
<updated>2014-12-12T09:04:51Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-12-12T09:04:51Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=1c68271cf1bfe7f3664b6dbf4ffd5fe11130be5c'/>
<id>urn:sha1:1c68271cf1bfe7f3664b6dbf4ffd5fe11130be5c</id>
<content type='text'>
Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>fuse: introduce fuse_simple_request() helper</title>
<updated>2014-12-12T08:49:05Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-12-12T08:49:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=7078187a795f862465325bcadf3070867c0cb5f8'/>
<id>urn:sha1:7078187a795f862465325bcadf3070867c0cb5f8</id>
<content type='text'>
The following pattern is repeated many times:

	req = fuse_get_req_nopages(fc);
	/* Initialize req-&gt;(in|out).args */
	fuse_request_send(fc, req);
	err = req-&gt;out.h.error;
	fuse_put_request(req);

Create a new replacement helper:

	/* Initialize args */
	err = fuse_simple_request(fc, &amp;args);

In addition to reducing the code size, this will ease moving from the
complex arg-based to a simpler page-based I/O on the fuse device.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>fuse: reduce max out args</title>
<updated>2014-12-12T08:49:05Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-12-12T08:49:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=f704dcb538eb80b7f5b26281a79b8e29a8e24d62'/>
<id>urn:sha1:f704dcb538eb80b7f5b26281a79b8e29a8e24d62</id>
<content type='text'>
The third out-arg is never actually used.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>fuse: hold inode instead of path after release</title>
<updated>2014-12-12T08:49:04Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-12-12T08:49:04Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=baebccbe997d5023289e0fc9b4d0d71c6fc17a79'/>
<id>urn:sha1:baebccbe997d5023289e0fc9b4d0d71c6fc17a79</id>
<content type='text'>
path_put() in release could trigger a DESTROY request in fuseblk.  The
possible deadlock was worked around by doing the path_put() with
schedule_work().

This complexity isn't needed if we just hold the inode instead of the path.
Since we now flush all requests before destroying the super block we can be
sure that all held inodes will be dropped.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>fuse: flush requests on umount</title>
<updated>2014-12-12T08:49:04Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-12-12T08:49:04Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=580640ba5d331eb5631a5de46941c98f5ed90886'/>
<id>urn:sha1:580640ba5d331eb5631a5de46941c98f5ed90886</id>
<content type='text'>
Use fuse_abort_conn() instead of fuse_conn_kill() in fuse_put_super().
This flushes and aborts requests still on any queues.  But since we've
already reset fc-&gt;connected, those requests would not be useful anyway and
would be flushed when the fuse device is closed.

Next patches will rely on requests being flushed before the superblock is
destroyed.

Use fuse_abort_conn() in cuse_process_init_reply() too, since it makes no
difference there, and we can get rid of fuse_conn_kill().

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>fuse: don't wake up reserved req in fuse_conn_kill()</title>
<updated>2014-12-12T08:49:04Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-12-12T08:49:04Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=0c4dd4ba1426c599072511dcf95a15ee5e12725b'/>
<id>urn:sha1:0c4dd4ba1426c599072511dcf95a15ee5e12725b</id>
<content type='text'>
Waking up reserved_req_waitq from fuse_conn_kill() doesn't make sense since
we aren't chaging ff-&gt;reserved_req here, which is what this waitqueue
signals.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>assorted conversions to %p[dD]</title>
<updated>2014-11-19T18:01:20Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2014-10-22T00:11:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=a455589f181e60439c736c6c6a068bb7e6dc23f0'/>
<id>urn:sha1:a455589f181e60439c736c6c6a068bb7e6dc23f0</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
</feed>
