 /* Autobind on cloned rpc clients is discouraged */ BUG_ON(clnt->cl_parent != clnt); 
rpc_getport(struct rpc_task *task, struct rpc_clnt *clnt){	struct rpc_portmap *map = clnt->cl_pmap;	struct sockaddr_in *sap = &clnt->cl_xprt->addr;	struct rpc_message msg = {		.rpc_proc	= &pmap_procedures[PMAP_GETPORT],		.rpc_argp	= map,		.rpc_resp	= &clnt->cl_port,		.rpc_cred	= NULL	};	struct rpc_clnt	*pmap_clnt;	struct rpc_task	*child;	dprintk("RPC: %4d rpc_getport(%s, %d, %d, %d)\n",			task->tk_pid, clnt->cl_server,			map->pm_prog, map->pm_vers, map->pm_prot);	spin_lock(&pmap_lock);	if (map->pm_binding) {		rpc_sleep_on(&map->pm_bindwait, task, NULL, NULL);		spin_unlock(&pmap_lock);		return;	}	map->pm_binding = 1;	spin_unlock(&pmap_lock);	pmap_clnt = pmap_create(clnt->cl_server, sap, map->pm_prot);	if (IS_ERR(pmap_clnt)) {		task->tk_status = PTR_ERR(pmap_clnt);		goto bailout;	}	task->tk_status = 0;	/*	 * Note: rpc_new_child will release client after a failure.	 */	if (!(child = rpc_new_child(pmap_clnt, task)))		goto bailout;	/* Setup the call info struct */	rpc_call_setup(child, &msg, 0);	/* ... and run the child task */	rpc_run_child(task, child, pmap_getport_done);	return;bailout:	spin_lock(&pmap_lock);	map->pm_binding = 0;	rpc_wake_up(&map->pm_bindwait);	spin_unlock(&pmap_lock);	task->tk_status = -EIO;	task->tk_action = NULL;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/007e251f2b2760f738c92adc8c80cbae0bed3ce5/pmap_clnt.c/clean/net/sunrpc/pmap_clnt.c