<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/afs, branch v3.2.48</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs/afs?h=v3.2.48</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs/afs?h=v3.2.48'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-03-23T18:21:22Z</updated>
<entry>
<title>afs: Remote abort can cause BUG in rxrpc code</title>
<updated>2012-03-23T18:21:22Z</updated>
<author>
<name>Anton Blanchard</name>
<email>anton@samba.org</email>
</author>
<published>2012-03-16T10:28:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a3e7dddf9d7dd2e98f015b96afa343da370e8468'/>
<id>urn:sha1:a3e7dddf9d7dd2e98f015b96afa343da370e8468</id>
<content type='text'>
commit c0173863528a8c9212c53e080d63a1aaae5ef4f4 upstream.

When writing files to afs I sometimes hit a BUG:

kernel BUG at fs/afs/rxrpc.c:179!

With a backtrace of:

	afs_free_call
	afs_make_call
	afs_fs_store_data
	afs_vnode_store_data
	afs_write_back_from_locked_page
	afs_writepages_region
	afs_writepages

The cause is:

	ASSERT(skb_queue_empty(&amp;call-&gt;rx_queue));

Looking at a tcpdump of the session the abort happens because we
are exceeding our disk quota:

	rx abort fs reply store-data error diskquota exceeded (32)

So the abort error is valid. We hit the BUG because we haven't
freed all the resources for the call.

By freeing any skbs in call-&gt;rx_queue before calling afs_free_call
we avoid hitting leaking memory and avoid hitting the BUG.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>afs: Read of file returns EBADMSG</title>
<updated>2012-03-23T18:21:21Z</updated>
<author>
<name>Anton Blanchard</name>
<email>anton@samba.org</email>
</author>
<published>2012-03-16T10:28:07Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=3b17e8051322d7ea54e6548606b9eb3a2d694919'/>
<id>urn:sha1:3b17e8051322d7ea54e6548606b9eb3a2d694919</id>
<content type='text'>
commit 2c724fb92732c0b2a5629eb8af74e82eb62ac947 upstream.

A read of a large file on an afs mount failed:

# cat junk.file &gt; /dev/null
cat: junk.file: Bad message

Looking at the trace, call-&gt;offset wrapped since it is only an
unsigned short. In afs_extract_data:

        _enter("{%u},{%zu},%d,,%zu", call-&gt;offset, len, last, count);
