Newer
Older
case -NFS4ERR_LEASE_MOVED:
ops = &nfs4_reboot_recovery_ops;
}
/* We're going to have to re-establish a clientid */
nfs4_state_mark_reclaim(clp);
status = nfs4_reclaim_lease(clp);
if (status) {
if (status == -EAGAIN)
continue;
goto out_error;
}
/* Mark all delegations for reclaim */
nfs_delegation_mark_reclaim(clp);
/* Note: list is protected by exclusive lock on cl->cl_sem */
status = nfs4_do_reclaim(clp, ops);
if (status < 0) {
if (status == -NFS4ERR_NO_GRACE) {
ops = &nfs4_network_partition_recovery_ops;
status = nfs4_do_reclaim(clp, ops);
nfs_delegation_reap_unclaimed(clp);
break;
}
out:
up_write(&clp->cl_sem);
if (status == -NFS4ERR_CB_PATH_DOWN)
nfs_handle_cb_pathdown(clp);
module_put_and_exit(0);
printk(KERN_WARNING "Error: state recovery failed on NFSv4 server %s"
" with error %d\n", clp->cl_hostname, -status);
set_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state);
goto out;
}
/*
* Local variables:
* c-basic-offset: 8
* End:
*/