md/raid10: remove rcu protection to access rdev from conf
mainline inclusion from mainline-next-20231220 commit a448af25becf4b555660b5ba2618c7ed3c4de6da category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/I8T02O Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a448af25becf4b555660b5ba2618c7ed3c4de6da -------------------------------- Because it's safe to accees rdev from conf: - If any spinlock is held, because synchronize_rcu() from md_kick_rdev_from_array() will prevent 'rdev' to be freed until spinlock is released; - If 'reconfig_lock' is held, because rdev can't be added or removed from array; - If there is normal IO inflight, because mddev_suspend() will prevent rdev to be added or removed from array; - If there is sync IO inflight, because 'MD_RECOVERY_RUNNING' is checked in remove_and_add_spares(). And these will cover all the scenarios in raid10. This patch also cleanup the code to handle the case that replacement replace rdev while IO is still inflight. Signed-off-by:Yu Kuai <yukuai3@huawei.com> Signed-off-by:
Song Liu <song@kernel.org> Link: https://lore.kernel.org/r/20231125081604.3939938-3-yukuai1@huaweicloud.com Signed-off-by:
Li Nan <linan122@huawei.com>
Loading
Please sign in to comment