[pnfs] what error should be returned to an impatient client?

Talpey, Thomas Thomas.Talpey at netapp.com
Wed Apr 11 10:26:35 EDT 2007


Well, since the client violated the no-retransmit principle, the
server could simply close the connection. In fact on an RDMA
transport, this may happen from the hardware itself. In my opinion
this is what the server should do. But, if the server is going to
return an error, it should be NFS4ERR_SEQ_MISORDERED.

Remember, in this kind of situation, the slot and sequence are
completely invalid, and the exchange is basically outside the
session. There is no replay protection, and the client will have
to use XID matching to detect the server's reply. Basically,
it's an invalid protocol request, almost as if the client had sent
RPC garbage.

Tom.

At 10:19 AM 4/11/2007, Benny Halevy wrote:
>while reviewing the sessions text in draft-10 I realized that
>it is not clear what error the server should return if the
>client sent a new request on a slot that's still in use.
>
>In the currently linux implementation (in Andy's latest patches)
>nfsd4_sequence() just allows that
>	status = nfs_ok;
>	if (nfs41_get_slot_state(slot) != NFS4_SLOT_AVAILABLE)
>		goto out;
>...
>out:
>	dprintk("%s returns %d\n", __FUNCTION__, status);
>	nfs4_unlock_state();
>	return status;
>
>I suggest returning NFS4ERR_BADSLOT or add a new error code NFS4ERR_BUSYSLOT
>(other alternatives could be NFS4ERR_INVALID or NFS4ERR_SEQ_MISORDERED).
>
>Benny
>_______________________________________________
>pNFS mailing list
>pNFS at linux-nfs.org
>http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs



More information about the pNFS mailing list