[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

cdrom read errors.



hi all,

investigating cdrom read errors.

- error only occurs at the very end of the disc
- error occurs wether using dd or cat
- error occurs wether using hdparm or not
- error occurs wether media is mounted or not
- resulting iso seems just fine.
- error seems to occur randomly among discs, but consistently for a single 
disc.

(pts/8)jason@marsala:/tmp$ sdd if=/dev/cdrom of=foo.iso
sdd: Input/output error. Error reading '/dev/cdrom'.
sdd: Read  1116528 records + 0 bytes (total of 571662336 bytes = 558264.00k).
sdd: Wrote 1116528 records + 0 bytes (total of 571662336 bytes = 558264.00k).

(pts/8)jason@marsala:/tmp$ cat /dev/cdrom > foo2.iso 
cat: /dev/cdrom: Input/output error

(pts/8)jason@marsala:/tmp$ mount /mnt/cdrom/
(pts/8)jason@marsala:/tmp$ cat /dev/cdrom > foo3.iso 
cat: /dev/cdrom: Input/output error

after the error:

(pts/8)root@marsala:~$ /sbin/hdparm /dev/cdrom 

/dev/cdrom:
 HDIO_GET_MULTCOUNT failed: Invalid argument
 I/O support  =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 HDIO_GET_NOWERR failed: Invalid argument
 readonly     =  1 (on)
 readahead    =  8 (on)
 HDIO_GETGEO failed: Invalid argument
 busstate     =  1 (on)

after running hdparm.sh:

(pts/8)root@marsala:~$ /sbin/hdparm /dev/cdrom 

/dev/cdrom:
 HDIO_GET_MULTCOUNT failed: Invalid argument
 I/O support  =  0 (default 16-bit)
 unmaskirq    =  1 (on)
 using_dma    =  1 (on)
 keepsettings =  0 (off)
 HDIO_GET_NOWERR failed: Invalid argument
 readonly     =  1 (on)
 readahead    =  8 (on)
 HDIO_GETGEO failed: Invalid argument
 busstate     =  1 (on)

hdparm.sh: (/dev/cdrom is /dev/hdc)

(pts/8)root@marsala:~$ cat /etc/init.d/hdparm.sh 
#! /bin/sh

# hdparm script

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

MAXTOR=/dev/hda
WD=/dev/hdb
DVD=/dev/hdc
BURNER=/dev/hdd

case "$1" in
  start)
        echo -n "Adjusting drive parameters using hdparm... "

        # d1 = dma on
        # c3 = 32bit io w/sync
        # m16 = read upto 16 sectors at a time
        # u1 = unmask other interrupts while processing disk interrupt

        if [ `hostname` == "marsala" ]
        then
            hdparm -d1 -c3 -m16 -u1 $MAXTOR
            hdparm -d1 -c3 -m16 -u1 $WD
            hdparm -d1 -u1 $DVD
            # hdparm -d1 -u1 $BURNER
        fi

        echo "done."
        ;;
  stop)
        ;;
  restart|force-reload)
        ;;
  *)
        ;;
esac

exit 0

anyone have any ideas what is causing this?  my only guess is that the cdrom 
is trying to read past the end of the media?

thanks,
jason pepas



Reply to: