<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/fuse, branch v2.6.19</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs/fuse?h=v2.6.19</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs/fuse?h=v2.6.19'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2006-11-25T21:28:33Z</updated>
<entry>
<title>[PATCH] fuse: fix Oops in lookup</title>
<updated>2006-11-25T21:28:33Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>miklos@szeredi.hu</email>
</author>
<published>2006-11-25T19:09:20Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2d51013ed2f2b6a5d2369b7fbbd989df1f6369e2'/>
<id>urn:sha1:2d51013ed2f2b6a5d2369b7fbbd989df1f6369e2</id>
<content type='text'>
Fix bug in certain error paths of lookup routines.  The request object was
reused for sending FORGET, which is illegal.  This bug could cause an Oops
in 2.6.18.  In earlier versions it might silently corrupt memory, but this
is very unlikely.

These error paths are never triggered by libfuse, so this wasn't noticed
even with the 2.6.18 kernel, only with a filesystem using the raw kernel
interface.

Thanks to Russ Cox for the bug report and test filesystem.

Signed-off-by: Miklos Szeredi &lt;miklos@szeredi.hu&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] fuse: -&gt;readpages() cleanup</title>
<updated>2006-11-03T20:27:57Z</updated>
<author>
<name>OGAWA Hirofumi</name>
<email>hirofumi@mail.parknet.co.jp</email>
</author>
<published>2006-11-03T06:07:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2e990021bfc65b1a3778479a9e6b4811f9c1ff0e'/>
<id>urn:sha1:2e990021bfc65b1a3778479a9e6b4811f9c1ff0e</id>
<content type='text'>
This just ignore the remaining pages.

Signed-off-by: OGAWA Hirofumi &lt;hirofumi@mail.parknet.co.jp&gt;
Cc: Steven French &lt;sfrench@us.ibm.com&gt;
Cc: Miklos Szeredi &lt;miklos@szeredi.hu&gt;
Cc: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Cc: Trond Myklebust &lt;trond.myklebust@fys.uio.no&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] fuse: fix dereferencing dentry parent</title>
<updated>2006-10-17T15:18:45Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>miklos@szeredi.hu</email>
</author>
<published>2006-10-17T07:10:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e956edd0523b6b48ed367c63b0c82d8f4c447a58'/>
<id>urn:sha1:e956edd0523b6b48ed367c63b0c82d8f4c447a58</id>
<content type='text'>
There's no locking for -&gt;d_revalidate, so fuse_dentry_revalidate() should use
dget_parent() instead of simply dereferencing -&gt;d_parent.

Due to topology changes in the directory tree the parent could become negative
or be destroyed while being used.  There hasn't been any reports about this
yet.

Signed-off-by: Miklos Szeredi &lt;miklos@szeredi.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] fuse: fix handling of moved directory</title>
<updated>2006-10-17T15:18:45Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>miklos@szeredi.hu</email>
</author>
<published>2006-10-17T07:10:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d2a85164aaa8d514ef5efbf5d05746e85dd13ddd'/>
<id>urn:sha1:d2a85164aaa8d514ef5efbf5d05746e85dd13ddd</id>
<content type='text'>
Fuse considered it an error (EIO) if lookup returned a directory inode, to
which a dentry already refered.  This is because directory aliases are not
allowed.

But in a network filesystem this could happen legitimately, if a directory is
moved on a remote client.  This patch attempts to relax the restriction by
trying to first evict the offending alias from the cache.  If this fails, it
still returns an error (EBUSY).

A rarer situation is if an mkdir races with an indenpendent lookup, which
finds the newly created directory already moved.  In this situation the mkdir
should return success, but that would be incorrect, since the dentry cannot be
instantiated, so return EBUSY.

Previously checking for a directory alias and instantiation of the dentry
weren't done atomically in lookup/mkdir, hence two such calls racing with each
other could create aliased directories.  To prevent this introduce a new
per-connection mutex: fuse_conn-&gt;inst_mutex, which is taken for instantiations
with a directory inode.

Signed-off-by: Miklos Szeredi &lt;miklos@szeredi.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] fuse: fix spurious BUG</title>
<updated>2006-10-17T15:18:45Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>miklos@szeredi.hu</email>
</author>
<published>2006-10-17T07:10:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=265126ba9e1f8e217e61d1017c6609f76828aa7a'/>
<id>urn:sha1:265126ba9e1f8e217e61d1017c6609f76828aa7a</id>
<content type='text'>
Fix a spurious BUG in an unlikely race, where at least three parallel lookups
return the same inode, but with different file type.  This has not yet been
observed in real life.

Allowing unlimited retries could delay fuse_iget() indefinitely, but this is
really for the broken userspace filesystem to worry about.

