<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/fuse/inode.c, branch linux-2.6.20.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.20.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.20.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2006-12-07T16:39:32Z</updated>
<entry>
<title>[PATCH] fuse: fix compile without CONFIG_BLOCK</title>
<updated>2006-12-07T16:39:32Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2006-12-07T04:35:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=875d95ec9eb69ffb334116fb44d04d9a64dcbfbb'/>
<id>urn:sha1:875d95ec9eb69ffb334116fb44d04d9a64dcbfbb</id>
<content type='text'>
Randy Dunlap wote:
&gt; Should FUSE depend on BLOCK?  Without that and with BLOCK=n, I get:
&gt;
&gt; inode.c:(.text+0x3acc5): undefined reference to `sb_set_blocksize'
&gt; inode.c:(.text+0x3a393): undefined reference to `get_sb_bdev'
&gt; fs/built-in.o:(.data+0xd718): undefined reference to `kill_block_super

Most fuse filesystems work fine without block device support, so I
think a better solution is to disable the 'fuseblk' filesystem type if
BLOCK=n.

Signed-off-by: Miklos Szeredi &lt;miklos@szeredi.hu&gt;
Acked-by: Randy Dunlap &lt;randy.dunlap@oracle.com&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: add DESTROY operation</title>
<updated>2006-12-07T16:39:32Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2006-12-07T04:35:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0ec7ca41f6f0f74a394a7d686bc0ee8afef84887'/>
<id>urn:sha1:0ec7ca41f6f0f74a394a7d686bc0ee8afef84887</id>
<content type='text'>
Add a DESTROY operation for block device based filesystems.  With the help of
this operation, such a filesystem can flush dirty data to the device
synchronously before the umount returns.

This is needed in situations where the filesystem is assumed to be clean
immediately after unmount (e.g.  ejecting removable media).

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: add blksize option</title>
<updated>2006-12-07T16:39:31Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2006-12-07T04:35:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d809161402e9f99aefe8848c4e701597ac367269'/>
<id>urn:sha1:d809161402e9f99aefe8848c4e701597ac367269</id>
<content type='text'>
Add 'blksize' option for block device based filesystems.  During
initialization this is used to set the block size on the device and the super
block.  The default block size is 512bytes.

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: add support for block device based filesystems</title>
<updated>2006-12-07T16:39:31Z</updated>
<author>
<name>Miklos Szeredi</name>
</author>
<published>2006-12-07T04:35:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d6392f873f1d09974d5c92c52715fa422ad7c625'/>
<id>urn:sha1:d6392f873f1d09974d5c92c52715fa422ad7c625</id>
<content type='text'>
I never intended this, but people started using fuse to implement block device
based "real" filesystems (ntfs-3g, zfs).

The following four patches add better support for these kinds of filesystems.
Unlike "normal" fuse filesystems, using this feature should require superuser
privileges (enforced by the fusermount utility).

Thanks to Szabolcs Szakacsits for the input and testing.

This patch adds a 'fuseblk' filesystem type, which is only different from the
'fuse' filesystem type in how the 'dev_name' mount argument is interpreted.

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] slab: remove kmem_cache_t</title>
<updated>2006-12-07T16:39:25Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2006-12-07T04:33:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e18b890bb0881bbab6f4f1a6cd20d9c60d66b003'/>
<id>urn:sha1:e18b890bb0881bbab6f4f1a6cd20d9c60d66b003</id>
<content type='text'>
Replace all uses of kmem_cache_t with struct kmem_cache.

The patch was generated using the following script:

	#!/bin/sh
	#
	# Replace one string by another in all the kernel sources.
	#

	set -e

	for file in `find * -name "*.c" -o -name "*.h"|xargs grep -l $1`; do
		quilt add $file
		sed -e "1,\$s/$1/$2/g" $file &gt;/tmp/$$
		mv /tmp/$$ $file
		quilt refresh
	done

The script was run like this

	sh replace kmem_cache_t "struct kmem_cache"

Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&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] slab: remove SLAB_KERNEL</title>
<updated>2006-12-07T16:39:24Z</updated>
<author>
<name>Christoph Lameter</name>
</author>
<published>2006-12-07T04:33:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e94b1766097d53e6f3ccfb36c8baa562ffeda3fc'/>
<id>urn:sha1:e94b1766097d53e6f3ccfb36c8baa562ffeda3fc</id>
<content type='text'>
SLAB_KERNEL is an alias of GFP_KERNEL.

Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&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>
</author>
<published>2006-10-17T07:10:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/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>
</author>
<published>2006-10-17T07:10:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/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>
</author>
<published>2006-10-17T07:10:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/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>
</author>
<published>2006-10-17T07:10:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/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>
</feed>
