<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/fs/nfs/callback.h, branch v3.4.78</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.4.78</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.4.78'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2012-02-15T05:19:43Z</updated>
<entry>
<title>NFSv4.1: Convert slotid from u8 to u32</title>
<updated>2012-02-15T05:19:43Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2012-02-07T00:38:51Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=45d43c291e9a922d7b432b0dbcb1d8fb70d8410f'/>
<id>urn:sha1:45d43c291e9a922d7b432b0dbcb1d8fb70d8410f</id>
<content type='text'>
It is perfectly legal to negotiate up to 2^32-1 slots in the protocol,
and with 10GigE, we are already seeing that 255 slots is far too limiting.

Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: search for client session id in proper network namespace</title>
<updated>2012-02-06T23:48:04Z</updated>
<author>
<name>Stanislav Kinsbursky</name>
<email>skinsbursky@parallels.com</email>
</author>
<published>2012-01-26T11:11:49Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=c7add9a9720ff5be4715f7a0bb0d9578b2e8534e'/>
<id>urn:sha1:c7add9a9720ff5be4715f7a0bb0d9578b2e8534e</id>
<content type='text'>
Network namespace is taken from request transport and passed as a part of
cb_process_state structure.

Signed-off-by: Stanislav Kinsbursky &lt;skinsbursky@parallels.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS: add an endian notation</title>
<updated>2012-01-12T21:29:51Z</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2012-01-12T07:06:05Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=0e0243dc35a2349b3946e54f90e874be396fdb8b'/>
<id>urn:sha1:0e0243dc35a2349b3946e54f90e874be396fdb8b</id>
<content type='text'>
This function returns a big endian value.  The implementation in
fs/nfs/callback_proc.c is declared with "__be32" but the .h file uses
"unsigned" instead.  It makes sparse complain:

fs/nfs/callback_proc.c:232:8: error:
	symbol 'nfs4_callback_layoutrecall' redeclared with different
	type (originally declared at fs/nfs/callback.h:165) - different
	base types

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFSv4.1: Fix the callback 'highest_used_slotid' behaviour</title>
<updated>2011-08-04T15:55:35Z</updated>
<author>
<name>Trond Myklebust</name>
<email>Trond.Myklebust@netapp.com</email>
</author>
<published>2011-08-02T18:46:29Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=55a673990ec04cf63005318bcf08c2b0046e5778'/>
<id>urn:sha1:55a673990ec04cf63005318bcf08c2b0046e5778</id>
<content type='text'>
Currently, there is no guarantee that we will call nfs4_cb_take_slot() even
though nfs4_callback_compound() will consistently call
nfs4_cb_free_slot() provided the cb_process_state has set the 'clp' field.
The result is that we can trigger the BUG_ON() upon the next call to
nfs4_cb_take_slot().

This patch fixes the above problem by using the slot id that was taken in
the CB_SEQUENCE operation as a flag for whether or not we need to call
nfs4_cb_free_slot().
It also fixes an atomicity problem: we need to set tbl-&gt;highest_used_slotid
atomically with the check for NFS4_SESSION_DRAINING, otherwise we end up
racing with the various tests in nfs4_begin_drain_session().

Cc: stable@kernel.org [2.6.38+]
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs: CB_NOTIFY_DEVICEID</title>
<updated>2011-05-29T17:52:31Z</updated>
<author>
<name>Marc Eshel</name>
<email>eshel@almaden.ibm.com</email>
</author>
<published>2011-05-22T16:47:09Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=1be5683b03a766670b3b629bf6bfeab3ca9239d8'/>
<id>urn:sha1:1be5683b03a766670b3b629bf6bfeab3ca9239d8</id>
<content type='text'>
Note: This functionlaity is incomplete as all layout segments referring to
the 'to be removed device id' need to be reaped, and all in flight I/O drained.

[use be32 res in nfs4_callback_devicenotify]
[use nfs_client to qualify deviceid for cb_notify_deviceid]
[use global deviceid cache for CB_NOTIFY_DEVICEID]
[refactor device cache _lookup_deviceid]
[refactor device cache _find_get_deviceid]
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
[Bug in new global-device-cache code]
[layout_driver MUST set free_deviceid_node if using dev-cache]
Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
</content>
</entry>
<entry>
<title>NFS do not find client in NFSv4 pg_authenticate</title>
<updated>2011-01-25T20:26:51Z</updated>
<author>
<name>Andy Adamson</name>
<email>andros@netapp.com</email>
</author>
<published>2011-01-25T15:38:01Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=778be232a207e79088ba70d832ac25dfea6fbf1a'/>
<id>urn:sha1:778be232a207e79088ba70d832ac25dfea6fbf1a</id>
<content type='text'>
The information required to find the nfs_client cooresponding to the incoming
back channel request is contained in the NFS layer. Perform minimal checking
in the RPC layer pg_authenticate method, and push more detailed checking into
the NFS layer where the nfs_client can be found.

