<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/include/linux/nfsd/state.h, branch linux-2.6.32.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.32.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.32.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2009-09-16T00:49:56Z</updated>
<entry>
<title>nfsd41: Backchannel: Setup sequence information</title>
<updated>2009-09-16T00:49:56Z</updated>
<author>
<name>Ricardo Labiaga</name>
</author>
<published>2009-09-10T09:26:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2a1d1b593803d7c18a369bf148f3b48c5a3260fc'/>
<id>urn:sha1:2a1d1b593803d7c18a369bf148f3b48c5a3260fc</id>
<content type='text'>
Follows the model used by the NFS client.  Setup the RPC prepare and done
function pointers so that we can populate the sequence information if
minorversion == 1.  rpc_run_task() is then invoked directly just like
existing NFS client operations do.

nfsd4_cb_prepare() determines if the sequence information needs to be setup.
If the slot is in use, it adds itself to the wait queue.

nfsd4_cb_done() wakes anyone sleeping on the callback channel wait queue
after our RPC reply has been received.  It also sets the task message
result pointer to NULL to clearly indicate we're done using it.

Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
[define and initialize cl_cb_seq_nr here]
[pulled out unused defintion of nfsd4_cb_done]
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
<entry>
<title>nfsd41: Backchannel: Server backchannel RPC wait queue</title>
<updated>2009-09-16T00:49:55Z</updated>
<author>
<name>Ricardo Labiaga</name>
</author>
<published>2009-09-10T09:26:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=199ff35e1c8724871e157c2e48556c2794946e82'/>
<id>urn:sha1:199ff35e1c8724871e157c2e48556c2794946e82</id>
<content type='text'>
RPC callback requests will wait on this wait queue if the backchannel
is out of slots.

Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
<entry>
<title>nfsd41: Backchannel: Add sequence arguments to callback RPC arguments</title>
<updated>2009-09-16T00:49:55Z</updated>
<author>
<name>Ricardo Labiaga</name>
</author>
<published>2009-09-10T09:26:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=132f97715c098393fb8de3c26b07b9fdbd2334f1'/>
<id>urn:sha1:132f97715c098393fb8de3c26b07b9fdbd2334f1</id>
<content type='text'>
Follow the model we use in the client. Make the sequence arguments
part of the regular RPC arguments.  None of the callbacks that are
soon to be implemented expect results that need to be passed back
to the caller, so we don't define a separate RPC results structure.
For session validation, the cb_sequence decoding will use a pointer
to the sequence arguments that are part of the RPC argument.

Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
[define struct nfsd4_cb_sequence here]
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
<entry>
<title>nfsd41: Backchannel: callback infrastructure</title>
<updated>2009-09-16T00:49:55Z</updated>
<author>
<name>Andy Adamson</name>
</author>
<published>2009-09-10T09:25:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=38524ab38f2752beee262a97403d871665838172'/>
<id>urn:sha1:38524ab38f2752beee262a97403d871665838172</id>
<content type='text'>
Keep the xprt used for create_session in cl_cb_xprt.
Mark cl_callback.cb_minorversion = 1 and remember
the client provided cl_callback.cb_prog rpc program number.
Use it to probe the callback path.

Use the client's network address to initialize as the
callback's address as expected by the xprt creation
routines.

Define xdr sizes and code nfs4_cb_compound header to be able
to send a null callback rpc.

