summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Nan <linan122@huawei.com>2023-07-01 16:05:27 +0800
committerSong Liu <song@kernel.org>2023-07-27 00:13:30 -0700
commit7e85c41b9e1df9192c225afd7cfec8dcad137feb (patch)
treeb3ca8e4185b65a0054366c0306912c8a2e98cbdb
parent21bd9a68fef47c4f0e951be9a6fac9745cee1bab (diff)
md/raid10: check replacement and rdev to prevent submit the same io twice
After commit 4ca40c2ce099 ("md/raid10: Allow replacement device to be replace old drive."), 'rdev' and 'replacement' could appear to be identical. There are already checks for that in wait_blocked_dev() and raid10_write_request(). Add check for raid10_handle_discard() now. Signed-off-by: Li Nan <linan122@huawei.com> Link: https://lore.kernel.org/r/20230701080529.2684932-2-linan666@huaweicloud.com Signed-off-by: Song Liu <song@kernel.org>
-rw-r--r--drivers/md/raid10.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 757687fb90a7..60963449d3f5 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -1785,6 +1785,8 @@ retry_discard:
r10_bio->devs[disk].bio = NULL;
r10_bio->devs[disk].repl_bio = NULL;
+ if (rdev == rrdev)
+ rrdev = NULL;
if (rdev && (test_bit(Faulty, &rdev->flags)))
rdev = NULL;
if (rrdev && (test_bit(Faulty, &rrdev->flags)))