Re: Clear PG_error before reading a page

2007-05-29 Thread Johann Lombardi
On Thu, May 17, 2007 at 09:47:30AM -0700, Andrew Morton wrote: > So running ioctl(BLKFLSBUF) against the device will fix things up? No, 'blockdev --flushbufs /dev/sdb' doesn't help. > Perhaps not, and we should invalidate all the file data as well. The > only ways we have of doing that are umount

Re: Clear PG_error before reading a page

2007-05-17 Thread Andrew Morton
On Thu, 17 May 2007 13:42:50 +0200 Johann Lombardi <[EMAIL PROTECTED]> wrote: > > What is the actual real-world operational scenario here? Would it be a > > hotplugged disk? A transient network failure in a SAN? IOW, is it > > something from which the kernel should automatically recover, or it

Re: Clear PG_error before reading a page

2007-05-17 Thread Johann Lombardi
On Wed, May 16, 2007 at 09:12:17AM -0700, Andrew Morton wrote: > > Basically, my problem is that afterwards, when the device no longer returns > > any errors, the PG_error flag is never cleared and, as a result, I keep > > getting -EIO. That's the problem I'd like to address. > > > > hm, OK. So,

Re: Clear PG_error before reading a page

2007-05-16 Thread Andrew Morton
On Wed, 16 May 2007 17:39:19 +0200 Johann Lombardi <[EMAIL PROTECTED]> wrote: > On Tue, May 15, 2007 at 02:23:39PM -0700, Andrew Morton wrote: > > > Yes, indeed. However, as soon as a call to get_block() fails, > > > do_mpage_readpage() will call block_read_full_page() which will attach > > > buff

Re: Clear PG_error before reading a page

2007-05-16 Thread Nick Piggin
Johann Lombardi wrote: On Tue, May 15, 2007 at 02:23:39PM -0700, Andrew Morton wrote: If get_block() failed then we don't know what blocks to read to bring this page uptodate, so the pagecache page should remain in state !PageUptodate(), !PageError(). But then, we shouldn't have populated pag

Re: Clear PG_error before reading a page

2007-05-16 Thread Johann Lombardi
On Tue, May 15, 2007 at 02:23:39PM -0700, Andrew Morton wrote: > > 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_ful

Re: Clear PG_error before reading a page

2007-05-15 Thread Andrew Morton
On Tue, 15 May 2007 23:01:24 +0200 Johann Lombardi <[EMAIL PROTECTED]> wrote: > 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 > > bu

Re: Clear PG_error before reading a page

2007-05-15 Thread Johann Lombardi
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 readah

Re: Clear PG_error before reading a page

2007-05-15 Thread Andrew Morton
On Tue, 15 May 2007 16:37:26 +0200 Johann Lombardi <[EMAIL PROTECTED]> wrote: > We've observed that transient disk errors can result in persistent I/O issues > at the filesystem level. I can at least put forward the problem with ext2/ext3 > and scsci_debug. > > Here are the steps to reproduce: >