Message ID | 20191105142133.28741-1-trond.myklebust@hammerspace.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | SUNRPC: Avoid RPC delays when exiting suspend | expand |
On 05/11/2019 14:21, Trond Myklebust wrote: > Jon Hunter: "I have been tracking down another suspend/NFS related > issue where again I am seeing random delays exiting suspend. The delays > can be up to a couple minutes in the worst case and this is causing a > suspend test we have to fail." > > Change the use of a deferrable work to a standard delayed one. > > Reported-by: Jon Hunter <jonathanh@nvidia.com> > Fixes: 7e0a0e38fcfea ("SUNRPC: Replace the queue timer with a delayed work function") > Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> > --- > net/sunrpc/sched.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c > index 360afe153193..987c4b1f0b17 100644 > --- a/net/sunrpc/sched.c > +++ b/net/sunrpc/sched.c > @@ -260,7 +260,7 @@ static void __rpc_init_priority_wait_queue(struct rpc_wait_queue *queue, const c > rpc_reset_waitqueue_priority(queue); > queue->qlen = 0; > queue->timer_list.expires = 0; > - INIT_DEFERRABLE_WORK(&queue->timer_list.dwork, __rpc_queue_timer_fn); > + INIT_DELAYED_WORK(&queue->timer_list.dwork, __rpc_queue_timer_fn); > INIT_LIST_HEAD(&queue->timer_list.list); > rpc_assign_waitqueue_name(queue, qname); > } Thanks! Tested-by: Jon Hunter <jonathanh@nvidia.com> Cheers Jon
Hi Trond, On 06/11/2019 11:15, Jon Hunter wrote: > > On 05/11/2019 14:21, Trond Myklebust wrote: >> Jon Hunter: "I have been tracking down another suspend/NFS related >> issue where again I am seeing random delays exiting suspend. The delays >> can be up to a couple minutes in the worst case and this is causing a >> suspend test we have to fail." >> >> Change the use of a deferrable work to a standard delayed one. >> >> Reported-by: Jon Hunter <jonathanh@nvidia.com> >> Fixes: 7e0a0e38fcfea ("SUNRPC: Replace the queue timer with a delayed work function") >> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> >> --- >> net/sunrpc/sched.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c >> index 360afe153193..987c4b1f0b17 100644 >> --- a/net/sunrpc/sched.c >> +++ b/net/sunrpc/sched.c >> @@ -260,7 +260,7 @@ static void __rpc_init_priority_wait_queue(struct rpc_wait_queue *queue, const c >> rpc_reset_waitqueue_priority(queue); >> queue->qlen = 0; >> queue->timer_list.expires = 0; >> - INIT_DEFERRABLE_WORK(&queue->timer_list.dwork, __rpc_queue_timer_fn); >> + INIT_DELAYED_WORK(&queue->timer_list.dwork, __rpc_queue_timer_fn); >> INIT_LIST_HEAD(&queue->timer_list.list); >> rpc_assign_waitqueue_name(queue, qname); >> } > > Thanks! > > Tested-by: Jon Hunter <jonathanh@nvidia.com> I see this is now applied in -next, but I am seeing the failures on mainline. Any chance we could still get this into v5.4? Cheers Jon
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index 360afe153193..987c4b1f0b17 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c @@ -260,7 +260,7 @@ static void __rpc_init_priority_wait_queue(struct rpc_wait_queue *queue, const c rpc_reset_waitqueue_priority(queue); queue->qlen = 0; queue->timer_list.expires = 0; - INIT_DEFERRABLE_WORK(&queue->timer_list.dwork, __rpc_queue_timer_fn); + INIT_DELAYED_WORK(&queue->timer_list.dwork, __rpc_queue_timer_fn); INIT_LIST_HEAD(&queue->timer_list.list); rpc_assign_waitqueue_name(queue, qname); }
Jon Hunter: "I have been tracking down another suspend/NFS related issue where again I am seeing random delays exiting suspend. The delays can be up to a couple minutes in the worst case and this is causing a suspend test we have to fail." Change the use of a deferrable work to a standard delayed one. Reported-by: Jon Hunter <jonathanh@nvidia.com> Fixes: 7e0a0e38fcfea ("SUNRPC: Replace the queue timer with a delayed work function") Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> --- net/sunrpc/sched.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)