Signed-off-by: Andy Adamson&lt;andros@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
Signed-off-by: Ricardo Labiaga &lt;Ricardo.Labiaga@netapp.com&gt;
[get callback minorversion from fore channel's]
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[nfsd41: change bc_sock to bc_xprt]
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[pulled definition for cl_cb_xprt]
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[nfsd41: set up backchannel's cb_addr]
[moved rpc_create_args init to "nfsd: modify nfsd4.1 backchannel to use new xprt class"]
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
<entry>
<title>nfsd4: use common rpc_cred for all callbacks</title>
<updated>2009-09-16T00:49:34Z</updated>
<author>
<name>J. Bruce Fields</name>
</author>
<published>2009-09-15T22:07:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=80fc015bdfe1f5b870c1e1ee02d78e709523fee7'/>
<id>urn:sha1:80fc015bdfe1f5b870c1e1ee02d78e709523fee7</id>
<content type='text'>
Callbacks are always made using the machine's identity, so we can use a
single auth_generic credential shared among callbacks to all clients and
let the rpc code take care of the rest.

Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
<entry>
<title>nfsd41: replace page based DRC with buffer based DRC</title>
<updated>2009-09-02T02:24:06Z</updated>
<author>
<name>Andy Adamson</name>
</author>
<published>2009-08-28T12:45:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=557ce2646e775f6bda734dd92b10d4780874b9c7'/>
<id>urn:sha1:557ce2646e775f6bda734dd92b10d4780874b9c7</id>
<content type='text'>
Use NFSD_SLOT_CACHE_SIZE size buffers for sessions DRC instead of holding nfsd
pages in cache.

Connectathon testing has shown that 1024 bytes for encoded compound operation
responses past the sequence operation is sufficient, 512 bytes is a little too
small. Set NFSD_SLOT_CACHE_SIZE to 1024.

Allocate memory for the session DRC in the CREATE_SESSION operation
to guarantee that the memory resource is available for caching responses.
Allocate each slot individually in preparation for slot table size negotiation.

Remove struct nfsd4_cache_entry and helper functions for the old page-based
DRC.

The iov_len calculation in nfs4svc_encode_compoundres is now always
correct.  Replay is now done in nfsd4_sequence under the state lock, so
the session ref count is only bumped on non-replay. Clean up the
nfs4svc_encode_compoundres session logic.

The nfsd4_compound_state statp pointer is also not used.
Remove nfsd4_set_statp().

Move useful nfsd4_cache_entry fields into nfsd4_slot.

Signed-off-by: Andy Adamson &lt;andros@netapp.com
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
<entry>
<title>nfsd41: bound forechannel drc size by memory usage</title>
<updated>2009-09-02T02:24:05Z</updated>
<author>
<name>Andy Adamson</name>
</author>
<published>2009-08-28T12:45:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a649637c73a36174287a403cdda7607177d64523'/>
<id>urn:sha1:a649637c73a36174287a403cdda7607177d64523</id>
<content type='text'>
By using the requested ca_maxresponsesize_cached * ca_maxresponses to bound
a forechannel drc request size, clients can tailor a session to usage.

For example, an I/O session (READ/WRITE only) can have a much smaller
ca_maxresponsesize_cached (for only WRITE compound responses) and a lot larger
ca_maxresponses to service a large in-flight data window.

Signed-off-by: Andy Adamson &lt;andros@netapp.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
<entry>
<title>nfsd: convert nfs4_cb_conn struct to hold address in sockaddr_storage</title>
<updated>2009-08-21T15:27:43Z</updated>
<author>
<name>Jeff Layton</name>
</author>
<published>2009-08-14T16:57:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=aa9a4ec7707a5391cde556f3fa1b0eb4bca3bcf6'/>
<id>urn:sha1:aa9a4ec7707a5391cde556f3fa1b0eb4bca3bcf6</id>
<content type='text'>
...rather than as a separate address and port fields. This will be
necessary for implementing callbacks over IPv6. Also, convert
gen_callback to use the standard rpcuaddr2sockaddr routine rather than
its own private one.

Signed-off-by: Jeff Layton &lt;jlayton@redhat.com&gt;
Acked-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
<entry>
<title>nfsd: make nfs4_client-&gt;cl_addr a struct sockaddr_storage</title>
<updated>2009-08-21T15:27:43Z</updated>
<author>
<name>Jeff Layton</name>
</author>
<published>2009-08-14T16:57:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=363168b4ea8ec26aeb982ac6024a09f907ecd27e'/>
<id>urn:sha1:363168b4ea8ec26aeb982ac6024a09f907ecd27e</id>
<content type='text'>
It's currently a __be32, which isn't big enough to hold an IPv6 address.

Signed-off-by: Jeff Layton &lt;jlayton@redhat.com&gt;
Acked-by: Chuck Lever &lt;chuck.lever@oracle.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
<entry>
<title>nfsd41: Use separate DRC for setclientid</title>
<updated>2009-07-28T18:30:29Z</updated>
<author>
<name>Andy Adamson</name>
</author>
<published>2009-07-23T23:02:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=49557cc74c7bdf6a984be227ead9a84b3a26f053'/>
<id>urn:sha1:49557cc74c7bdf6a984be227ead9a84b3a26f053</id>
<content type='text'>
Instead of trying to share the generic 4.1 reply cache code for the
CREATE_SESSION reply cache, it's simpler to handle CREATE_SESSION
separately.

The nfs41 single slot clientid DRC holds the results of create session
processing.  CREATE_SESSION can be preceeded by a SEQUENCE operation
(an embedded CREATE_SESSION) and the create session single slot cache must be
maintained.  nfsd4_replay_cache_entry() and nfsd4_store_cache_entry() do not
implement the replay of an embedded CREATE_SESSION.

The clientid DRC slot does not need the inuse, cachethis or other fields that
the multiple slot session cache uses.  Replace the clientid DRC cache struct
nfs4_slot cache with a new nfsd4_clid_slot cache.  Save the xdr struct
nfsd4_create_session into the cache at the end of processing, and on a replay,
replace the struct for the replay request with the cached version all while
under the state lock.

nfsd4_proc_compound will handle both the solo and embedded CREATE_SESSION case
via the normal use of encode_operation.

Errors that do not change the create session cache:
A create session NFS4ERR_STALE_CLIENTID error means that a client record
(and associated create session slot) could not be found and therefore can't
be changed.  NFSERR_SEQ_MISORDERED errors do not change the slot cache.

All other errors get cached.

Remove the clientid DRC specific check in nfs4svc_encode_compoundres to
put the session only if cstate.session is set which will now always be true.

Signed-off-by: Andy Adamson &lt;andros@netapp.com&gt;
Signed-off-by: J. Bruce Fields &lt;bfields@citi.umich.edu&gt;
</content>
</entry>
</feed>
