Yu Kuai fa2bbff7b0 md: synchronize flush io with array reconfiguration
Currently rcu is used to protect iterating rdev from submit_flushes():

submit_flushes			remove_and_add_spares
				synchronize_rcu
				pers->hot_remove_disk()
 rcu_read_lock()
 rdev_for_each_rcu
  if (rdev->raid_disk >= 0)
				rdev->radi_disk = -1;
   atomic_inc(&rdev->nr_pending)
   rcu_read_unlock()
   bi = bio_alloc_bioset()
   bi->bi_end_io = md_end_flush
   bi->private = rdev
   submit_bio
   // issue io for removed rdev

Fix this problem by grabbing 'acive_io' before iterating rdev, make sure
that remove_and_add_spares() won't concurrent with submit_flushes().

Fixes: a2826aa92e2e ("md: support barrier requests on all personalities.")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Song Liu <song@kernel.org>
Link: https://lore.kernel.org/r/20231129020234.1586910-1-yukuai1@huaweicloud.com
2023-12-01 15:49:42 -08:00
..
2023-11-02 14:05:18 -10:00
2023-11-07 16:56:10 -08:00
2023-11-27 09:11:12 -07:00
2023-11-01 14:46:51 -10:00
2023-11-01 14:46:51 -10:00
2023-11-07 20:45:12 +01:00
2023-11-03 18:56:51 -10:00
2023-10-30 19:09:55 -10:00
2023-11-09 13:47:52 -08:00
2023-11-23 17:31:53 -08:00
2023-10-31 18:32:51 -10:00
2023-11-03 15:44:25 -10:00
2023-10-31 17:44:17 -10:00
2023-11-04 16:25:36 -10:00
2023-11-02 15:20:30 -10:00
2023-11-09 14:18:42 -08:00
2023-11-09 13:37:28 -08:00
2023-10-30 19:09:55 -10:00
2023-11-09 13:47:52 -08:00
2023-11-03 10:07:39 -10:00
2023-11-05 18:45:32 -08:00
2023-11-06 15:06:06 -08:00
2023-11-09 13:37:28 -08:00
2023-11-02 14:40:51 -10:00
2023-11-10 09:19:46 -08:00
2023-11-04 16:20:36 -10:00
2023-11-10 12:22:14 -08:00
2023-11-01 14:46:51 -10:00
2023-11-03 16:00:42 -10:00
2023-10-30 13:14:27 +00:00
2023-11-05 18:49:40 -08:00
2023-11-23 17:40:15 -08:00
2023-10-25 16:50:11 +02:00
2023-11-03 10:07:39 -10:00
2023-11-03 19:10:41 -10:00
2023-11-10 11:44:38 -08:00
2023-10-19 10:26:26 +03:00
2023-11-09 13:47:52 -08:00
2023-11-02 15:13:50 -10:00
2023-10-18 10:01:34 +02:00
2023-11-10 09:19:46 -08:00
2023-11-24 16:30:38 +00:00
2023-11-04 15:58:13 -10:00
2023-11-10 09:19:46 -08:00
2023-11-10 09:19:46 -08:00
2023-11-10 09:19:46 -08:00