the media check problem
Dennis Bjorklund
db at zigo.dhs.org
Sat Nov 13 18:06:43 UTC 2004
I've been doing some tests to see what works and what does not in
the context of the media check problem. A lot of us have to turn of
dma in order for the media check to work.
This is my current thoughts that I would love to get some comments
about from someone who knows the kernel.
1) It's the read ahead that causes the problem. If one use
hdparm and set the read ahead to 0 on the device, then I have
no problem to verify a cd using dd.
2) When I mount the cd then I can check the md5sum of every file and it is
correct no matter what read ahead is set to.
When a filesystem is mounted we know the exact size of the track. Does
the filesystem layer pass on that information to the block device so
it knows it should not read past the end (even when doing read
ahead)?
If it doesn't, then why doesn't it read past the end when the
fs is mounted?
3) Given that it does work as I guess in point 2, then shouldn't the
read ahead on a cdrom device be 0 until we know the max size to
prevent it from reading past the end? Before we know the end then
it's dangerous to read ahead and we should just read what is asked
for.
4) When DMA is turned off then we read block by block and when we hit
and error the previous blocks are already read in and valid. With DMA
it looks like we tell the drive to read lots of blocks, and then when
it breaks we signal back an error directly and the valid blocks in
the beginning of the DMA request are also lost.
5) Does the read ahead buy us much extra speed when installing? Could it
be set to 0 by anaconda for everyone in order to help those of us
where it is a problem.
6) Is read ahead the problem for everyone or is it just something
that makes it work on my hardware.
My next step should be to read the kernel source to verify the above. So
far it's just guesses based on my intuition of how this is implemented. I
want to present it here first and see what people have to say about it
before I spend days (or weeks) trying to understand the block and ide code
in the kernel.
Maybe someone like Alan Cox (but not limited to him!) will look at this
and say it's stupid, and then I don't need to read the code :-)
--
/Dennis Björklund
More information about the fedora-devel-list
mailing list