On Sat, 6 May 2006 11:00:44 -0500 Michael Halcrow <lkml@xxxxxxxxxx> wrote: > On Fri, May 05, 2006 at 07:21:48PM -0700, Andrew Morton wrote: > > > On Fri, 2006-05-05 at 10:22 -0500, Dave Kleikamp wrote: > > > > I understand this comes from the FiST package. In that code, > > > > there is a comment in one of these functions explaining the > > > > second read. It would be nice to have that comment in here too: > > > > > > > > /* > > > > * call readpage() again if we returned from wait_on_page with a > > > > * page that's not up-to-date; that can happen when a partial > > > > * page has a few buffers which are ok, but not the whole > > > > * page. > > > > */ > ... > > And why doesn't it cause do_generic_mapping_read() and > > page_cache_read() to fail? > > > > This is all raher fishy. > > I asked Erez about this; I will try to accurately summarize his > response. He indicated that, about 5 or so years ago, when ext2/3's > block size was set to 1K or 2K, but the page size was 4K, they found > that it was possible to get a page which had some of the blocks in the > bufcache, while other blocks were not. hm, OK, I'm not sure that Linux buffered file contents in that manner in that timeframe. Maybe it did, before my time.. > Their solution at the time was to just read again, and that seemed to > fix the problem for them. It was not obvious as to why things were > happening that way, and it may be the case that the second read is no > longer necessary in the current kernel. > Yeah, it shouldn't be needed now. It'd be a howler of a bug if it is needed. Note that the pagefault handlers do still do a second readpage(). The comment implies that this is an open-coded attempt to recover from an I/O error. I do recall that a year or so ago we discussed taking out that second readpage attempt, but Linus had good-sounding reasons for keeping it. But I forget what they were. Perhaps he can remind me? - To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html