Signed-off-by: Andy Adamson &lt;andros@netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs: update nfs4_callback_recallany to handle layouts</title>
<updated>2011-01-06T19:46:32Z</updated>
<author>
<name>Alexandros Batsakis</name>
<email>batsakis@netapp.com</email>
</author>
<published>2011-01-06T11:36:31Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=36840370845629e6cb4324d1dd4aff6778670503'/>
<id>urn:sha1:36840370845629e6cb4324d1dd4aff6778670503</id>
<content type='text'>
While here, update the code a bit.

Signed-off-by: Alexandros Batsakis &lt;batsakis@netapp.com&gt;
Signed-off-by: Fred Isaman &lt;iisaman@netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs: CB_LAYOUTRECALL xdr code</title>
<updated>2011-01-06T19:46:32Z</updated>
<author>
<name>Fred Isaman</name>
<email>iisaman@netapp.com</email>
</author>
<published>2011-01-06T11:36:29Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=f2a625616045fe46e1d5fceebdd825f5acdecdb7'/>
<id>urn:sha1:f2a625616045fe46e1d5fceebdd825f5acdecdb7</id>
<content type='text'>
This is the xdr decoding for CB_LAYOUTRECALL.

Signed-off-by: Alexandros Batsakis &lt;batsakis@netapp.com&gt;
Signed-off-by: Dean Hildebrand &lt;dhildeb@us.ibm.com&gt;
Signed-off-by: Marc Eshel &lt;eshel@almaden.ibm.com&gt;
Signed-off-by: Andy Adamson &lt;andros@netapp.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@panasas.com&gt;
Signed-off-by: Fred Isaman &lt;iisaman@netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS add session back channel draining</title>
<updated>2011-01-06T19:46:25Z</updated>
<author>
<name>Andy Adamson</name>
<email>andros@netapp.com</email>
</author>
<published>2011-01-06T02:04:34Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=42acd021824578fa0eeb6eb58d457c23ec5dc9c0'/>
<id>urn:sha1:42acd021824578fa0eeb6eb58d457c23ec5dc9c0</id>
<content type='text'>
Currently session draining only drains the fore channel.
The back channel processing must also be drained.

Use the back channel highest_slot_used to indicate that a callback is being
processed by the callback thread.  Move the session complete to be per channel.

When the session is draininig, wait for any current back channel processing
to complete and stop all new back channel processing by returning NFS4ERR_DELAY
to the back channel client.

Drain the back channel, then the fore channel.

Signed-off-by: Andy Adamson &lt;andros@netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>NFS refactor nfs_find_client and reference client across callback processing</title>
<updated>2011-01-06T19:46:24Z</updated>
<author>
<name>Andy Adamson</name>
<email>andros@netapp.com</email>
</author>
<published>2011-01-06T02:04:32Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=c36fca52f5e4594ffd0ff175b328966b0d393184'/>
<id>urn:sha1:c36fca52f5e4594ffd0ff175b328966b0d393184</id>
<content type='text'>
Fixes a bug where the nfs_client could be freed during callback processing.
Refactor nfs_find_client to use minorversion specific means to locate the
correct nfs_client structure.

In the NFS layer, V4.0 clients are found using the callback_ident field in the
CB_COMPOUND header.  V4.1 clients are found using the sessionID in the
CB_SEQUENCE operation which is also compared against the sessionID associated
with the back channel thread after a successful CREATE_SESSION.

Each of these methods finds the one an only nfs_client associated
with the incoming callback request - so nfs_find_client_next is not needed.

In the RPC layer, the pg_authenticate call needs to find the nfs_client. For
the v4.0 callback service, the callback identifier has not been decoded so a
search by address, version, and minorversion is used.  The sessionid for the
sessions based callback service has (usually) not been set for the
pg_authenticate on a CB_NULL call which can be sent prior to the return
of a CREATE_SESSION call, so the sessionid associated with the back channel
thread is not used to find the client in pg_authenticate for CB_NULL calls.

Pass the referenced nfs_client to each CB_COMPOUND operation being proceesed
via the new cb_process_state structure. The reference is held across
cb_compound processing.

Use the new cb_process_state struct to move the NFS4ERR_RETRY_UNCACHED_REP
processing from process_op into nfs4_callback_sequence where it belongs.

Signed-off-by: Andy Adamson &lt;andros@netapp.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
</feed>