...

        if (call-&gt;offset &lt; count) {
                if (last) {
                        _leave(" = -EBADMSG [%d &lt; %zu]", call-&gt;offset, count);
                        return -EBADMSG;
                }

Which matches the trace:

[cat   ] ==&gt; afs_extract_data({65132},{524},1,,65536)
[cat   ] &lt;== afs_extract_data() = -EBADMSG [0 &lt; 65536]

call-&gt;offset went from 65132 to 0. Fix this by making call-&gt;offset an
unsigned int.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>filesystems: add set_nlink()</title>
<updated>2011-11-02T11:53:43Z</updated>
<author>
<name>Miklos Szeredi</name>
<email>mszeredi@suse.cz</email>
</author>
<published>2011-10-28T12:13:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=bfe8684869601dacfcb2cd69ef8cfd9045f62170'/>
<id>urn:sha1:bfe8684869601dacfcb2cd69ef8cfd9045f62170</id>
<content type='text'>
Replace remaining direct i_nlink updates with a new set_nlink()
updater function.

Signed-off-by: Miklos Szeredi &lt;mszeredi@suse.cz&gt;
Tested-by: Toshiyuki Okajima &lt;toshi.okajima@jp.fujitsu.com&gt;
Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
</content>
</entry>
<entry>
<title>AFS: Fix silly characters in a comment</title>
<updated>2011-07-21T00:48:03Z</updated>
<author>
<name>David Howells</name>
<email>dhowells@redhat.com</email>
</author>
<published>2011-07-18T12:50:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e4b9f0058145a3bed4199eacee62a9969c163401'/>
<id>urn:sha1:e4b9f0058145a3bed4199eacee62a9969c163401</id>
<content type='text'>
Fix silly characters in a comment in AFS code (some weird characters replaced
the word 'flag' some point way back).

Reported-by: viro@ZenIV.linux.org.uk
Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>fs: push i_mutex and filemap_write_and_wait down into -&gt;fsync() handlers</title>
<updated>2011-07-21T00:47:59Z</updated>
<author>
<name>Josef Bacik</name>
<email>josef@redhat.com</email>
</author>
<published>2011-07-17T00:44:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=02c24a82187d5a628c68edfe71ae60dc135cd178'/>
<id>urn:sha1:02c24a82187d5a628c68edfe71ae60dc135cd178</id>
<content type='text'>
Btrfs needs to be able to control how filemap_write_and_wait_range() is called
in fsync to make it less of a painful operation, so push down taking i_mutex and
the calling of filemap_write_and_wait() down into the -&gt;fsync() handlers.  Some
file systems can drop taking the i_mutex altogether it seems, like ext3 and
ocfs2.  For correctness sake I just pushed everything down in all cases to make
sure that we keep the current behavior the same for everybody, and then each
individual fs maintainer can make up their mind about what to do from there.
Thanks,

Acked-by: Jan Kara &lt;jack@suse.cz&gt;
Signed-off-by: Josef Bacik &lt;josef@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>-&gt;permission() sanitizing: don't pass flags to -&gt;permission()</title>
<updated>2011-07-20T05:43:24Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2011-06-20T23:28:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=10556cb21a0d0b24d95f00ea6df16f599a3345b2'/>
<id>urn:sha1:10556cb21a0d0b24d95f00ea6df16f599a3345b2</id>
<content type='text'>
not used by the instances anymore.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>-&gt;permission() sanitizing: don't pass flags to generic_permission()</title>
<updated>2011-07-20T05:43:22Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2011-06-20T23:16:29Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2830ba7f34ebb27c4e5b8b6ef408cd6d74860890'/>
<id>urn:sha1:2830ba7f34ebb27c4e5b8b6ef408cd6d74860890</id>
<content type='text'>
redundant; all callers get it duplicated in mask &amp; MAY_NOT_BLOCK and none of
them removes that bit.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>kill check_acl callback of generic_permission()</title>
<updated>2011-07-20T05:43:16Z</updated>
<author>
<name>Al Viro</name>
<email>viro@zeniv.linux.org.uk</email>
</author>
<published>2011-06-20T15:31:30Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=178ea73521d64ba41d7aa5488fb9f549c6d4507d'/>
<id>urn:sha1:178ea73521d64ba41d7aa5488fb9f549c6d4507d</id>
<content type='text'>
its value depends only on inode and does not change; we might as
well store it in -&gt;i_op-&gt;check_acl and be done with that.

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>AFS: Use i_generation not i_version for the vnode uniquifier</title>
<updated>2011-06-16T15:44:48Z</updated>
<author>
<name>David Howells</name>
<email>dhowells@redhat.com</email>
</author>
<published>2011-06-13T23:45:44Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d6e43f751f252c68ca69fa6d18665d88d69ef8b7'/>
<id>urn:sha1:d6e43f751f252c68ca69fa6d18665d88d69ef8b7</id>
<content type='text'>
Store the AFS vnode uniquifier in the i_generation field, not the i_version
field of the inode struct.  i_version can then be given the AFS data version
number.

Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>AFS: Set s_id in the superblock to the volume name</title>
<updated>2011-06-16T15:44:47Z</updated>
<author>
<name>David Howells</name>
<email>dhowells@redhat.com</email>
</author>
<published>2011-06-13T23:38:44Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2e41ae225f742ded5b7d9847cd8bd605f27daba8'/>
<id>urn:sha1:2e41ae225f742ded5b7d9847cd8bd605f27daba8</id>
<content type='text'>
Set s_id in the superblock to the name of the AFS volume that this superblock
corresponds to.

Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
</feed>
