On Wed 8 October 2003 05:09, Rob Bogus wrote:
  
  
    Volker Kuhlmann wrote:
    
    
      Esteemed gurus,
if anyone is able to shed some more light on this kernel problem
I'd appreciate it. It's been going on for years.
When reading the whole of an iso9660 filesystem from a cd or
dvd, I often get I/O errors within the last blocks of the
filesystem. Using
      
    
  
  <snip>
  
  
    This is caused by reading past the end of written data. You can
either (a) get the size of the ISO filesystem with cdrecord or
isoinfo, and then use dd to read only what's valid, or complain
to the creator of the CD. There's an option which fixes this,
from memory -dao.
    
  
  
Actually, that doesn't work. I took a random pressed CD, used 
isoinfo to find that there were 160525 blocks on it, and then used 
dd to read the blocks, with bs=2k count=160525. It stops at 160484 
blocks with an IO error every time. Turning off readahead with 
hdparm doesn't make any difference. The interesting thing is, 
160484 = 2 * 2 * 53 * 757. If this is indeed a block readahead 
problem, then the readahead block size is 8k max. (unless it's 
106k, but that seems unlikely to me). However, if it's 8k, then it 
should read at least up to the last 4 blocks, and not stop 41 
blocks before the end.
So, it's either not a block readahead problem, or I'm missing 
something.
  
Well, it could be a bad CD ;-) I just tried using dd on my old burner (real
SCSI), my recent burner (ATAPI+ide-scsi), and the 52x reader only (ATAPI+ide-cd)
and a Redhat 2.4.18-24.8.0 kernel, and no error on any of them. I can't try
a 2.6 kernel without rebooting, but I'll try that at work.