<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/net/sunrpc/xprtsock.c, branch v2.6.16</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>SUNRPC: Ensure client closes the socket when server initiates a close</title>
<updated>2006-01-06T19:58:57+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2006-01-03T08:55:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=632e3bdc5006334cea894d078660b691685e1075'/>
<id>632e3bdc5006334cea894d078660b691685e1075</id>
<content type='text'>
 If the server decides to close the RPC socket, we currently don't actually
 respond until either another RPC call is scheduled, or until xprt_autoclose()
 gets called by the socket expiry timer (which may be up to 5 minutes
 later).

 This patch ensures that xprt_autoclose() is called much sooner if the
 server closes the socket.

 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 If the server decides to close the RPC socket, we currently don't actually
 respond until either another RPC call is scheduled, or until xprt_autoclose()
 gets called by the socket expiry timer (which may be up to 5 minutes
 later).

 This patch ensures that xprt_autoclose() is called much sooner if the
 server closes the socket.

 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>SUNRPC: transport switch API for setting port number</title>
<updated>2006-01-06T19:58:56+00:00</updated>
<author>
<name>Chuck Lever</name>
<email>cel@netapp.com</email>
</author>
<published>2006-01-03T08:55:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=922004120b10dcb0ce04b55014168e8a7a8c1a0e'/>
<id>922004120b10dcb0ce04b55014168e8a7a8c1a0e</id>
<content type='text'>
 At some point, transport endpoint addresses will no longer be IPv4.  To hide
 the structure of the rpc_xprt's address field from ULPs and port mappers,
 add an API for setting the port number during an RPC bind operation.

 Test-plan:
 Destructive testing (unplugging the network temporarily).  Connectathon
 with UDP and TCP.  NFSv2/3 and NFSv4 mounting should be carefully checked.
 Probably need to rig a server where certain services aren't running, or
 that returns an error for some typical operation.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 At some point, transport endpoint addresses will no longer be IPv4.  To hide
 the structure of the rpc_xprt's address field from ULPs and port mappers,
 add an API for setting the port number during an RPC bind operation.

 Test-plan:
 Destructive testing (unplugging the network temporarily).  Connectathon
 with UDP and TCP.  NFSv2/3 and NFSv4 mounting should be carefully checked.
 Probably need to rig a server where certain services aren't running, or
 that returns an error for some typical operation.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>SUNRPC: switchable buffer allocation</title>
<updated>2006-01-06T19:58:55+00:00</updated>
<author>
<name>Chuck Lever</name>
<email>cel@netapp.com</email>
</author>
<published>2006-01-03T08:55:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=02107148349f31eee7c0fb06fd7a880df73dbd20'/>
<id>02107148349f31eee7c0fb06fd7a880df73dbd20</id>
<content type='text'>
 Add RPC client transport switch support for replacing buffer management
 on a per-transport basis.

 In the current IPv4 socket transport implementation, RPC buffers are
 allocated as needed for each RPC message that is sent.  Some transport
 implementations may choose to use pre-allocated buffers for encoding,
 sending, receiving, and unmarshalling RPC messages, however.  For
 transports capable of direct data placement, the buffers can be carved
 out of a pre-registered area of memory rather than from a slab cache.

 Test-plan:
 Millions of fsx operations.  Performance characterization with "sio" and
 "iozone".  Use oprofile and other tools to look for significant regression
 in CPU utilization.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 Add RPC client transport switch support for replacing buffer management
 on a per-transport basis.

 In the current IPv4 socket transport implementation, RPC buffers are
 allocated as needed for each RPC message that is sent.  Some transport
 implementations may choose to use pre-allocated buffers for encoding,
 sending, receiving, and unmarshalling RPC messages, however.  For
 transports capable of direct data placement, the buffers can be carved
 out of a pre-registered area of memory rather than from a slab cache.

 Test-plan:
 Millions of fsx operations.  Performance characterization with "sio" and
 "iozone".  Use oprofile and other tools to look for significant regression
 in CPU utilization.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>RPC: Do not block on skb allocation</title>
