]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/sunrpc/clnt.c
Merge branches 'intel_pstate' and 'pm-domains'
[karo-tx-linux.git] / net / sunrpc / clnt.c
index 52da3ce54bb53c8434f0acc276c0003e385486e7..2e49d1f892b7911ba051a4a433afac9c4266a8b3 100644 (file)
@@ -1042,8 +1042,6 @@ struct rpc_task *rpc_run_task(const struct rpc_task_setup *task_setup_data)
        struct rpc_task *task;
 
        task = rpc_new_task(task_setup_data);
-       if (IS_ERR(task))
-               goto out;
 
        rpc_task_set_client(task, task_setup_data->rpc_client);
        rpc_task_set_rpc_message(task, task_setup_data->rpc_message);
@@ -1053,7 +1051,6 @@ struct rpc_task *rpc_run_task(const struct rpc_task_setup *task_setup_data)
 
        atomic_inc(&task->tk_count);
        rpc_execute(task);
-out:
        return task;
 }
 EXPORT_SYMBOL_GPL(rpc_run_task);
@@ -1140,10 +1137,6 @@ struct rpc_task *rpc_run_bc_task(struct rpc_rqst *req)
         * Create an rpc_task to send the data
         */
        task = rpc_new_task(&task_setup_data);
-       if (IS_ERR(task)) {
-               xprt_free_bc_request(req);
-               goto out;
-       }
        task->tk_rqstp = req;
 
        /*
@@ -1158,7 +1151,6 @@ struct rpc_task *rpc_run_bc_task(struct rpc_rqst *req)
        WARN_ON_ONCE(atomic_read(&task->tk_count) != 2);
        rpc_execute(task);
 
-out:
        dprintk("RPC: rpc_run_bc_task: task= %p\n", task);
        return task;
 }
@@ -1525,14 +1517,16 @@ static void
 call_start(struct rpc_task *task)
 {
        struct rpc_clnt *clnt = task->tk_client;
+       int idx = task->tk_msg.rpc_proc->p_statidx;
 
        dprintk("RPC: %5u call_start %s%d proc %s (%s)\n", task->tk_pid,
                        clnt->cl_program->name, clnt->cl_vers,
                        rpc_proc_name(task),
                        (RPC_IS_ASYNC(task) ? "async" : "sync"));
 
-       /* Increment call count */
-       task->tk_msg.rpc_proc->p_count++;
+       /* Increment call count (version might not be valid for ping) */
+       if (clnt->cl_program->version[clnt->cl_vers])
+               clnt->cl_program->version[clnt->cl_vers]->counts[idx]++;
        clnt->cl_stats->rpccnt++;
        task->tk_action = call_reserve;
 }
@@ -1680,7 +1674,7 @@ call_allocate(struct rpc_task *task)
        unsigned int slack = task->tk_rqstp->rq_cred->cr_auth->au_cslack;
        struct rpc_rqst *req = task->tk_rqstp;
        struct rpc_xprt *xprt = req->rq_xprt;
-       struct rpc_procinfo *proc = task->tk_msg.rpc_proc;
+       const struct rpc_procinfo *proc = task->tk_msg.rpc_proc;
        int status;
 
        dprint_status(task);
@@ -2484,16 +2478,18 @@ out_overflow:
        goto out_garbage;
 }
 
-static void rpcproc_encode_null(void *rqstp, struct xdr_stream *xdr, void *obj)
+static void rpcproc_encode_null(struct rpc_rqst *rqstp, struct xdr_stream *xdr,
+               const void *obj)
 {
 }
 
-static int rpcproc_decode_null(void *rqstp, struct xdr_stream *xdr, void *obj)
+static int rpcproc_decode_null(struct rpc_rqst *rqstp, struct xdr_stream *xdr,
+               void *obj)
 {
        return 0;
 }
 
-static struct rpc_procinfo rpcproc_null = {
+static const struct rpc_procinfo rpcproc_null = {
        .p_encode = rpcproc_encode_null,
        .p_decode = rpcproc_decode_null,
 };