summaryrefslogtreecommitdiffstats
path: root/drivers/md/raid5.h
diff options
context:
space:
mode:
authorYu Kuai <yukuai3@huawei.com>2023-11-25 09:16:03 +0100
committerSong Liu <song@kernel.org>2023-11-28 00:49:05 +0100
commitad8606702f268903b26795e6b93605646fd1a6a8 (patch)
tree2bfd1c6af1b58d618bcd5841ae5ee84bc9649a71 /drivers/md/raid5.h
parentmd/raid1: remove rcu protection to access rdev from conf (diff)
downloadlinux-ad8606702f268903b26795e6b93605646fd1a6a8.tar.xz
linux-ad8606702f268903b26795e6b93605646fd1a6a8.zip
md/raid5: remove rcu protection to access rdev from conf
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 raid456. Signed-off-by: Yu Kuai <yukuai3@huawei.com> Signed-off-by: Song Liu <song@kernel.org> Link: https://lore.kernel.org/r/20231125081604.3939938-5-yukuai1@huaweicloud.com
Diffstat (limited to 'drivers/md/raid5.h')
-rw-r--r--drivers/md/raid5.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h
index 22bea20eccbd..9b5a7dc3f2a0 100644
--- a/drivers/md/raid5.h
+++ b/drivers/md/raid5.h
@@ -473,8 +473,8 @@ enum {
*/
struct disk_info {
- struct md_rdev __rcu *rdev;
- struct md_rdev __rcu *replacement;
+ struct md_rdev *rdev;
+ struct md_rdev *replacement;
struct page *extra_page; /* extra page to use in prexor */
};