Hi Trond, On Tue, 2018-09-04 at 17:05 -0400, Trond Myklebust wrote: > We no longer need priority semantics on the xprt->sending queue, because > the order in which tasks are sent is now dictated by their position in > the send queue. > Note that the backlog queue remains a priority queue, meaning that > slot resources are still managed in order of task priority. > > Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx> > --- > net/sunrpc/xprt.c | 29 ++++++----------------------- > 1 file changed, 6 insertions(+), 23 deletions(-) > > diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c > index ba9af25d14de..ebe5235c484b 100644 > --- a/net/sunrpc/xprt.c > +++ b/net/sunrpc/xprt.c > @@ -181,7 +181,6 @@ EXPORT_SYMBOL_GPL(xprt_load_transport); > int xprt_reserve_xprt(struct rpc_xprt *xprt, struct rpc_task *task) > { > struct rpc_rqst *req = task->tk_rqstp; As of this patch, req is no longer used either. Can it be removed? Thanks, Anna > - int priority; > > if (test_and_set_bit(XPRT_LOCKED, &xprt->state)) { > if (task == xprt->snd_task) > @@ -197,13 +196,7 @@ int xprt_reserve_xprt(struct rpc_xprt *xprt, struct > rpc_task *task) > task->tk_pid, xprt); > task->tk_timeout = 0; > task->tk_status = -EAGAIN; > - if (req == NULL) > - priority = RPC_PRIORITY_LOW; > - else if (!req->rq_ntrans) > - priority = RPC_PRIORITY_NORMAL; > - else > - priority = RPC_PRIORITY_HIGH; > - rpc_sleep_on_priority(&xprt->sending, task, NULL, priority); > + rpc_sleep_on(&xprt->sending, task, NULL); > return 0; > } > EXPORT_SYMBOL_GPL(xprt_reserve_xprt); > @@ -231,7 +224,6 @@ static void xprt_clear_locked(struct rpc_xprt *xprt) > int xprt_reserve_xprt_cong(struct rpc_xprt *xprt, struct rpc_task *task) > { > struct rpc_rqst *req = task->tk_rqstp; > - int priority; > > if (test_and_set_bit(XPRT_LOCKED, &xprt->state)) { > if (task == xprt->snd_task) > @@ -251,13 +243,7 @@ int xprt_reserve_xprt_cong(struct rpc_xprt *xprt, struct > rpc_task *task) > dprintk("RPC: %5u failed to lock transport %p\n", task->tk_pid, xprt); > task->tk_timeout = 0; > task->tk_status = -EAGAIN; > - if (req == NULL) > - priority = RPC_PRIORITY_LOW; > - else if (!req->rq_ntrans) > - priority = RPC_PRIORITY_NORMAL; > - else > - priority = RPC_PRIORITY_HIGH; > - rpc_sleep_on_priority(&xprt->sending, task, NULL, priority); > + rpc_sleep_on(&xprt->sending, task, NULL); > return 0; > } > EXPORT_SYMBOL_GPL(xprt_reserve_xprt_cong); > @@ -285,8 +271,7 @@ static void __xprt_lock_write_next(struct rpc_xprt *xprt) > if (test_and_set_bit(XPRT_LOCKED, &xprt->state)) > return; > > - if (rpc_wake_up_first_on_wq(xprtiod_workqueue, &xprt->sending, > - __xprt_lock_write_func, xprt)) > + if (rpc_wake_up_first(&xprt->sending, __xprt_lock_write_func, xprt)) > return; > xprt_clear_locked(xprt); > } > @@ -297,8 +282,7 @@ static void __xprt_lock_write_next_cong(struct rpc_xprt > *xprt) > return; > if (RPCXPRT_CONGESTED(xprt)) > goto out_unlock; > - if (rpc_wake_up_first_on_wq(xprtiod_workqueue, &xprt->sending, > - __xprt_lock_write_func, xprt)) > + if (rpc_wake_up_first(&xprt->sending, __xprt_lock_write_func, xprt)) > return; > out_unlock: > xprt_clear_locked(xprt); > @@ -495,8 +479,7 @@ void xprt_write_space(struct rpc_xprt *xprt) > if (xprt->snd_task) { > dprintk("RPC: write space: waking waiting task on " > "xprt %p\n", xprt); > - rpc_wake_up_queued_task_on_wq(xprtiod_workqueue, > - &xprt->pending, xprt->snd_task); > + rpc_wake_up_queued_task(&xprt->pending, xprt->snd_task); > } > spin_unlock_bh(&xprt->transport_lock); > } > @@ -1596,7 +1579,7 @@ static void xprt_init(struct rpc_xprt *xprt, struct net > *net) > > rpc_init_wait_queue(&xprt->binding, "xprt_binding"); > rpc_init_wait_queue(&xprt->pending, "xprt_pending"); > - rpc_init_priority_wait_queue(&xprt->sending, "xprt_sending"); > + rpc_init_wait_queue(&xprt->sending, "xprt_sending"); > rpc_init_priority_wait_queue(&xprt->backlog, "xprt_backlog"); > > xprt_init_xid(xprt);