Re: [PATCH] md/raid1: add error handling of read error from FailFast device

Started by Jinpu Wang on May 14, 2018

open the first message on its own page

Message details and related content
On Wed, May 9, 2018 at 10:58 AM, Jack Wang [off-list ref] wrote:
quoted hunk
---------- Forwarded message ----------
From: Gioh Kim <redacted>
Date: 2018-05-02 13:08 GMT+02:00
Subject: [PATCH] md/raid1: add error handling of read error from FailFast device
To: shli@kernel.org
抄送: linux-raid@vger.kernel.org, linux-kernel@vger.kernel.org, Gioh Kim
[off-list ref]


Current handle_read_error() function calls fix_read_error()
only if md device is RW and rdev does not include FailFast flag.
It does not handle a read error from a RW device including
FailFast flag.

I am not sure it is intended. But I found that write IO error
sets rdev faulty. The md module should handle the read IO error and
write IO error equally. So I think read IO error should set rdev faulty.

Signed-off-by: Gioh Kim <redacted>
---
 drivers/md/raid1.c | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index e9e3308cb0a7..4445179aa4c8 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -2474,6 +2474,8 @@ static void handle_read_error(struct r1conf
*conf, struct r1bio *r1_bio)
                fix_read_error(conf, r1_bio->read_disk,
                               r1_bio->sector, r1_bio->sectors);
                unfreeze_array(conf);
+       } else if (mddev->ro == 0 && test_bit(FailFast, &rdev->flags)) {
+               md_error(mddev, rdev);
        } else {
                r1_bio->bios[r1_bio->read_disk] = IO_BLOCKED;
        }
--
2.14.1
Patch looks good to me!
Reviewed-by: Jack Wang <redacted>
-- 
Jack Wang
Linux Kernel Developer

ProfitBricks GmbH
Greifswalder Str. 207
D - 10405 Berlin

Tel:       +49 30 577 008  042
Fax:      +49 30 577 008 299
Email:    jinpu.wang@profitbricks.com
URL:      https://www.profitbricks.de

Sitz der Gesellschaft: Berlin
Registergericht: Amtsgericht Charlottenburg, HRB 125506 B
Geschäftsführer: Achim Weiss, Matthias Steinberg, Christoph Steffens
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help