Thread (39 messages) 39 messages, 5 authors, 2020-03-01

Re: [PATCH RFC] ext4: fix potential race between online resizing and write operations

From: "Paul E. McKenney" <paulmck@kernel.org>
Date: 2020-02-25 16:42:04
Also in: lkml

On Tue, Feb 25, 2020 at 09:17:11AM -0500, Joel Fernandes wrote:
On Mon, Feb 24, 2020 at 10:55 PM Paul E. McKenney [off-list ref] wrote:
[...]
quoted
quoted
quoted
As for "task_struct's rcu_read_lock_nesting". Will it be enough just
have a look at preempt_count of current process? If we have for example
nested rcu_read_locks:

<snip>
rcu_read_lock()
    rcu_read_lock()
        rcu_read_lock()
<snip>

the counter would be 3.
No, because preempt_count is not incremented during rcu_read_lock(). RCU
reader sections can be preempted, they just cannot goto sleep in a reader
section (unless the kernel is RT).
You are both right.

Vlad is correct for CONFIG_PREEMPT=n and CONFIG_DEBUG_ATOMIC_SLEEP=y
and Joel is correct otherwise, give or take the possibility of other
late-breaking corner cases.  ;-)
Oh yes, but even for PREEMPT=n, rcu_read_lock() is just a NOOP for
that configuration and doesn't really mess around with preempt_count
if I recall :-D. (doesn't need to mess with preempt_count because
being in kernel mode is non-preemptible for PREEMPT=n anyway).
For PREEMPT=n, rcu_read_lock() is preempt_disable(), see the code
in include/linux/rcupdate.h.  ;-)

							Thanx, Paul
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help