I came to realize that ejecting my dvd drive automatically resets the using_dma flag. For some time, I had to think to manually re-enable the dma setting if I didn't want to end up burning at 1X in K3B. I eventually found the problem to be happening when using "/dev/dvd" as a parameter to hdparm, but not when using "/dev/hdc".
My drive is an one week old LG HL-DT-ST DVDRAM GSA-H10A. I also have an old Hewlett-Packard CD-Writer Plus 8200 installed as the slave on the same IDE channel. I am running kernel 2.6.15-1.1833_FC4 under Fedora Core 4.
Below is a mini script showing using_dma getting reset immediately after eject. Replace /dev/dvd by /dev/hdc and the problem is gone! Does that ring a bell to anyone?
$ sudo hdparm -c1 -d1 -u1 -a8 -k1 /dev/dvd && hdparm -v /dev/dvd && sudo eject && hdparm -v /dev/dvd && sleep 10 && eject -T && hdparm -v /dev/dvd
/dev/dvd:
setting fs readahead to 8
setting 32-bit IO_support flag to 1
setting unmaskirq to 1 (on)
setting using_dma to 1 (on)
setting keep_settings to 1 (on)
IO_support = 1 (32-bit)
unmaskirq = 1 (on)
using_dma = 1 (on)
keepsettings = 1 (on)
readahead = 8 (on)
/dev/dvd:
IO_support = 1 (32-bit)
unmaskirq = 1 (on)
using_dma = 1 (on)
keepsettings = 1 (on)
readonly = 0 (off)
readahead = 8 (on)
HDIO_GETGEO failed: Invalid argument
/dev/dvd:
IO_support = 1 (32-bit)
unmaskirq = 1 (on)
using_dma = 0 (off)
keepsettings = 1 (on)
readonly = 0 (off)
readahead = 8 (on)
HDIO_GETGEO failed: Invalid argument