Modify read error handle for RAID-4,5,6.
cover Modify read error handle for RAID-4,5,6.
When RAID-4,5,6 degraded and met read-error, it will eject the rdev.And then the RAID will fail and lost data.Because the function of set-badsector,when this occur,it will set-badsector,not ejecting the rdev.
When RAID-4,5,6 met read-error, it will re-write if RAID was not degrade.But if re-write error,it will eject the rdev and RAID will degrade and it will take too long time for recoverying.So I add judgement for controling how may re-write-error can eject the rdev.
I do those for flexible controling the read-error for different situation.
majianpeng (2):
md/raid456: When readed error and raid was degraded,it try to
set badsector, not ejecting the rdev.
md/raid456:Add interface for contorling eject rdev when re-write
failed.
drivers/md/md.c | 35 +++++++++++++++++++++++++++++++++++ drivers/md/md.h | 2 ++ drivers/md/raid5.c | 28 +++++++++++++++++++--------- 3 files changed, 56 insertions(+), 9 deletions(-)
Signature · 5 lines
1.7.5.4 -------------- majianpeng 2012-05-26
Quoted 10 lines · On Sat, 26 May 2012 10:52:50 +0800 "majianpeng" <[email protected]> wrote:
When RAID-4,5,6 degraded and met read-error, it will eject the rdev.And then the RAID will fail and lost data.Because the function of set-badsector,when this occur,it will set-badsector,not ejecting the rdev.
When RAID-4,5,6 met read-error, it will re-write if RAID was not degrade.But if re-write error,it will eject the rdev and RAID will degrade and it will take too long time for recoverying.So I add judgement for controling how may re-write-error can eject the rdev.I do those for flexible controling the read-error for different situation.
Thanks.
Quoted 4 lines
majianpeng (2):
md/raid456: When readed error and raid was degraded,it try to
set badsector, not ejecting the rdev.
I've applied this one. I also added 'set_bad = 1' in the case where the re-write failed.
Quoted 2 lines
md/raid456:Add interface for contorling eject rdev when re-write
failed.
I haven't applied this. I'm not entirely sure what the point of counting the errors was, but I don't think it is necessary.
Thanks,
NeilBrown
Quoted 6 lines
drivers/md/md.c | 35 +++++++++++++++++++++++++++++++++++ drivers/md/md.h | 2 ++ drivers/md/raid5.c | 28 +++++++++++++++++++--------- 3 files changed, 56 insertions(+), 9 deletions(-)
On 2012-06-27 12:32 NeilBrown <[email protected]> Wrote:
Quoted 20 lines · On Sat, 26 May 2012 10:52:50 +0800 "majianpeng" <[email protected]> wrote:
Quoted 11 lines
When RAID-4,5,6 degraded and met read-error, it will eject the rdev.And then the RAID will fail and lost data.Because the function of set-badsector,when this occur,it will set-badsector,not ejecting the rdev.
When RAID-4,5,6 met read-error, it will re-write if RAID was not degrade.But if re-write error,it will eject the rdev and RAID will degrade and it will take too long time for recoverying.So I add judgement for controling how may re-write-error can eject the rdev.I do those for flexible controling the read-error for different situation.
Thanks.
Quoted 4 lines
majianpeng (2):
md/raid456: When readed error and raid was degraded,it try to
set badsector, not ejecting the rdev.
Quoted 8 lines
I've applied this one. I also added '
set_bad= 1' in the case where the re-write failed.Quoted 2 lines
md/raid456:Add interface for contorling eject rdev when re-write
failed.I haven't applied this. I'm not entirely sure what the point of counting the errors was, but I don't think it is necessary.
Using raid456,the first object is to protect data.But in some situation, the user can endure lost some data instead of raid degraed or failed.
After introduce the badblocks, I think md-driver should do flexible controling for error.The controling can control by different user for different requirment.
Quoted 13 lines
Thanks,
NeilBrownQuoted 6 lines
drivers/md/md.c | 35 +++++++++++++++++++++++++++++++++++ drivers/md/md.h | 2 ++ drivers/md/raid5.c | 28 +++++++++++++++++++--------- 3 files changed, 56 insertions(+), 9 deletions(-)
Quoted 27 lines · On Wed, 27 Jun 2012 14:03:55 +0800 majianpeng <[email protected]> wrote:
On 2012-06-27 12:32 NeilBrown <[email protected]> Wrote:
Quoted 26 lines · On Sat, 26 May 2012 10:52:50 +0800 "majianpeng" <[email protected]> wrote:
Quoted 11 lines
When RAID-4,5,6 degraded and met read-error, it will eject the rdev.And then the RAID will fail and lost data.Because the function of set-badsector,when this occur,it will set-badsector,not ejecting the rdev.
When RAID-4,5,6 met read-error, it will re-write if RAID was not degrade.But if re-write error,it will eject the rdev and RAID will degrade and it will take too long time for recoverying.So I add judgement for controling how may re-write-error can eject the rdev.I do those for flexible controling the read-error for different situation.
Thanks.
Quoted 4 lines
majianpeng (2):
md/raid456: When readed error and raid was degraded,it try to
set badsector, not ejecting the rdev.I've applied this one. I also added '
set_bad= 1' in the case where the re-write failed.Quoted 2 lines
md/raid456:Add interface for contorling eject rdev when re-write
failed.
Quoted 6 lines
Quoted 2 lines
I haven't applied this. I'm not entirely sure what the point of counting the errors was, but I don't think it is necessary.
Using raid456,the first object is to protect data.But in some situation, the user can endure lost some data instead of raid degraed or failed.
After introduce the badblocks, I think md-driver should do flexible controling for error.The controling can control by different user for different requirment.
I cannot see the point of that control though.
Sure you *always* want to record a bad block if possible, if the alternative is ejecting the whole device?
I don't see where the choice would be between "lost data" or "degraded array".
Maybe if the failing device caused large delays then you want to eject it soon rather than struggling on with it. However my belief is that if you don't want long delays, then you should tell the device to fail rather than impose long delays. It is not something that md should care about.
So: still a little confused.
NeilBrown