Messages in this thread | | | Date | Tue, 15 May 2007 23:01:24 +0200 | From | Johann Lombardi <> | Subject | Re: Clear PG_error before reading a page |
| |
On Tue, May 15, 2007 at 10:11:44AM -0700, Andrew Morton wrote: > We need to make sure that this page has PG_uptodate cleared, so > that a re-read is forced. And the affected buffer_head, if any, should have > buffer_uptodate() cleared.
ok.
> This change might have horrid interactions with readahead and various > application access patterns: if for some reason a dud sector takes 30 > seconds of driver futzing to return -EIO and someone (application or > kernel) tries to read the same sector tens or hundreds of times, suckiness > ensues. This will be hard to test for.
Yes, I agree. So according to you, what's the best way to address the initial problem (i.e. PG_error never cleared)?
> Most reads don't (or shouldn't) go through block_read_full_page(). > mpage_readpages() does the heavy lifting.
Yes, indeed. However, as soon as a call to get_block() fails, do_mpage_readpage() will call block_read_full_page() which will attach buffers to this page. Consequently, all subsequent reads will go through block_read_full_page().
Johann - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |