|
@@ -1112,6 +1112,17 @@ xprt_request_enqueue_transmit(struct rpc_task *task)
|
|
INIT_LIST_HEAD(&req->rq_xmit2);
|
|
INIT_LIST_HEAD(&req->rq_xmit2);
|
|
goto out;
|
|
goto out;
|
|
}
|
|
}
|
|
|
|
+ } else if (RPC_IS_SWAPPER(task)) {
|
|
|
|
+ list_for_each_entry(pos, &xprt->xmit_queue, rq_xmit) {
|
|
|
|
+ if (pos->rq_cong || pos->rq_bytes_sent)
|
|
|
|
+ continue;
|
|
|
|
+ if (RPC_IS_SWAPPER(pos->rq_task))
|
|
|
|
+ continue;
|
|
|
|
+ /* Note: req is added _before_ pos */
|
|
|
|
+ list_add_tail(&req->rq_xmit, &pos->rq_xmit);
|
|
|
|
+ INIT_LIST_HEAD(&req->rq_xmit2);
|
|
|
|
+ goto out;
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
list_for_each_entry(pos, &xprt->xmit_queue, rq_xmit) {
|
|
list_for_each_entry(pos, &xprt->xmit_queue, rq_xmit) {
|
|
if (pos->rq_task->tk_owner != task->tk_owner)
|
|
if (pos->rq_task->tk_owner != task->tk_owner)
|