提交 92948f37 编写于 作者: W Wei Shuyu 提交者: Zheng Zengkai

md/raid10: properly indicate failure when ending a failed write request

stable inclusion
from stable-5.10.58
commit a786282b55b4d1134931c679a80e900c46461eae
bugzilla: 176984 https://gitee.com/openeuler/kernel/issues/I4E2P4

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=a786282b55b4d1134931c679a80e900c46461eae

--------------------------------

commit 5ba03936 upstream.

Similar to [1], this patch fixes the same bug in raid10. Also cleanup the
comments.

[1] commit 2417b986 ("md/raid1: properly indicate failure when ending
                         a failed write request")
Cc: stable@vger.kernel.org
Fixes: 7cee6d4e ("md/raid10: end bio when the device faulty")
Signed-off-by: NWei Shuyu <wsy@dogben.com>
Acked-by: NGuoqing Jiang <jiangguoqing@kylinos.cn>
Signed-off-by: NSong Liu <song@kernel.org>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: NChen Jun <chenjun102@huawei.com>
Acked-by: NWeilong Chen <chenweilong@huawei.com>
Signed-off-by: NChen Jun <chenjun102@huawei.com>
Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
上级 ab9d3955
...@@ -472,8 +472,6 @@ static void raid1_end_write_request(struct bio *bio) ...@@ -472,8 +472,6 @@ static void raid1_end_write_request(struct bio *bio)
/* /*
* When the device is faulty, it is not necessary to * When the device is faulty, it is not necessary to
* handle write error. * handle write error.
* For failfast, this is the only remaining device,
* We need to retry the write without FailFast.
*/ */
if (!test_bit(Faulty, &rdev->flags)) if (!test_bit(Faulty, &rdev->flags))
set_bit(R1BIO_WriteError, &r1_bio->state); set_bit(R1BIO_WriteError, &r1_bio->state);
......
...@@ -470,12 +470,12 @@ static void raid10_end_write_request(struct bio *bio) ...@@ -470,12 +470,12 @@ static void raid10_end_write_request(struct bio *bio)
/* /*
* When the device is faulty, it is not necessary to * When the device is faulty, it is not necessary to
* handle write error. * handle write error.
* For failfast, this is the only remaining device,
* We need to retry the write without FailFast.
*/ */
if (!test_bit(Faulty, &rdev->flags)) if (!test_bit(Faulty, &rdev->flags))
set_bit(R10BIO_WriteError, &r10_bio->state); set_bit(R10BIO_WriteError, &r10_bio->state);
else { else {
/* Fail the request */
set_bit(R10BIO_Degraded, &r10_bio->state);
r10_bio->devs[slot].bio = NULL; r10_bio->devs[slot].bio = NULL;
to_put = bio; to_put = bio;
dec_rdev = 1; dec_rdev = 1;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册