Signed-off-by: Miklos Szeredi &lt;miklos@szeredi.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] fuse: locking fix for nlookup</title>
<updated>2006-10-17T15:18:45Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>miklos@szeredi.hu</email>
</author>
<published>2006-10-17T07:10:08Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=8da5ff23ce0a84d9845b01e6fe5047e17836bf5a'/>
<id>urn:sha1:8da5ff23ce0a84d9845b01e6fe5047e17836bf5a</id>
<content type='text'>
An inode could be returned by independent parallel lookups, in this case an
update of the lookup counter could be lost resulting in a memory leak in
userspace.

Signed-off-by: Miklos Szeredi &lt;miklos@szeredi.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] fuse: fix hang on SMP</title>
<updated>2006-10-17T15:18:45Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>miklos@szeredi.hu</email>
</author>
<published>2006-10-17T07:10:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9ffbb9162312fd8113037cb3d94f787f06bbfa9a'/>
<id>urn:sha1:9ffbb9162312fd8113037cb3d94f787f06bbfa9a</id>
<content type='text'>
Fuse didn't always call i_size_write() with i_mutex held which caused rare
hangs on SMP/32bit.  This bug has been present since fuse-2.2, well before
being merged into mainline.

The simplest solution is to protect i_size_write() with the per-connection
spinlock.  Using i_mutex for this purpose would require some restructuring of
the code and I'm not even sure it's always safe to acquire i_mutex in all
places i_size needs to be set.

Since most of vmtruncate is already duplicated for other reasons, duplicate
the remaining part as well, making all i_size_write() calls internal to fuse.

Using i_size_write() was unnecessary in fuse_init_inode(), since this function
is only called on a newly created locked inode.

Reported by a few people over the years, but special thanks to Dana Henriksen
who was persistent enough in helping me debug it.

Signed-off-by: Miklos Szeredi &lt;miklos@szeredi.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] r/o bind mounts: monitor zeroing of i_nlink</title>
<updated>2006-10-01T07:39:30Z</updated>
<author>
<name>Dave Hansen</name>
<email>haveblue@us.ibm.com</email>
</author>
<published>2006-10-01T06:29:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ce71ec36840368b877fb63bd14c8e67ab62d08b1'/>
<id>urn:sha1:ce71ec36840368b877fb63bd14c8e67ab62d08b1</id>
<content type='text'>
Some filesystems, instead of simply decrementing i_nlink, simply zero it
during an unlink operation.  We need to catch these in addition to the
decrement operations.

Signed-off-by: Dave Hansen &lt;haveblue@us.ibm.com&gt;
Acked-by: Christoph Hellwig &lt;hch@lst.de&gt;
Cc: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] r/o bind mount prepwork: inc_nlink() helper</title>
<updated>2006-10-01T07:39:30Z</updated>
<author>
<name>Dave Hansen</name>
<email>haveblue@us.ibm.com</email>
</author>
<published>2006-10-01T06:29:04Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d8c76e6f45c111c32a4b3e50a2adc9210737b0d8'/>
<id>urn:sha1:d8c76e6f45c111c32a4b3e50a2adc9210737b0d8</id>
<content type='text'>
This is mostly included for parity with dec_nlink(), where we will have some
more hooks.  This one should stay pretty darn straightforward for now.

Signed-off-by: Dave Hansen &lt;haveblue@us.ibm.com&gt;
Acked-by: Christoph Hellwig &lt;hch@lst.de&gt;
Cc: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
<entry>
<title>[PATCH] Streamline generic_file_* interfaces and filemap cleanups</title>
<updated>2006-10-01T07:39:28Z</updated>
<author>
<name>Badari Pulavarty</name>
<email>pbadari@us.ibm.com</email>
</author>
<published>2006-10-01T06:28:48Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=543ade1fc901db4c3dbe9fb27241fb977f1f3eea'/>
<id>urn:sha1:543ade1fc901db4c3dbe9fb27241fb977f1f3eea</id>
<content type='text'>
This patch cleans up generic_file_*_read/write() interfaces.  Christoph
Hellwig gave me the idea for this clean ups.

In a nutshell, all filesystems should set .aio_read/.aio_write methods and use
do_sync_read/ do_sync_write() as their .read/.write methods.  This allows us
to cleanup all variants of generic_file_* routines.

Final available interfaces:

generic_file_aio_read() - read handler
generic_file_aio_write() - write handler
generic_file_aio_write_nolock() - no lock write handler

__generic_file_aio_write_nolock() - internal worker routine

Signed-off-by: Badari Pulavarty &lt;pbadari@us.ibm.com&gt;
Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
</entry>
</feed>
