diff options
author | 2023-11-29 10:02:34 +0800 | |
---|---|---|
committer | 2023-12-01 15:49:42 -0800 | |
commit | fa2bbff7b0b4e211fec5e5686ef96350690597b5 (patch) | |
tree | d175d0e0e8b31bd0e6f6145f6c2c6ca823b0e90e /tools/perf/scripts/python/export-to-postgresql.py | |
parent | MAINTAINERS: SOFTWARE RAID: Add Yu Kuai as Reviewer (diff) | |
download | wireguard-linux-fa2bbff7b0b4e211fec5e5686ef96350690597b5.tar.xz wireguard-linux-fa2bbff7b0b4e211fec5e5686ef96350690597b5.zip |
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
Diffstat (limited to 'tools/perf/scripts/python/export-to-postgresql.py')
0 files changed, 0 insertions, 0 deletions