In message: Re: [PATCH 0/1] fs: dcache: avoid livelocks on d_alloc_parallel
on 11/05/2021 Wenlin Kang wrote:

> On 2021/5/11 上午11:04, Bruce Ashfield wrote:
> > [Please note: This e-mail is from an EXTERNAL e-mail address]
> > 
> > The patch looks good, but is it for 5.10/rt ? Or some other version and
> > set of branches ?
> 
> 
> Hi bruce
> 
> v5.2/standard/preempt-rt
> 
> The detail info was written in email  "[linux-yocto] [PATCH 0/1] fs: dcache:
> avoid livelocks on d_alloc_parallel",

Aha. That also needs to be summarized in the subject in [], since that
is what my scans pick up during merging.

i.e. [linux-yocto 5.2/standard/base]

What about the other versions of RT ? Do they suffer the same issue ?
We have 5.4/5.10 as newer supported rt versions that might also need
the change.

Bruce

> 
> please check it, thanks.
> 
> 
> > 
> > Bruce
> > 
> > 
> > In message: [PATCH 0/1] fs: dcache: avoid livelocks on d_alloc_parallel
> > on 08/05/2021 Kang Wenlin wrote:
> > 
> > > From: Wenlin Kang <[email protected]>
> > > 
> > > With RT, if a high priority task that runs d_alloc_parallel() preempts a
> > > low priority task that runs __d_add(), it can make d_alloc_parallel() go
> > > into an infinite retry.
> > > 
> > > low priority task:                  high priority task:
> > > __lookup_slow()
> > > d_add()
> > >      __d_add
> > >          start_dir_add(dir)          __lookup_slow()
> > >                                          d_alloc_parallel()
> > > 
> > > When the low priority task finished start_dir_add(), i_dir_seq has been
> > > incremented to an odd value. Since __d_add() uses spin_lock(), migration
> > > is disabled, so if the low priority task is preempted during 
> > > start_dir_add()
> > > /end_dir_add(), then high priority task can go into an infinite waiting 
> > > for
> > > i_dir_seq.
> > > 
> > > This patch avoid the issue by enable preempt_disable() during 
> > > start_dir_add()
> > > /end_dir_add().
> > > 
> > > 
> > > Steps to reproduce:
> > > $ taskset -c 1 chrt -f 70 ./test1.sh &
> > > $ taskset -c 1 chrt -f 80 ./test2.sh &
> > > 
> > > After about 30 minutes, check whether serial console responds.
> > > The problem happens with specific script combinations(test1.sh and 
> > > test2.sh)
> > > 
> > > This problem was reproduced on v4.12 with preempt-rt, but I think it 
> > > should be
> > > exist on v5.2/standard/preempt-rt
> > > 
> > > P.S.
> > > $ cat test1.sh
> > > #!/bin/bash
> > > 
> > > while true; do
> > >        usleep 1
> > > done
> > > 
> > > $ cat test2.sh
> > > #!/bin/bash
> > > 
> > > while true; do
> > >        cat /proc/stat > /dev/null
> > >        usleep 100
> > > done
> > > 
> > > 
> > > Wenlin Kang (1):
> > >    fs: dcache: avoid livelocks on d_alloc_parallel
> > > 
> > >   fs/dcache.c | 6 ++++++
> > >   1 file changed, 6 insertions(+)
> > > 
> > > --
> > > 1.9.1
> > > 
> 
> -- 
> Thanks,
> Wenlin Kang
> 
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#9863): 
https://lists.yoctoproject.org/g/linux-yocto/message/9863
Mute This Topic: https://lists.yoctoproject.org/mt/82675356/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/linux-yocto/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to