Live CD problems.
dillon at apollo.backplane.com
Mon Jul 23 13:04:53 PDT 2007
Ok, all the live CD problems should now theoretically be fixed. I'm
doing a full nrelease build to test it.
I found numerous additional bugs while tracking down this one,
including problems tracking the open count on the device. This
typically prevented the CD from being ejected. /dev/cd0 also had the
wrong minor number, and the generic disk layer also failed to properly
track opens when an open failed (which I found when I couldn't
eject the CD after trying to open the incorrect /dev/cd0 device).
The main issue was that the CAM layer failed to set the si_iosize_max
field in the device structure. This caused the strategy code to
try to break I/O's down into 0-sized chunks, resulting in an endless
loop and/or panic.
NATA's CAM interface also failed to properly set transfer length
limits based on the DMA transfer limit and instead just used 65535
unconditionally. This resulted in accesses via the SCSI device
(/dev/cd0) potentially making I/O requests that were too large.
More information about the Bugs