<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/fuse/inode.c, branch linux-2.6.24.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.24.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.24.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2007-11-29T17:24:54Z</updated>
<entry>
<title>fuse: fix uninitialized field in fuse_inode</title>
<updated>2007-11-29T17:24:54Z</updated>
<author>
<name>John Muir</name>
</author>
<published>2007-11-29T00:22:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fbee36b92abc965d3fc2862aa60fd0dfcf779d0b'/>
<id>urn:sha1:fbee36b92abc965d3fc2862aa60fd0dfcf779d0b</id>
<content type='text'>
I found problems accessing (executing) previously existing files, until
I did chmod on them (or setattr).

If the fi-&gt;attr_version is not initialized, then it could be
larger than fc-&gt;attr_version until a setattr is executed, and as a
result the inode attributes would never be set.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fuse: fix FUSE_FILE_OPS sending</title>
<updated>2007-11-29T17:24:54Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2007-11-29T00:22:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d0186b25e65d4d786727a03044b8aafe2ba118ee'/>
<id>urn:sha1:d0186b25e65d4d786727a03044b8aafe2ba118ee</id>
<content type='text'>
FUSE_FILE_OPS is meant to signal that the kernel will send the open file to to
the userspace filesystem for operations on open files, so that sillyrenaming
unlinked files becomes unnecessary.

However this needs VFS changes, which won't make it into 2.6.24.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fuse: add blksize field to fuse_attr</title>
<updated>2007-10-18T21:37:31Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2007-10-18T10:07:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0e9663ee452ffce0d429656ebbcfe69417a30e92'/>
<id>urn:sha1:0e9663ee452ffce0d429656ebbcfe69417a30e92</id>
<content type='text'>
There are cases when the filesystem will be passed the buffer from a single
read or write call, namely:

 1) in 'direct-io' mode (not O_DIRECT), read/write requests don't go
    through the page cache, but go directly to the userspace fs

 2) currently buffered writes are done with single page requests, but
    if Nick's -&gt;perform_write() patch goes it, it will be possible to
    do larger write requests.  But only if the original write() was
    also bigger than a page.

In these cases the filesystem might want to give a hint to the app
about the optimal I/O size.

Allow the userspace filesystem to supply a blksize value to be returned by
stat() and friends.  If the field is zero, it defaults to the old
PAGE_CACHE_SIZE value.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fuse: add list of writable files to fuse_inode</title>
<updated>2007-10-18T21:37:31Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2007-10-18T10:07:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=93a8c3cd9e9834dc5f5c373336f3a0065521152d'/>
<id>urn:sha1:93a8c3cd9e9834dc5f5c373336f3a0065521152d</id>
<content type='text'>
Each WRITE request must carry a valid file descriptor.  When a page is written
back from a memory mapping, the file through which the page was dirtied is not
available, so a new mechananism is needed to find a suitable file in
-&gt;writepage(s).

A list of fuse_files is added to fuse_inode.  The file is removed from the
list in fuse_release().

This patch is in preparation for writable mmap support.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fuse: add atomic open+truncate support</title>
<updated>2007-10-18T21:37:31Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2007-10-18T10:07:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6ff958edbf39c014eb06b65ad25b736be08c4e63'/>
<id>urn:sha1:6ff958edbf39c014eb06b65ad25b736be08c4e63</id>
<content type='text'>
This patch allows fuse filesystems to implement open(..., O_TRUNC) as a single
request, instead of separate truncate and open requests.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fuse: add file handle to getattr operation</title>
<updated>2007-10-18T21:37:30Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2007-10-18T10:06:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c79e322f63592c00b25b17af6a1782fad6c6fe6e'/>
<id>urn:sha1:c79e322f63592c00b25b17af6a1782fad6c6fe6e</id>
<content type='text'>
Add necessary protocol changes for supplying a file handle with the getattr
operation.  Step the API version to 7.9.

This patch doesn't actually supply the file handle, because that needs some
kind of VFS support, which we haven't yet been able to agree upon.

[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fuse: fix race between getattr and write</title>
<updated>2007-10-18T21:37:30Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2007-10-18T10:06:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1fb69e7817296da8a6824804bb206ca1e7f31425'/>
<id>urn:sha1:1fb69e7817296da8a6824804bb206ca1e7f31425</id>
<content type='text'>
Getattr and lookup operations can be running in parallel to attribute changing
operations, such as write and setattr.

This means, that if for example getattr was slower than a write, the cached
size attribute could be set to a stale value.

To prevent this race, introduce a per-filesystem attribute version counter.
This counter is incremented whenever cached attributes are modified, and the
incremented value stored in the inode.

Before storing new attributes in the cache, getattr and lookup check, using
the version number, whether the attributes have been modified during the
request's lifetime.  If so, the returned attributes are not cached, because
they might be stale.

Thanks to Jakub Bogusz for the bug report and test program.

[akpm@linux-foundation.org: coding-style fixes]
Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Cc: Jakub Bogusz &lt;jakub.bogusz@gemius.pl&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fuse: fix allowing operations</title>
<updated>2007-10-18T21:37:29Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2007-10-18T10:06:58Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e57ac68378a287d6336d187b26971f35f7ee7251'/>
<id>urn:sha1:e57ac68378a287d6336d187b26971f35f7ee7251</id>
<content type='text'>
The following operation didn't check if sending the request was allowed:

  setattr
  listxattr
  statfs

Some other operations don't explicitly do the check, but VFS calls
-&gt;permission() which checks this.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fuse: fix permission checking on sticky directories</title>
<updated>2007-10-17T15:43:04Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2007-10-17T06:31:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ebc14c4dbeb56195950058db9aa32de06c22de0d'/>
<id>urn:sha1:ebc14c4dbeb56195950058db9aa32de06c22de0d</id>
<content type='text'>
The VFS checks sticky bits on the parent directory even if the filesystem
defines it's own -&gt;permission().  In some situations (sshfs, mountlo, etc) the
user does have permission to delete a file even if the attribute based
checking would not allow it.

So work around this by storing the permission bits separately and returning
them in stat(), but cutting the permission bits off from inode-&gt;i_mode.

This is slightly hackish, but it's probably not worth it to add new
infrastructure in VFS and a slight performance penalty for all filesystems,
just for the sake of fuse.

[Jan Engelhardt] cosmetic fixes
Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Cc: Jan Engelhardt &lt;jengelh@linux01.gwdg.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>fuse: set i_nlink to sane value after mount</title>
<updated>2007-10-17T15:43:04Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2007-10-17T06:31:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=074406fa6309ab8b0aca15496b16b3653e58c03d'/>
<id>urn:sha1:074406fa6309ab8b0aca15496b16b3653e58c03d</id>
<content type='text'>
Aufs seems to depend on a positive i_nlink value.  So fill in a dummy but sane
value for the root inode at mount time.

The inode attributes are refreshed with the correct values at the first
opportunity.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
</feed>