<updated>2005-12-20T04:11:54+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2005-12-13T21:13:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b079fa7baa86b47579f3f60f86d03d21c76159b8'/>
<id>b079fa7baa86b47579f3f60f86d03d21c76159b8</id>
<content type='text'>
 If we get something like the following,
 [  125.300636]  [&lt;c04086e1&gt;] schedule_timeout+0x54/0xa5
 [  125.305931]  [&lt;c040866e&gt;] io_schedule_timeout+0x29/0x33
 [  125.311495]  [&lt;c02880c4&gt;] blk_congestion_wait+0x70/0x85
 [  125.317058]  [&lt;c014136b&gt;] throttle_vm_writeout+0x69/0x7d
 [  125.322720]  [&lt;c014714d&gt;] shrink_zone+0xe0/0xfa
 [  125.327560]  [&lt;c01471d4&gt;] shrink_caches+0x6d/0x6f
 [  125.332581]  [&lt;c01472a6&gt;] try_to_free_pages+0xd0/0x1b5
 [  125.338056]  [&lt;c013fa4b&gt;] __alloc_pages+0x135/0x2e8
 [  125.343258]  [&lt;c03b74ad&gt;] tcp_sendmsg+0xaa0/0xb78
 [  125.348281]  [&lt;c03d4666&gt;] inet_sendmsg+0x48/0x53
 [  125.353212]  [&lt;c0388716&gt;] sock_sendmsg+0xb8/0xd3
 [  125.358147]  [&lt;c0388773&gt;] kernel_sendmsg+0x42/0x4f
 [  125.363259]  [&lt;c038bc00&gt;] sock_no_sendpage+0x5e/0x77
 [  125.368556]  [&lt;c03ee7af&gt;] xs_tcp_send_request+0x2af/0x375
 then the socket is blocked until memory is reclaimed, and no
 progress can ever be made.

 Try to access the emergency pools by using GFP_ATOMIC.

 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 If we get something like the following,
 [  125.300636]  [&lt;c04086e1&gt;] schedule_timeout+0x54/0xa5
 [  125.305931]  [&lt;c040866e&gt;] io_schedule_timeout+0x29/0x33
 [  125.311495]  [&lt;c02880c4&gt;] blk_congestion_wait+0x70/0x85
 [  125.317058]  [&lt;c014136b&gt;] throttle_vm_writeout+0x69/0x7d
 [  125.322720]  [&lt;c014714d&gt;] shrink_zone+0xe0/0xfa
 [  125.327560]  [&lt;c01471d4&gt;] shrink_caches+0x6d/0x6f
 [  125.332581]  [&lt;c01472a6&gt;] try_to_free_pages+0xd0/0x1b5
 [  125.338056]  [&lt;c013fa4b&gt;] __alloc_pages+0x135/0x2e8
 [  125.343258]  [&lt;c03b74ad&gt;] tcp_sendmsg+0xaa0/0xb78
 [  125.348281]  [&lt;c03d4666&gt;] inet_sendmsg+0x48/0x53
 [  125.353212]  [&lt;c0388716&gt;] sock_sendmsg+0xb8/0xd3
 [  125.358147]  [&lt;c0388773&gt;] kernel_sendmsg+0x42/0x4f
 [  125.363259]  [&lt;c038bc00&gt;] sock_no_sendpage+0x5e/0x77
 [  125.368556]  [&lt;c03ee7af&gt;] xs_tcp_send_request+0x2af/0x375
 then the socket is blocked until memory is reclaimed, and no
 progress can ever be made.

 Try to access the emergency pools by using GFP_ATOMIC.

 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>SUNRPC: allow sunrpc.o to link when CONFIG_SYSCTL is disabled</title>
<updated>2005-11-04T20:39:45+00:00</updated>
<author>
<name>Chuck Lever</name>
<email>cel@netapp.com</email>
</author>
<published>2005-11-01T17:24:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c556b754967afd0878d65de2cfe0675577b0f62f'/>
<id>c556b754967afd0878d65de2cfe0675577b0f62f</id>
<content type='text'>
 The sunrpc module should build properly even when CONFIG_SYSCTL is
 disabled.

 Reported by Jan-Benedict Glaw.

 Test plan:
 Compile kernel with CONFIG_NFS as a module and built-in, and CONFIG_SYSCTL
 enabled and disabled.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 The sunrpc module should build properly even when CONFIG_SYSCTL is
 disabled.

 Reported by Jan-Benedict Glaw.

 Test plan:
 Compile kernel with CONFIG_NFS as a module and built-in, and CONFIG_SYSCTL
 enabled and disabled.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[PATCH] RPC: rationalize set_buffer_size</title>
<updated>2005-09-23T16:38:55+00:00</updated>
<author>
<name>Chuck Lever</name>
<email>cel@netapp.com</email>
</author>
<published>2005-08-25T23:25:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=470056c288334eb0b37be26c9ff8aee37ed1cc7a'/>
<id>470056c288334eb0b37be26c9ff8aee37ed1cc7a</id>
<content type='text'>
 In fact, -&gt;set_buffer_size should be completely functionless for non-UDP.

 Test-plan:
 Check socket buffer size on UDP sockets over time.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 In fact, -&gt;set_buffer_size should be completely functionless for non-UDP.

 Test-plan:
 Check socket buffer size on UDP sockets over time.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[PATCH] RPC: parametrize various transport connect timeouts</title>
