<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/net/sunrpc, branch v2.6.27.33</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/net/sunrpc?h=v2.6.27.33</id>
<link rel='self' href='https://git.amat.us/linux/atom/net/sunrpc?h=v2.6.27.33'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2009-09-09T03:17:51Z</updated>
<entry>
<title>SUNRPC: Fix tcp reconnection</title>
<updated>2009-09-09T03:17:51Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2009-08-21T17:37:17Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2607b3b8c16b95806c81968bcd909cba02e6d051'/>
<id>urn:sha1:2607b3b8c16b95806c81968bcd909cba02e6d051</id>
<content type='text'>
This fixes a problem that was reported as Red Hat Bugzilla entry number
485339, in which rpciod starts looping on the TCP connection code,
rendering the NFS client unusable for 1/2 minute or so.

It is basically a backport of commit
f75e6745aa3084124ae1434fd7629853bdaf6798 (SUNRPC: Fix the problem of
EADDRNOTAVAIL syslog floods on reconnect)

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;


</content>
</entry>
<entry>
<title>SUNRPC: Fix rpc_task_force_reencode</title>
<updated>2009-09-09T03:16:57Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2009-08-28T15:12:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=994e0b57b4ea1ee1726d31a7e669200b34405df7'/>
<id>urn:sha1:994e0b57b4ea1ee1726d31a7e669200b34405df7</id>
<content type='text'>
commit 2574cc9f4ffc6c681c9177111357efe5b76f0e36 upstream.

This patch fixes the bug that was reported in
  http://bugzilla.kernel.org/show_bug.cgi?id=14053

If we're in the case where we need to force a reencode and then resend of
the RPC request, due to xprt_transmit failing with a networking error, then
we _must_ retransmit the entire request.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>SUNRPC: Don't disconnect if a connection is still in progress.</title>
<updated>2009-07-30T23:06:09Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2009-03-11T18:37:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e62dadc0d24e3cfe4b8e45abae52ae72ab5c9dd1'/>
<id>urn:sha1:e62dadc0d24e3cfe4b8e45abae52ae72ab5c9dd1</id>
<content type='text'>
commit 40d2549db5f515e415894def98b49db7d4c56714 upstream.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>SUNRPC: Ensure we set XPRT_CLOSING only after we've sent a tcp FIN...</title>
<updated>2009-07-30T23:06:09Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2009-03-11T18:37:58Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=905e167d6445fb70c40d91c100cf88d7ad78a6ed'/>
<id>urn:sha1:905e167d6445fb70c40d91c100cf88d7ad78a6ed</id>
<content type='text'>
commit 670f94573104b4a25525d3fcdcd6496c678df172 upstream.

...so that we can distinguish between when we need to shutdown and when we
don't. Also remove the call to xs_tcp_shutdown() from xs_tcp_connect(),
since xprt_connect() makes the same test.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>SUNRPC: Avoid an unnecessary task reschedule on ENOTCONN</title>
<updated>2009-07-30T23:06:08Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2009-03-11T18:37:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=33a03f71c22bde120f8915bf0125ef6f40a55b46'/>
<id>urn:sha1:33a03f71c22bde120f8915bf0125ef6f40a55b46</id>
<content type='text'>
commit 15f081ca8ddfe150fb639c591b18944a539da0fc upstream.

If the socket is unconnected, and xprt_transmit() returns ENOTCONN, we
currently give up the lock on the transport channel. Doing so means that
the lock automatically gets assigned to the next task in the xprt-&gt;sending
queue, and so that task needs to be woken up to do the actual connect.

The following patch aims to avoid that unnecessary task switch.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>Add a reference to sunrpc in svc_addsock</title>
<updated>2009-02-12T17:31:11Z</updated>
<author>
<name>Tom Tucker</name>
<email>tom@opengridcomputing.com</email>
</author>
<published>2008-11-23T15:58:08Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2a77565dbf90825655a46f2ead7e931716736033'/>
<id>urn:sha1:2a77565dbf90825655a46f2ead7e931716736033</id>
<content type='text'>
commit 2da2c21d7508d34bc6d600df665d84871b65d2b9 upstream.

The svc_addsock function adds transport instances without taking a
reference on the sunrpc.ko module, however, the generic transport
destruction code drops a reference when a transport instance
is destroyed.

Add a try_module_get call to the svc_addsock function for transport
instances added by this function.

