Re: Question on nfs40_discover_server_trunking.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Jan 18, 2013, at 4:28 PM, Ben Greear <greearb@xxxxxxxxxxxxxxx> wrote:

> Any chance the STALE_CLIENTID case needs a 'break'?

I don't think so.  LEASE_CONFIRM is set, and we want to wake the state renewal thread.

> 
> Twice I've seen kernel crashes after the nfs40_walk_client_list
> failed (though code comments say it should never fail).

nfs40_walk_client_list() is looking for an nfs_client that is supposed to already be in the nfs_client list.  If the search fails, that's a bug.

Eyeball the contents of your nfs_client list.  You should find an appropriate nfs_client in there, and then figure out why the search doesn't find it.


> int nfs40_discover_server_trunking(struct nfs_client *clp,
> 				   struct nfs_client **result,
> 				   struct rpc_cred *cred)
> {
> 	struct nfs4_setclientid_res clid = {
> 		.clientid = clp->cl_clientid,
> 		.confirm = clp->cl_confirm,
> 	};
> 	struct nfs_net *nn = net_generic(clp->cl_net, nfs_net_id);
> 	unsigned short port;
> 	int status;
> 
> 	port = nn->nfs_callback_tcpport;
> 	if (clp->cl_addr.ss_family == AF_INET6)
> 		port = nn->nfs_callback_tcpport6;
> 
> 	status = nfs4_proc_setclientid(clp, NFS4_CALLBACK, port, cred, &clid);
> 	if (status != 0)
> 		goto out;
> 	clp->cl_clientid = clid.clientid;
> 	clp->cl_confirm = clid.confirm;
> 
> 	status = nfs40_walk_client_list(clp, result, cred);
> 	switch (status) {
> 	case -NFS4ERR_STALE_CLIENTID:
> 		set_bit(NFS4CLNT_LEASE_CONFIRM, &clp->cl_state);
> 	case 0:
> 		/* Sustain the lease, even if it's empty.  If the clientid4
> 		 * goes stale it's of no use for trunking discovery. */
> 		nfs4_schedule_state_renewal(*result);
> 		break;
> 	}
> 
> out:
> 	return status;
> }
> 
> -- 
> Ben Greear <greearb@xxxxxxxxxxxxxxx>
> Candela Technologies Inc  http://www.candelatech.com
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Chuck Lever
chuck[dot]lever[at]oracle[dot]com




--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux