<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/nfs/callback.c, branch v2.6.35</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>SUNRPC: Bury "#ifdef IPV6" in svc_create_xprt()</title>
<updated>2010-01-26T22:56:43+00:00</updated>
<author>
<name>Chuck Lever</name>
<email>chuck.lever@oracle.com</email>
</author>
<published>2010-01-26T19:04:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d6783b2b6c4050df0ba0a84c6842cf5bc2212ef9'/>
<id>d6783b2b6c4050df0ba0a84c6842cf5bc2212ef9</id>
<content type='text'>
Clean up:  Bruce observed we have more or less common logic in each of
svc_create_xprt()'s callers:  the check to create an IPv6 RPC listener
socket only if CONFIG_IPV6 is set.  I'm about to add another case
that does just the same.

If we move the ifdefs into __svc_xpo_create(), then svc_create_xprt()
call sites can get rid of the "#ifdef" ugliness, and can use the same
logic with or without IPv6 support available in the kernel.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Clean up:  Bruce observed we have more or less common logic in each of
svc_create_xprt()'s callers:  the check to create an IPv6 RPC listener
socket only if CONFIG_IPV6 is set.  I'm about to add another case
that does just the same.

If we move the ifdefs into __svc_xpo_create(), then svc_create_xprt()
call sites can get rid of the "#ifdef" ugliness, and can use the same
logic with or without IPv6 support available in the kernel.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nfs41: add support for callback with RPC version number 4</title>
<updated>2009-12-05T18:19:01+00:00</updated>
<author>
<name>Alexandros Batsakis</name>
<email>batsakis@netapp.com</email>
</author>
<published>2009-12-05T18:19:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=07bccc2dd4e8745859f0fa7d120ea39320fbcdbf'/>
<id>07bccc2dd4e8745859f0fa7d120ea39320fbcdbf</id>
<content type='text'>
The NFSv4.1 spec-29 (18.36.3) says that the server MUST use an ONC RPC
(program) version number equal to 4 in callbacks sent to the client.
For now we allow both versions 1 and 4.

Signed-off-by: Alexandros Batsakis &lt;batsakis@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 NFSv4.1 spec-29 (18.36.3) says that the server MUST use an ONC RPC
(program) version number equal to 4 in callbacks sent to the client.
For now we allow both versions 1 and 4.

Signed-off-by: Alexandros Batsakis &lt;batsakis@netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>The rpc server does not require that service threads take the BKL.</title>
<updated>2009-12-03T20:58:33+00:00</updated>
<author>
<name>J. Bruce Fields</name>
<email>bfields@citi.umich.edu</email>
</author>
<published>2009-12-03T20:58:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d4e935bd67ca05db4119b67801d9ece6ae139f05'/>
<id>d4e935bd67ca05db4119b67801d9ece6ae139f05</id>
<content type='text'>
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&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>
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>NFSv4: Clean up the nfs.callback_tcpport option</title>
<updated>2009-08-09T19:06:19+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2009-08-09T19:06:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c140aa91357c415c91269884518fa1d6fdebc20d'/>
<id>c140aa91357c415c91269884518fa1d6fdebc20d</id>
<content type='text'>
Tighten up the validity checking in param_set_port: check for NULL pointers.
Ensure that the option shows up on 'modinfo' output.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Tighten up the validity checking in param_set_port: check for NULL pointers.
Ensure that the option shows up on 'modinfo' output.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'devel-for-2.6.31' into for-2.6.31</title>
<updated>2009-06-19T01:13:44+00:00</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2009-06-18T01:13:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1f84603c0940d5bed17f7e4d2e0b2a4b8b8f1b81'/>
<id>1f84603c0940d5bed17f7e4d2e0b2a4b8b8f1b81</id>
<content type='text'>
Conflicts:
	fs/nfs/client.c
	fs/nfs/super.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	fs/nfs/client.c
	fs/nfs/super.c
</pre>
</div>
</content>
</entry>
<entry>
<title>NFS: Fix false error return from nfs_callback_up() if ipv6.ko is not available</title>
<updated>2009-06-18T01:02:10+00:00</updated>
<author>
<name>Chuck Lever</name>
<email>chuck.lever@oracle.com</email>
</author>
<published>2009-06-18T01:02:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=18fc31641925867c871bc75270ce642c039188d3'/>
<id>18fc31641925867c871bc75270ce642c039188d3</id>
<content type='text'>
Clear "ret" if the error return from svc_create_xprt(AF_INET6) was
-EAFNOSUPORT.  Otherwise, callback start-up will succeed, but
nfs_callback_up() will return -EAFNOSUPPORT anyway, and the first
NFSv4 mount attempt after a reboot will fail.

Bug introduced by commit f738f517 in 2.6.30-rc1.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.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>
Clear "ret" if the error return from svc_create_xprt(AF_INET6) was
-EAFNOSUPORT.  Otherwise, callback start-up will succeed, but
nfs_callback_up() will return -EAFNOSUPPORT anyway, and the first
NFSv4 mount attempt after a reboot will fail.

Bug introduced by commit f738f517 in 2.6.30-rc1.

Signed-off-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nfs41: Allow NFSv4 and NFSv4.1 callback services to coexist</title>
<updated>2009-06-17T21:11:32+00:00</updated>
<author>
<name>Andy Adamson</name>
<email>andros@netapp.com</email>
</author>
<published>2009-04-01T13:23:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e82dc22dac6525a2f365a1d53c0483252d4aa38e'/>
<id>e82dc22dac6525a2f365a1d53c0483252d4aa38e</id>
<content type='text'>
Tracks the nfs_callback_info for both versions, enabling the callback
service for v4 and v4.1 to run concurrently and be stopped independently
of each other.