<updated>2005-09-23T16:38:53+00:00</updated>
<author>
<name>Chuck Lever</name>
<email>cel@netapp.com</email>
</author>
<published>2005-08-25T23:25:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=03bf4b707eee06706c9db343dd5c905b7ee47ed2'/>
<id>03bf4b707eee06706c9db343dd5c905b7ee47ed2</id>
<content type='text'>
 Each transport implementation can now set unique bind, connect,
 reestablishment, and idle timeout values.  These are variables,
 allowing the values to be modified dynamically.  This permits
 exponential backoff of any of these values, for instance.

 As an example, we implement exponential backoff for the connection
 reestablishment timeout.

 Test-plan:
 Destructive testing (unplugging the network temporarily).  Connectathon
 with UDP and TCP.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 Each transport implementation can now set unique bind, connect,
 reestablishment, and idle timeout values.  These are variables,
 allowing the values to be modified dynamically.  This permits
 exponential backoff of any of these values, for instance.

 As an example, we implement exponential backoff for the connection
 reestablishment timeout.

 Test-plan:
 Destructive testing (unplugging the network temporarily).  Connectathon
 with UDP and TCP.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[PATCH] RPC: make sure to get the same local port number when reconnecting</title>
<updated>2005-09-23T16:38:52+00:00</updated>
<author>
<name>Chuck Lever</name>
<email>cel@netapp.com</email>
</author>
<published>2005-08-25T23:25:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3167e12c0c424f3c323944701615343022d86418'/>
<id>3167e12c0c424f3c323944701615343022d86418</id>
<content type='text'>
 Implement a best practice: if the remote end drops our connection, try to
 reconnect using the same port number.  This is important because the NFS
 server's Duplicate Reply Cache often hashes on the source port number.
 If the client reuses the port number when it reconnects, the server's DRC
 will be more effective.

 Based on suggestions by Mike Eisler, Olaf Kirch, and Alexey Kuznetsky.

 Test-plan:
 Destructive testing.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 Implement a best practice: if the remote end drops our connection, try to
 reconnect using the same port number.  This is important because the NFS
 server's Duplicate Reply Cache often hashes on the source port number.
 If the client reuses the port number when it reconnects, the server's DRC
 will be more effective.

 Based on suggestions by Mike Eisler, Olaf Kirch, and Alexey Kuznetsky.

 Test-plan:
 Destructive testing.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[PATCH] RPC: allow RPC client's port range to be adjustable</title>
<updated>2005-09-23T16:38:50+00:00</updated>
<author>
<name>Chuck Lever</name>
<email>cel@netapp.com</email>
</author>
<published>2005-08-25T23:25:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=529b33c6db0120126b1381faa51406dc463acdc9'/>
<id>529b33c6db0120126b1381faa51406dc463acdc9</id>
<content type='text'>
 Select an RPC client source port between 650 and 1023 instead of between
 1 and 800.  The old range conflicts with a number of network services.
 Provide sysctls to allow admins to select a different port range.

 Note that this doesn't affect user-level RPC library behavior, which
 still uses 1 to 800.

 Based on a suggestion by Olaf Kirch &lt;okir@suse.de&gt;.

 Test-plan:
 Repeated mount and unmount.  Destructive testing.  Idle timeouts.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 Select an RPC client source port between 650 and 1023 instead of between
 1 and 800.  The old range conflicts with a number of network services.
 Provide sysctls to allow admins to select a different port range.

 Note that this doesn't affect user-level RPC library behavior, which
 still uses 1 to 800.

 Based on a suggestion by Olaf Kirch &lt;okir@suse.de&gt;.

 Test-plan:
 Repeated mount and unmount.  Destructive testing.  Idle timeouts.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[PATCH] RPC: clean up after nocong was removed</title>
<updated>2005-09-23T16:38:48+00:00</updated>
<author>
<name>Chuck Lever</name>
<email>cel@netapp.com</email>
</author>
<published>2005-08-25T23:25:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=555ee3af161b037865793bd4bebc06b58daafde6'/>
<id>555ee3af161b037865793bd4bebc06b58daafde6</id>
<content type='text'>
 Clean-up:  Move some macros that are specific to the Van Jacobson
 implementation into xprt.c.  Get rid of the cong_wait field in
 rpc_xprt, which is no longer used.  Get rid of xprt_clear_backlog.

 Test-plan:
 Compile with CONFIG_NFS enabled.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 Clean-up:  Move some macros that are specific to the Van Jacobson
 implementation into xprt.c.  Get rid of the cong_wait field in
 rpc_xprt, which is no longer used.  Get rid of xprt_clear_backlog.

 Test-plan:
 Compile with CONFIG_NFS enabled.

 Signed-off-by: Chuck Lever &lt;cel@netapp.com&gt;
 Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
