On Wed, Aug 18, 2021 at 9:44 AM Guoqing Jiang <guoqing.jiang@xxxxxxxxx> wrote: > > > > On 8/18/21 9:36 AM, Xiao Ni wrote: > > One warning message is triggered like this: > > [ 695.110751] ============================= > > [ 695.131439] WARNING: suspicious RCU usage > > [ 695.151389] 4.18.0-319.el8.x86_64+debug #1 Not tainted > > [ 695.174413] ----------------------------- > > [ 695.192603] drivers/md/raid10.c:1776 suspicious > > rcu_dereference_check() usage! > > [ 695.225107] other info that might help us debug this: > > [ 695.260940] rcu_scheduler_active = 2, debug_locks = 1 > > [ 695.290157] no locks held by mkfs.xfs/10186. > > > > In the first loop of function raid10_handle_discard. It already > > determines which disk need to handle discard request and add the > > rdev reference count rdev->nr_pending. So the conf->mirrors will > > not change until all bios come back from underlayer disks. It > > doesn't need to use rcu_dereference to get rdev. > > > > Fixes: d30588b2731f ('md/raid10: improve raid10 discard request') > > Signed-off-by: Xiao Ni <xni@xxxxxxxxxx> > > --- > > drivers/md/raid10.c | 13 +++++++++---- > > 1 file changed, 9 insertions(+), 4 deletions(-) > > > > diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c > > index 16977e8..1d3ac76 100644 > > --- a/drivers/md/raid10.c > > +++ b/drivers/md/raid10.c > > @@ -1712,6 +1712,10 @@ static int raid10_handle_discard(struct mddev *mddev, struct bio *bio) > > } else > > r10_bio->master_bio = (struct bio *)first_r10bio; > > > > + /* first select target devices under rcu_lock and > > + * inc refcount on their rdev. Record them by setting > > + * bios[x] to bio > > + */ > > Nit: the comment style is not correct. Hi Guoqing /* * first select target devices under rcu_lock and * inc refcount on their rdev. Record them by setting * bios[x] to bio */ It should be like this, right? If so, I'll send v2 and add your ack in the patch too.