Signed-off-by: Ricardo Labiaga &lt;ricardo.labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Tracks the nfs_callback_info for both versions, enabling the callback
service for v4 and v4.1 to run concurrently and be stopped independently
of each other.

Signed-off-by: Ricardo Labiaga &lt;ricardo.labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nfs41: create a svc_xprt for nfs41 callback thread and use for incoming callbacks</title>
<updated>2009-06-17T21:11:31+00:00</updated>
<author>
<name>Benny Halevy</name>
<email>bhalevy@panasas.com</email>
</author>
<published>2009-04-01T13:23:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8f975242352e92898dc641ebff0d24808f39848a'/>
<id>8f975242352e92898dc641ebff0d24808f39848a</id>
<content type='text'>
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nfs41: Implement NFSv4.1 callback service process.</title>
<updated>2009-06-17T21:11:29+00:00</updated>
<author>
<name>Ricardo Labiaga</name>
<email>Ricardo.Labiaga@netapp.com</email>
</author>
<published>2009-04-01T13:23:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a43cde94feded0f65fce36330614691c650ae8fe'/>
<id>a43cde94feded0f65fce36330614691c650ae8fe</id>
<content type='text'>
nfs41_callback_up() initializes the necessary queues and creates the new
nfs41_callback_svc thread.  This thread executes the callback service which
waits for requests to arrive on the svc_serv-&gt;sv_cb_list.

NFS41_BC_MIN_CALLBACKS is set to 1 because we expect callbacks to not
cause substantial latency.

The actual processing of the callback will be implemented as a separate patch.

There is only one NFSv4.1 callback service.  The first caller of
nfs4_callback_up() creates the service, subsequent callers increment a
reference count on the service.  The service is destroyed when the last
caller invokes nfs_callback_down().

The transport needs to hold a reference to the callback service in order
to invoke it during callback processing.  Currently this reference is only
obtained when the service is first created.  This is incorrect, since
subsequent registrations for other transports will leave the xprt-&gt;serv
pointer uninitialized, leading to an oops when a callback arrives on
the "unreferenced" transport.

This patch fixes the problem by ensuring that a reference to the service
is saved in xprt-&gt;serv, either because the service is created by this
invocation to nfs4_callback_up() or by a prior invocation.

Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[nfs41: Add a reference to svc_serv during callback service bring up]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[Type check arguments of nfs_callback_up]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[nfs41: save svc_serv in nfs_callback_info]
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[Removal of ugly #ifdefs]
[nfs41: Update to removal of ugly #ifdefs]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
nfs41_callback_up() initializes the necessary queues and creates the new
nfs41_callback_svc thread.  This thread executes the callback service which
waits for requests to arrive on the svc_serv-&gt;sv_cb_list.

NFS41_BC_MIN_CALLBACKS is set to 1 because we expect callbacks to not
cause substantial latency.

The actual processing of the callback will be implemented as a separate patch.

There is only one NFSv4.1 callback service.  The first caller of
nfs4_callback_up() creates the service, subsequent callers increment a
reference count on the service.  The service is destroyed when the last
caller invokes nfs_callback_down().

The transport needs to hold a reference to the callback service in order
to invoke it during callback processing.  Currently this reference is only
obtained when the service is first created.  This is incorrect, since
subsequent registrations for other transports will leave the xprt-&gt;serv
pointer uninitialized, leading to an oops when a callback arrives on
the "unreferenced" transport.

This patch fixes the problem by ensuring that a reference to the service
is saved in xprt-&gt;serv, either because the service is created by this
invocation to nfs4_callback_up() or by a prior invocation.

Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[nfs41: Add a reference to svc_serv during callback service bring up]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[Type check arguments of nfs_callback_up]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[nfs41: save svc_serv in nfs_callback_info]
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[Removal of ugly #ifdefs]
[nfs41: Update to removal of ugly #ifdefs]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>nfs41: minorversion support for nfs4_{init,destroy}_callback</title>
<updated>2009-06-17T20:06:01+00:00</updated>
<author>
<name>Benny Halevy</name>
<email>bhalevy@panasas.com</email>
</author>
<published>2009-04-01T13:22:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=7146851376861fe55c7a48ac8fc1354a5fff6cd0'/>
<id>7146851376861fe55c7a48ac8fc1354a5fff6cd0</id>
<content type='text'>
move nfs4_init_callback into nfs4_init_client_minor_version
and nfs4_destroy_callback into nfs4_clear_client_minor_version

as these need to happen also when auto-negotiating the minorversion
once the callback service for nfs41 becomes different than for nfs4.0

Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[nfs41: Fix checkpatch warning]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[Type check arguments of nfs_callback_up]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[nfs41: Backchannel: Remove FIXME comment]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
move nfs4_init_callback into nfs4_init_client_minor_version
and nfs4_destroy_callback into nfs4_clear_client_minor_version

as these need to happen also when auto-negotiating the minorversion
once the callback service for nfs41 becomes different than for nfs4.0

Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[nfs41: Fix checkpatch warning]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[Type check arguments of nfs_callback_up]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[nfs41: Backchannel: Remove FIXME comment]
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
