Re: SRCU: kworker hung in synchronize_srcu

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Le Thu, Sep 28, 2023 at 05:39:17PM -0400, Joel Fernandes a écrit :
> If srcu_invoke_callbacks() was really called for the rdp, I would have
> expected rcu_segcblist_advance() to advance all those pending
> callbacks to 304.
> 
> I posit that probably srcu_invoke_callbacks() is not even being called
> in the first place, otherwise why is the DONE segment count still 0?
> DONE should not be 0, otherwise callbacks will not run. The segcblist
> of the rdp seems out of date perhaps due to rcu_invoke_callbacks() not
> being called due to some other bug (or a workqueue/timer issue causing
> the srcu_invoke_callbacks() to not run?).

Speaking of, I'm looking at srcu_gp_end() and the comment after releasing
srcu_gp_mutex says:

	      "/* A new grace period can start at this point.  But only one. */"

But what ensures that?

Because if we get preempted here and more than 3 grace periods elapse, then
->srcu_have_cbs[the_same_idx] could get overriden and then all sorts of race
may lead to srcu_invoke_callbacks() to not be invoked.

I'm not asking too loudly though because I'm sure I'm missing something obvious,
I see a lot of mirages these days...



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux