<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/fuse, branch v3.16</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs/fuse?h=v3.16</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs/fuse?h=v3.16'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2014-07-22T14:37:43Z</updated>
<entry>
<title>fuse: add FUSE_NO_OPEN_SUPPORT flag to INIT</title>
<updated>2014-07-22T14:37:43Z</updated>
<author>
<name>Andrew Gallagher</name>
<email>andrewjcg@fb.com</email>
</author>
<published>2014-07-22T14:37:43Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d7afaec0b564f0609e116f562983b8e72fc3e9c9'/>
<id>urn:sha1:d7afaec0b564f0609e116f562983b8e72fc3e9c9</id>
<content type='text'>
Here some additional changes to set a capability flag so that clients can
detect when it's appropriate to return -ENOSYS from open.

This amends the following commit introduced in 3.14:

  7678ac50615d  fuse: support clients that don't implement 'open'

However we can only add the flag to 3.15 and later since there was no
protocol version update in 3.14.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v3.15+
</content>
</entry>
<entry>
<title>fuse: s_time_gran fix</title>
<updated>2014-07-22T14:37:42Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-07-22T14:37:42Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a800bad36619ce47ac0222004635448e6c91ff72'/>
<id>urn:sha1:a800bad36619ce47ac0222004635448e6c91ff72</id>
<content type='text'>
Default s_time_gran is 1, don't overwrite that if userspace didn't
explicitly specify one.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v3.15+
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse</title>
<updated>2014-07-15T15:57:17Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2014-07-15T15:57:17Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0b632204c704e3f8c742153f4a4f72348a848c17'/>
<id>urn:sha1:0b632204c704e3f8c742153f4a4f72348a848c17</id>
<content type='text'>
Pull fuse fixes from Miklos Szeredi:
 "This contains miscellaneous fixes"

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mszeredi/fuse:
  fuse: replace count*size kzalloc by kcalloc
  fuse: release temporary page if fuse_writepage_locked() failed
  fuse: restructure -&gt;rename2()
  fuse: avoid scheduling while atomic
  fuse: handle large user and group ID
  fuse: inode: drop cast
  fuse: ignore entry-timeout on LOOKUP_REVAL
  fuse: timeout comparison fix
</content>
</entry>
<entry>
<title>fuse: replace count*size kzalloc by kcalloc</title>
<updated>2014-07-14T14:30:25Z</updated>
<author>
<name>Fabian Frederick</name>
<email>fabf@skynet.be</email>
</author>
<published>2014-06-23T16:35:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f2b3455e47c72bef80fe584adb9bb9bc5afdd99c'/>
<id>urn:sha1:f2b3455e47c72bef80fe584adb9bb9bc5afdd99c</id>
<content type='text'>
kcalloc manages count*sizeof overflow.

Signed-off-by: Fabian Frederick &lt;fabf@skynet.be&gt;
Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>fuse: release temporary page if fuse_writepage_locked() failed</title>
<updated>2014-07-14T14:17:57Z</updated>
<author>
<name>Maxim Patlasov</name>
<email>MPatlasov@parallels.com</email>
</author>
<published>2014-07-10T11:32:43Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=27f1b36326bc8b6911e7052bc4b80a10234f0ec5'/>
<id>urn:sha1:27f1b36326bc8b6911e7052bc4b80a10234f0ec5</id>
<content type='text'>
tmp_page to be freed if fuse_write_file_get() returns NULL.

Signed-off-by: Maxim Patlasov &lt;mpatlasov@parallels.com&gt;
Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>fuse: restructure -&gt;rename2()</title>
<updated>2014-07-10T08:50:19Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-07-10T08:50:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4237ba43b65aa989674c89fc4f2fe46eebc501ee'/>
<id>urn:sha1:4237ba43b65aa989674c89fc4f2fe46eebc501ee</id>
<content type='text'>
Make -&gt;rename2() universal, i.e. able to handle zero flags.  This is to
make future change of the API easier.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>fuse: avoid scheduling while atomic</title>
<updated>2014-07-07T13:28:51Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-07-07T13:28:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c55a01d360afafcd52bc405c044a6ebf5de436d5'/>
<id>urn:sha1:c55a01d360afafcd52bc405c044a6ebf5de436d5</id>
<content type='text'>
As reported by Richard Sharpe, an attempt to use fuse_notify_inval_entry()
triggers complains about scheduling while atomic:

  BUG: scheduling while atomic: fuse.hf/13976/0x10000001

