From 5d9d8eb41a7465d4810c82c08d97e70c3f3749c2 Mon Sep 17 00:00:00 2001 From: Thomas Stibor Date: Wed, 16 Oct 2013 16:00:06 +0200 Subject: [PATCH] LU-4113 gss: uncatched error in gss_svc_upcall causes drops Since kernel version 2.6.20 the function cache_check() in net/sunrpc/cache.c can return the error -ETIMEDOUT. This error should cause to recheck the cache. In current implementation gss_svc_upcall_handle_init() is not handling the error which causes to fall through the switch statement returning GOTO(out, rc = SECSVC_DROP). As a consequence this error is propagating to ERROR:do_nego_rpc(): status: -110 (Unknown error 18446744073709551506) ERROR:lgssc_negotiation(): negotiation rpc error: -85 ERROR:lgssc_kr_negotiate(): key 08786b66: failed to negotiation and causes client hanging after switching to flavor krb5i/krb5p. Signed-off-by: Thomas Stibor Change-Id: I7301bea70d96193e0f4a332c6e4b34ba326134ff Reviewed-on: http://review.whamcloud.com/7960 Tested-by: Hudson Reviewed-by: Andreas Dilger Reviewed-by: Nathaniel Clark Tested-by: Maloo Reviewed-by: Andrew Korty Reviewed-by: Ken Hornstein Reviewed-by: Oleg Drokin --- lustre/ptlrpc/gss/gss_svc_upcall.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lustre/ptlrpc/gss/gss_svc_upcall.c b/lustre/ptlrpc/gss/gss_svc_upcall.c index 0b18ff9..eb5e493 100644 --- a/lustre/ptlrpc/gss/gss_svc_upcall.c +++ b/lustre/ptlrpc/gss/gss_svc_upcall.c @@ -899,6 +899,7 @@ cache_check: * take care of following calls. */ rc = cache_check(&rsi_cache, &rsip->h, &cache_upcall_chandle); switch (rc) { + case -ETIMEDOUT: case -EAGAIN: { int valid; -- 1.8.3.1