Signed-off-by: Tom Tucker &lt;tom@opengridcomputing.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
Tested-by: Jeff Moyer &lt;jmoyer@redhat.com&gt;
Cc: Neil Brown &lt;neilb@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>SUNRPC: Fix autobind on cloned rpc clients</title>
<updated>2009-02-02T16:28:11Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2008-10-03T20:48:34Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=010703af998cf0c3927cb587d88641ed5a3ef358'/>
<id>urn:sha1:010703af998cf0c3927cb587d88641ed5a3ef358</id>
<content type='text'>
commit 9a4bd29fe8f6d3f015fe1c8e5450eb62cfebfcc9 upstream.

Despite the fact that cloned rpc clients won't have the cl_autobind flag
set, they may still find themselves calling rpcb_getport_async(). For this
to happen, it suffices for a _parent_ rpc_clnt to use autobinding, in which
case any clone may find itself triggering the !xprt_bound() case in
call_bind().

The correct fix for this is to walk back up the tree of cloned rpc clients,
in order to find the parent that 'owns' the transport, either because it
has clnt-&gt;cl_autobind set, or because it originally created the
transport...

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>SUNRPC: Fix a memory leak in rpcb_getport_async</title>
<updated>2009-02-02T16:28:11Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2008-10-03T20:48:40Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=bdd35ffe1d8b1a4197dd459eef653028bf521327'/>
<id>urn:sha1:bdd35ffe1d8b1a4197dd459eef653028bf521327</id>
<content type='text'>
commit 96165e2b7c4e2c82a0b60c766d4a2036444c21a0 upstream.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>SUNRPC: Fix a performance regression in the RPC authentication code</title>
<updated>2008-12-18T17:13:39Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2008-11-20T21:06:21Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=a0f04d0096bd7edb543576c55f7a0993628f924a'/>
<id>urn:sha1:a0f04d0096bd7edb543576c55f7a0993628f924a</id>
<content type='text'>
commit 23918b03060f6e572168fdde1798a905679d2e06 upstream.

Fix a regression reported by Max Kellermann whereby kernel profiling
showed that his clients were spending 45% of their time in
rpcauth_lookup_credcache.

It turns out that although his processes had identical uid/gid/groups,
generic_match() was failing to detect this, because the task-&gt;group_info
pointers were not shared. This again lead to the creation of a huge number
of identical credentials at the RPC layer.

The regression is fixed by comparing the contents of task-&gt;group_info
if the actual pointers are not identical.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>sunrpc: fix possible overrun on read of /proc/sys/sunrpc/transports</title>
<updated>2008-09-01T18:24:24Z</updated>
<author>
<name>Cyrill Gorcunov</name>
<email>gorcunov@gmail.com</email>
</author>
<published>2008-08-31T15:25:49Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=27df6f25ff218072e0e879a96beeb398a79cdbc8'/>
<id>urn:sha1:27df6f25ff218072e0e879a96beeb398a79cdbc8</id>
<content type='text'>
Vegard Nossum reported
----------------------
&gt; I noticed that something weird is going on with /proc/sys/sunrpc/transports.
&gt; This file is generated in net/sunrpc/sysctl.c, function proc_do_xprt(). When
&gt; I "cat" this file, I get the expected output:
&gt;    $ cat /proc/sys/sunrpc/transports
&gt;    tcp 1048576
&gt;    udp 32768

&gt; But I think that it does not check the length of the buffer supplied by
&gt; userspace to read(). With my original program, I found that the stack was
&gt; being overwritten by the characters above, even when the length given to
&gt; read() was just 1.

David Wagner added (among other things) that copy_to_user could be
probably used here.

Ingo Oeser suggested to use simple_read_from_buffer() here.

The conclusion is that proc_do_xprt doesn't check for userside buffer
size indeed so fix this by using Ingo's suggestion.

Reported-by: Vegard Nossum &lt;vegard.nossum@gmail.com&gt;
Signed-off-by: Cyrill Gorcunov &lt;gorcunov@gmail.com&gt;
CC: Ingo Oeser &lt;ioe-lkml@rameria.de&gt;
Cc: Neil Brown &lt;neilb@suse.de&gt;
Cc: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Cc: Greg Banks &lt;gnb@sgi.com&gt;
Cc: Tom Tucker &lt;tom@opengridcomputing.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
</feed>
