Re: Re: fr1-2.16 patch for 2.6.10 kernel
"Peter T. Breuer" <[email protected]>
| Newsgroups | gmane.linux.enbd.general |
|---|---|
| Message-ID | <[email protected]> |
"Also sprach denis bonnenfant:"
> >> #ifdef CONFIG_MD_RAID1_ROBUST_READ
> >> mdk_rdev_t *rdev = *rdevp;
> >> #endif /* CONFIG_MD_RAID1_READ_WRITE_CORRECT */
> >
> >
> > Sure. No problem. I'm worried about the warnings, though! There should
> > be none.
> Thanks for your comments, I'm going to work on it this afternoon
Did you make any progress? I've just taken a look at 2.6.10 out of
curiousity, and the map() call that told the raid1d thread which disk
to use next has been replaced by a call to read_balance():
- bio = r1_bio->bios[r1_bio->read_disk];
- if ((disk=map(mddev, &rdev)) == -1) {
- printk(KERN_ALERT "raid1: %s: unrecoverable I/O"
+ bio = r1_bio->bios[r1_bio->read_disk];
+ if ((disk=read_balance(conf, r1_bio)) == -1) {
+ printk(KERN_ALERT "raid1: %s: unrecoverable I/O"
Now I think the easiest thing to do would be to back out this new
conflation of functionalities and go back to calling "map" here instead
of "read_balance". Who cares about that balance stuff since it looks
pretty whacko to me anyway and we're doing the raid1d thread in the
background at low priority anyhow.
However I don't think we have rdev at this point in the new code, so we
can't just call map(mddev, &rdev) ... grr, but neither did we in the
original patch, so that patch needs patching. How the heck did we ever
get the original disk? Anyway,we can get it for the moment as
rdev = conf->mirrors[r1_bio->read_disk].rdev;
and then call map:
bio = r1_bio->bios[r1_bio->read_disk];
if ((disk=map(mddev, &rdev)) == -1) {
printk(KERN_ALERT "raid1: %s: unrecoverable I/O"
so that looks fixed.
Peter