diff options
Diffstat (limited to 'net/sunrpc/clnt.c')
-rw-r--r-- | net/sunrpc/clnt.c | 84 |
1 files changed, 42 insertions, 42 deletions
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index 3a8f53e7ba07..fa5549079d79 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c | |||
@@ -964,7 +964,48 @@ call_reserveresult(struct rpc_task *task) | |||
964 | } | 964 | } |
965 | 965 | ||
966 | /* | 966 | /* |
967 | * 2. Allocate the buffer. For details, see sched.c:rpc_malloc. | 967 | * 2. Bind and/or refresh the credentials |
968 | */ | ||
969 | static void | ||
970 | call_refresh(struct rpc_task *task) | ||
971 | { | ||
972 | dprint_status(task); | ||
973 | |||
974 | task->tk_action = call_refreshresult; | ||
975 | task->tk_status = 0; | ||
976 | task->tk_client->cl_stats->rpcauthrefresh++; | ||
977 | rpcauth_refreshcred(task); | ||
978 | } | ||
979 | |||
980 | /* | ||
981 | * 2a. Process the results of a credential refresh | ||
982 | */ | ||
983 | static void | ||
984 | call_refreshresult(struct rpc_task *task) | ||
985 | { | ||
986 | int status = task->tk_status; | ||
987 | |||
988 | dprint_status(task); | ||
989 | |||
990 | task->tk_status = 0; | ||
991 | task->tk_action = call_allocate; | ||
992 | if (status >= 0 && rpcauth_uptodatecred(task)) | ||
993 | return; | ||
994 | switch (status) { | ||
995 | case -EACCES: | ||
996 | rpc_exit(task, -EACCES); | ||
997 | return; | ||
998 | case -ENOMEM: | ||
999 | rpc_exit(task, -ENOMEM); | ||
1000 | return; | ||
1001 | case -ETIMEDOUT: | ||
1002 | rpc_delay(task, 3*HZ); | ||
1003 | } | ||
1004 | task->tk_action = call_refresh; | ||
1005 | } | ||
1006 | |||
1007 | /* | ||
1008 | * 2b. Allocate the buffer. For details, see sched.c:rpc_malloc. | ||
968 | * (Note: buffer memory is freed in xprt_release). | 1009 | * (Note: buffer memory is freed in xprt_release). |
969 | */ | 1010 | */ |
970 | static void | 1011 | static void |
@@ -1015,47 +1056,6 @@ call_allocate(struct rpc_task *task) | |||
1015 | rpc_exit(task, -ERESTARTSYS); | 1056 | rpc_exit(task, -ERESTARTSYS); |
1016 | } | 1057 | } |
1017 | 1058 | ||
1018 | /* | ||
1019 | * 2a. Bind and/or refresh the credentials | ||
1020 | */ | ||
1021 | static void | ||
1022 | call_refresh(struct rpc_task *task) | ||
1023 | { | ||
1024 | dprint_status(task); | ||
1025 | |||
1026 | task->tk_action = call_refreshresult; | ||
1027 | task->tk_status = 0; | ||
1028 | task->tk_client->cl_stats->rpcauthrefresh++; | ||
1029 | rpcauth_refreshcred(task); | ||
1030 | } | ||
1031 | |||
1032 | /* | ||
1033 | * 2b. Process the results of a credential refresh | ||
1034 | */ | ||
1035 | static void | ||
1036 | call_refreshresult(struct rpc_task *task) | ||
1037 | { | ||
1038 | int status = task->tk_status; | ||
1039 | |||
1040 | dprint_status(task); | ||
1041 | |||
1042 | task->tk_status = 0; | ||
1043 | task->tk_action = call_allocate; | ||
1044 | if (status >= 0 && rpcauth_uptodatecred(task)) | ||
1045 | return; | ||
1046 | switch (status) { | ||
1047 | case -EACCES: | ||
1048 | rpc_exit(task, -EACCES); | ||
1049 | return; | ||
1050 | case -ENOMEM: | ||
1051 | rpc_exit(task, -ENOMEM); | ||
1052 | return; | ||
1053 | case -ETIMEDOUT: | ||
1054 | rpc_delay(task, 3*HZ); | ||
1055 | } | ||
1056 | task->tk_action = call_refresh; | ||
1057 | } | ||
1058 | |||
1059 | static inline int | 1059 | static inline int |
1060 | rpc_task_need_encode(struct rpc_task *task) | 1060 | rpc_task_need_encode(struct rpc_task *task) |
1061 | { | 1061 | { |