k3b: incorrect list of dvd writing speeds; Was: kern/106432: Record of disks (DVD-R) through the k3b program leads to lag of system

2007-01-12 Thread Andriy Gapon

Guys,

FYI.

 Original Message 
Subject: Re: kern/106432: Record of disks (DVD-R) through the k3b
program leads to lag of system
Date: Fri, 12 Jan 2007 19:57:06 +0200
From: Andriy Gapon [EMAIL PROTECTED]
To: [EMAIL PROTECTED],  [EMAIL PROTECTED],  [EMAIL PROTECTED]


I would like to followup on the portion of this PR that says that k3b
shows incorrect speed list in its Speed drop-down for DVD media.

I have this problem as well and I think that I found a reason. The
following lines from k3b debug output raised my suspicion:

k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
k3b: (K3bDevice::ScsiCommand) transport command ac, length: 12
k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
k3b: (K3bDevice::ScsiCommand) transport command ac, length: 10
k3b: (K3bDevice::Device) /dev/cd0:  Number of supported write speeds via
GET PERFORMANCE: 7
k3b: (K3bDevice::Device) /dev/cd0 : 13854 KB/s
k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s

It seems that the second 0xAC (GET PERFORMANCE) command was sent as
10-byte command instead of correct 12-byte command. I've checked the
sources of k3b and dvd+rw-mediainfo and they both send two 0xAC commands
, first one is to query number of writing profiles and the second one is
to actually get them. Only dvd+rw-mediainfo does it correctly and k3b
does it incorrectly.

The problem is in libk3bdevice/k3bdevice_mmc.cpp file, method
K3bDevice::Device::getPerformance(): the code assumes that some bytes in
cmd[] will survive the first execution and so they do not need to be set
again. This might be an incorrect assumption. So I changed the
corresponding lines so that they look like follows:

int numDesc = (dataLen-8)/16;

cmd[0] = MMC_GET_PERFORMANCE;
cmd[1] = dataType;
cmd[2] = lba  24;
cmd[3] = lba  16;
cmd[4] = lba  8;
cmd[5] = lba;
cmd[8] = numDesc8;
cmd[9] = numDesc;
cmd[10] = type;
cmd[11] = 0; // Necessary to set the proper command length


Now everything is correct:
k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
k3b: (K3bDevice::ScsiCommand) transport command ac, length: 12
k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
k3b: (K3bDevice::ScsiCommand) transport command ac, length: 12
k3b: (K3bDevice::Device) /dev/cd0:  Number of supported write speeds via
GET PERFORMANCE: 7
k3b: (K3bDevice::Device) /dev/cd0 : 22161 KB/s
k3b: (K3bDevice::Device) /dev/cd0 : 22160 KB/s
k3b: (K3bDevice::Device) /dev/cd0 : 16621 KB/s
k3b: (K3bDevice::Device) /dev/cd0 : 16620 KB/s
k3b: (K3bDevice::Device) /dev/cd0 : 11081 KB/s
k3b: (K3bDevice::Device) /dev/cd0 : 11080 KB/s
k3b: (K3bDevice::Device) /dev/cd0 : 5540 KB/s

And I see the correct list in GUI drop-down too.
Before that I had to always set DVD writing speed to Ignore, so that
k3b wouldn't try to force some unnatural speed on my DVD drive.


-- 
Andriy Gapon


-- 
Andriy Gapon
___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: k3b: incorrect list of dvd writing speeds; Was: kern/106432: Record of disks (DVD-R) through the k3b program leads to lag of system

2007-01-12 Thread Andriy Gapon

Looks like maybe I was a little bit too hasty and there is a better
explanation and fix. Please see:
https://bugs.kde.org/show_bug.cgi?id=139985

on 12/01/2007 20:00 Andriy Gapon said the following:
 Guys,
 
 FYI.
 
  Original Message 
 Subject: Re: kern/106432: Record of disks (DVD-R) through the k3b
 program leads to lag of system
 Date: Fri, 12 Jan 2007 19:57:06 +0200
 From: Andriy Gapon [EMAIL PROTECTED]
 To: [EMAIL PROTECTED],  [EMAIL PROTECTED],  [EMAIL PROTECTED]
 
 
 I would like to followup on the portion of this PR that says that k3b
 shows incorrect speed list in its Speed drop-down for DVD media.
 
 I have this problem as well and I think that I found a reason. The
 following lines from k3b debug output raised my suspicion:
 
 k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
 k3b: (K3bDevice::ScsiCommand) transport command ac, length: 12
 k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
 k3b: (K3bDevice::ScsiCommand) transport command ac, length: 10
 k3b: (K3bDevice::Device) /dev/cd0:  Number of supported write speeds via
 GET PERFORMANCE: 7
 k3b: (K3bDevice::Device) /dev/cd0 : 13854 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 Invalid DVD speed: 0 KB/s
 
 It seems that the second 0xAC (GET PERFORMANCE) command was sent as
 10-byte command instead of correct 12-byte command. I've checked the
 sources of k3b and dvd+rw-mediainfo and they both send two 0xAC commands
 , first one is to query number of writing profiles and the second one is
 to actually get them. Only dvd+rw-mediainfo does it correctly and k3b
 does it incorrectly.
 
 The problem is in libk3bdevice/k3bdevice_mmc.cpp file, method
 K3bDevice::Device::getPerformance(): the code assumes that some bytes in
 cmd[] will survive the first execution and so they do not need to be set
 again. This might be an incorrect assumption. So I changed the
 corresponding lines so that they look like follows:
 
 int numDesc = (dataLen-8)/16;
 
 cmd[0] = MMC_GET_PERFORMANCE;
 cmd[1] = dataType;
 cmd[2] = lba  24;
 cmd[3] = lba  16;
 cmd[4] = lba  8;
 cmd[5] = lba;
 cmd[8] = numDesc8;
 cmd[9] = numDesc;
 cmd[10] = type;
 cmd[11] = 0; // Necessary to set the proper command length
 
 
 Now everything is correct:
 k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
 k3b: (K3bDevice::ScsiCommand) transport command ac, length: 12
 k3b: (K3bDevice::openDevice) open device /dev/pass0 succeeded.
 k3b: (K3bDevice::ScsiCommand) transport command ac, length: 12
 k3b: (K3bDevice::Device) /dev/cd0:  Number of supported write speeds via
 GET PERFORMANCE: 7
 k3b: (K3bDevice::Device) /dev/cd0 : 22161 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 : 22160 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 : 16621 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 : 16620 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 : 11081 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 : 11080 KB/s
 k3b: (K3bDevice::Device) /dev/cd0 : 5540 KB/s
 
 And I see the correct list in GUI drop-down too.
 Before that I had to always set DVD writing speed to Ignore, so that
 k3b wouldn't try to force some unnatural speed on my DVD drive.
 
 


-- 
Andriy Gapon
___
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to [EMAIL PROTECTED]