On 14/11/11 15:33, John Hughes wrote:
Here is a ridiculously stupid patch that fixes the behaviour to be
closer to what I want.
Now, if the krb5 ticket has expired processes get a EKEYEXPIRED error
and the kernel doesn't waste its time printing "ticket expired" errors.
A slight modification of the patch is needed to avoid scads of "state
manager failed" errors, if we get EKEYEXPIRED in
nfs4_recovery_handle_error we *should* return zero, but we don't want to
call nfs4_warn_keyexpired (there is no reason to log this, it's not a
kernel problem).
Here's a cleaner version of the patch.
Does anybody care about this? Will anybody read this message?
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index 4700fae..dc28a78 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -302,7 +302,6 @@ static int nfs4_handle_exception(struct nfs_server *server, int errorcode, struc
}
case -NFS4ERR_GRACE:
case -NFS4ERR_DELAY:
- case -EKEYEXPIRED:
ret = nfs4_delay(server->client, &exception->timeout);
if (ret != 0)
break;
@@ -3732,7 +3731,6 @@ nfs4_async_handle_error(struct rpc_task *task, const struct nfs_server *server,
case -NFS4ERR_DELAY:
nfs_inc_server_stats(server, NFSIOS_DELAY);
case -NFS4ERR_GRACE:
- case -EKEYEXPIRED:
rpc_delay(task, NFS4_POLL_RETRY_MAX);
task->tk_status = 0;
return -EAGAIN;
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 39914be..2bee41e 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -1377,8 +1377,9 @@ static int nfs4_recovery_handle_error(struct nfs_client *clp, int error)
/* Zero session reset errors */
return 0;
case -EKEYEXPIRED:
- /* Nothing we can do */
- nfs4_warn_keyexpired(clp->cl_hostname);
+ /* Nothing we can do, so do nothing. Don't even
+ print a warning message, this is not a kernel
+ problem */
return 0;
}
return error;