task->tk_timeout = RPC_REESTABLISH_TIMEOUT; 
void xprt_transmit(struct rpc_task *task){	struct rpc_rqst	*req = task->tk_rqstp;	struct rpc_xprt	*xprt = req->rq_xprt;	int status;	dprintk("RPC: %4d xprt_transmit(%u)\n", task->tk_pid, req->rq_slen);	smp_rmb();	if (!req->rq_received) {		if (list_empty(&req->rq_list)) {			spin_lock_bh(&xprt->transport_lock);			/* Update the softirq receive buffer */			memcpy(&req->rq_private_buf, &req->rq_rcv_buf,					sizeof(req->rq_private_buf));			/* Add request to the receive list */			list_add_tail(&req->rq_list, &xprt->recv);			spin_unlock_bh(&xprt->transport_lock);			xprt_reset_majortimeo(req);			/* Turn off autodisconnect */			del_singleshot_timer_sync(&xprt->timer);		}	} else if (!req->rq_bytes_sent)		return;	status = xprt->ops->send_request(task);	if (status == 0) {		dprintk("RPC: %4d xmit complete\n", task->tk_pid);		spin_lock_bh(&xprt->transport_lock);		xprt->ops->set_retrans_timeout(task);		/* Don't race with disconnect */		if (!xprt_connected(xprt))			task->tk_status = -ENOTCONN;		else if (!req->rq_received)			rpc_sleep_on(&xprt->pending, task, NULL, xprt_timer);		xprt->ops->release_xprt(xprt, task);		spin_unlock_bh(&xprt->transport_lock);		return;	}	/* Note: at this point, task->tk_sleeping has not yet been set,	 *	 hence there is no danger of the waking up task being put on	 *	 schedq, and being picked up by a parallel run of rpciod().	 */	task->tk_status = status;	switch (status) {	case -ECONNREFUSED:		task->tk_timeout = RPC_REESTABLISH_TIMEOUT;		rpc_sleep_on(&xprt->sending, task, NULL, NULL);	case -EAGAIN:	case -ENOTCONN:		return;	default:		break;	}	xprt_release_write(xprt, task);	return;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/03bf4b707eee06706c9db343dd5c905b7ee47ed2/xprt.c/buggy/net/sunrpc/xprt.c