this happens on kernel 2.6.9-55, but seems even 2.6.9-67.0.20 has this problem too. the problem is in function fs/buffer.c block_read_full_page(), 1 if (iblock < lblock) { 2 if (get_block(inode, iblock, bh, 0)) 3 SetPageError(page); 4 } 5 if (!buffer_mapped(bh)) { 6 void *kaddr = kmap_atomic(page, KM_USER0); 7 memset(kaddr + i * blocksize, 0, blocksize); 8 flush_dcache_page(page); 9 kunmap_atomic(kaddr, KM_USER0); 10 set_buffer_uptodate(bh); 11 continue; 12 } when the system specific get_block() fails and buffer head (bh) is not mapped, it comes to line 10, the bh is set as uptodate (with page in error in line 3). when another readpage comes, seeing the bh is uptodate it ignores that bh so the bh never has a chance to run a get_block() on. I made a fix, that's changing 10 set_buffer_uptodate(bh); 11 continue; to 10 if (!PageError(page)) 11 set_buffer_uptodate(bh); 12 continue; is this patch ok?
no updates?
Created attachment 311347 [details] patch for block_read_full_page this patch fixes problem when FS specific get_block() returns error.
please have this patch included in next 2.6.9 kernel release.
Moving bug to kernel component so that it gets the attention from the correct team. Read ya, Phil
This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux maintenance release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Update release for currently deployed products. This request is not yet committed for inclusion in an Update release.
Updating PM score.
Committed in 78.9.EL . RPMS are available at http://people.redhat.com/vgoyal/rhel4/
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2009-1024.html