About raid5 read error handle when raid5 was degraded.
Hi all:
I readed the latest code in function :
raid5_end_read_request():
Quoted 9 lines
Quoted 9 lines
else if (conf->mddev->degraded >= conf->max_degraded) printk_ratelimited( KERN_WARNING "md/raid:%s: read error not correctable " "(sector %llu on %s).\n", mdname(conf->mddev), (unsigned long long)(sh->sector + rdev->data_offset), bdn);
If this occur,then exec md_error().In md_error(), remove this disk. The raid5 will fail and lost all data.
Why do call rdev_set_badsector() for this situation?
Thanks!
--------------
majianpeng
2012-05-21
Quoted 14 lines · On Mon, 21 May 2012 18:47:58 +0800 "majianpeng" <[email protected]> wrote:
Hi all:
I readed the latest code in function :
raid5_end_read_request():Quoted 9 lines
Quoted 9 lines
else if (conf->mddev->degraded >= conf->max_degraded) printk_ratelimited( KERN_WARNING "md/raid:%s: read error not correctable " "(sector %llu on %s).\n", mdname(conf->mddev), (unsigned long long)(sh->sector + rdev->data_offset), bdn);
Quoted 4 lines
If this occur,then exec md_error().In
md_error(), remove this disk. The raid5 will fail and lost all data.
Why do callrdev_set_badsector()for this situation?
You are probably right - rdev_set_badblocks should probably be called there. I've added it to my list of issues to look at when I get a chance.
Thanks,
NeilBrown