Re: [PATCH v4 3/3] md/raid10: bound reused r10bio devs[] walks by used_nr_devs

"Chen Cheng" <[email protected]>
Newsgroups gmane.linux.raid,gmane.linux.kernel
Message-ID <[email protected]>
在 2026/6/22 15:53, yu kuai 写道:
> Hi,
> 
> 在 2026/6/22 14:34, Chen Cheng 写道:
>> The true dangerous is in-flight r10bio which use old geometry.
> 
> You didn't explain why there can be inflight r10bio when array is suspended,
> if this can happen, this is the root cause need to be fixed.
> 

one scenario is .

CPU A (softirq, raid_end_bio_io)         CPU B (action_store)
================================        ===============================
bio_endio(master_bio)
md_end_clone_io
         percpu_ref_put → 0
                                         wait_event wakeup,
						mddev_suspend return
                                         raid10_start_reshape:
                                           setup_geo(&conf->geo, new)
                                           ...
                                           mempool_destroy(old_pool)
                                           conf->r10bio_pool = new_pool
allow_barrier(conf)
free_r10bio(r10_bio)
put_all_bios:
for (i=0; i<conf->geo.raid_disks; i++)
         ==> old obj, new geo, OOB
mempool_free(r10_bio, conf->r10bio_pool)
         ==> old geo obj free into new pool




The fix,  as your advise , raid_end_bio_io:
1. put_all_bios, mempool_free
2. bio_endio if returned
3. allow_barrier



would be replace with patch 03.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.