This happens because fuse_notify_inval_entry() attempts to allocate memory
with GFP_KERNEL, holding "struct fuse_copy_state" mapped by kmap_atomic().

Introduced by commit 58bda1da4b3c "fuse/dev: use atomic maps"

Fix by moving the map/unmap to just cover the actual memcpy operation.

Original patch from Maxim Patlasov &lt;mpatlasov@parallels.com&gt;

Reported-by: Richard Sharpe &lt;realrichardsharpe@gmail.com&gt;
Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Cc: &lt;stable@vger.kernel.org&gt; # v3.15+
</content>
</entry>
<entry>
<title>fuse: handle large user and group ID</title>
<updated>2014-07-07T13:28:51Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2014-07-07T13:28:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=233a01fa9c4c7c41238537e8db8434667ff28a2f'/>
<id>urn:sha1:233a01fa9c4c7c41238537e8db8434667ff28a2f</id>
<content type='text'>
If the number in "user_id=N" or "group_id=N" mount options was larger than
INT_MAX then fuse returned EINVAL.

Fix this to handle all valid uid/gid values.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
<entry>
<title>fuse: inode: drop cast</title>
<updated>2014-07-07T13:28:51Z</updated>
<author>
<name>Himangi Saraogi</name>
<email>himangi774@gmail.com</email>
</author>
<published>2014-06-26T17:36:52Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7b3d8bf7718a8de8ac6a25ed7332c1c129839400'/>
<id>urn:sha1:7b3d8bf7718a8de8ac6a25ed7332c1c129839400</id>
<content type='text'>
This patch removes the cast on data of type void * as it is not needed.
The following Coccinelle semantic patch was used for making the change:

@r@
expression x;
void* e;
type T;
identifier f;
@@

(
  *((T *)e)
|
  ((T *)x)[...]
|
  ((T *)x)-&gt;f
|
- (T *)
  e
)

Signed-off-by: Himangi Saraogi &lt;himangi774@gmail.com&gt;
Acked-by: Julia Lawall &lt;julia.lawall@lip6.fr&gt;
Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
</content>
</entry>
<entry>
<title>fuse: ignore entry-timeout on LOOKUP_REVAL</title>
<updated>2014-07-07T13:28:51Z</updated>
<author>
<name>Anand Avati</name>
<email>avati@redhat.com</email>
</author>
<published>2014-06-27T00:21:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=154210ccb3a871e631bf39fdeb7a8731d98af87b'/>
<id>urn:sha1:154210ccb3a871e631bf39fdeb7a8731d98af87b</id>
<content type='text'>
The following test case demonstrates the bug:

  sh# mount -t glusterfs localhost:meta-test /mnt/one

  sh# mount -t glusterfs localhost:meta-test /mnt/two

  sh# echo stuff &gt; /mnt/one/file; rm -f /mnt/two/file; echo stuff &gt; /mnt/one/file
  bash: /mnt/one/file: Stale file handle

  sh# echo stuff &gt; /mnt/one/file; rm -f /mnt/two/file; sleep 1; echo stuff &gt; /mnt/one/file

On the second open() on /mnt/one, FUSE would have used the old
nodeid (file handle) trying to re-open it. Gluster is returning
-ESTALE. The ESTALE propagates back to namei.c:filename_lookup()
where lookup is re-attempted with LOOKUP_REVAL. The right
behavior now, would be for FUSE to ignore the entry-timeout and
and do the up-call revalidation. Instead FUSE is ignoring
LOOKUP_REVAL, succeeding the revalidation (because entry-timeout
has not passed), and open() is again retried on the old file
handle and finally the ESTALE is going back to the application.

Fix: if revalidation is happening with LOOKUP_REVAL, then ignore
entry-timeout and always do the up-call.

Signed-off-by: Anand Avati &lt;avati@redhat.com&gt;
Reviewed-by: Niels de Vos &lt;ndevos@redhat.com&gt;
Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
</feed>
