On Thu, 2018-09-06 at 10:17 -0400, Anna Schumaker wrote: > 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? Never mind, I looked at the next patch and saw that it's used again. > > 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);