Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

nfsd: handle NFS4ERR_BADSLOT on CB_SEQUENCE better

Currently it just restarts the call, without getting a new slot.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>

authored by

Jeff Layton and committed by
Chuck Lever
999595a6 bf36c149

+7
+7
fs/nfsd/nfs4callback.c
··· 1389 1389 rpc_delay(task, 2 * HZ); 1390 1390 return false; 1391 1391 case -NFS4ERR_BADSLOT: 1392 + /* 1393 + * BADSLOT means that the client and server are out of sync 1394 + * as to the backchannel parameters. Mark the backchannel faulty 1395 + * and restart the RPC, but leak the slot so no one uses it. 1396 + */ 1397 + nfsd4_mark_cb_fault(cb->cb_clp); 1398 + cb->cb_held_slot = -1; 1392 1399 goto retry_nowait; 1393 1400 case -NFS4ERR_SEQ_MISORDERED: 1394 1401 if (session->se_cb_seq_nr[cb->cb_held_slot] != 1) {