Re: Lost DVD-RW [Was Re: 2.6.18-rc5-mm1]

Tejun Heo
2006-09-04T02:42:50Z

[-- Attachment #1: Type: text/plain, Size: 1550 bytes --]

Andrew Morton wrote:
> On Mon, 4 Sep 2006 01:34:43 +0200
> "J.A. Magallón" <jamagallon@ono.com> wrote:
>
>> On Fri, 1 Sep 2006 01:58:18 -0700, Andrew Morton <akpm@osdl.org> wrote:
>>
>>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.18-rc5/2.6.18-rc5-mm1/
>>>
>> Err, my burner got lost this summer ;).
>> This is really not a bug of _this_ kernel, because I noticed it dissapeared
>> with the previous release also, just before going on vacation... But as it
>> did not come back with this relase, I report it here.
>>
>> Last kernel that I have tried that worked was 2.6.18-rc2-mm1. With this
>> relase, it is gone still. dmesg for both kernels is below.
>> The only thing I hace noticed is the different IRQ assignment between
>> them.
>>
>> Any ideas ? TIA.
>>
>> dmesg for rc2-mm1:
>> scsi0 : ata_piix
>> ata1.00: ATAPI, max UDMA/33
>> ata1.01: ATAPI, max MWDMA0, CDB intr
>> ata1.00: configured for UDMA/33
>> ata1.01: configured for PIO3
>> Vendor: HL-DT-ST Model: DVDRAM GSA-4120B Rev: A111
>> Type: CD-ROM ANSI SCSI revision: 05
>> Vendor: IOMEGA Model: ZIP 250 Rev: 51.G
>> Type: Direct-Access ANSI SCSI revision: 05
>>
>> dmesg for rc5-mm1:
>> ata1.00: failed to IDENTIFY (device reports illegal type, err_mask=0x0)

Hmmm... Strange.

The related code hasn't changed much between rc2-mm1 and rc5-mm1. We're
talking about 2.6.18-rc2-mm1 and 2.6.18-rc5-mm1, right?

Can you try the attached patch and report what the kernel says?

--
tejun

[-- Attachment #2: patch --]
[-- Type: text/plain, Size: 544 bytes --]

diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 1c93154..af2fc6f 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1276,6 +1276,8 @@ int ata_dev_read_id(struct ata_device *d
swap_buf_le16(id, ATA_ID_WORDS);

/* sanity check */
+ ata_dev_printk(dev, KERN_INFO, "XXX class=%d is_ata=%d is_cfa=%d\n",
+ class, ata_id_is_ata(id), ata_id_is_cfa(id));
if ((class == ATA_DEV_ATA) != (ata_id_is_ata(id) | ata_id_is_cfa(id))) {
rc = -EINVAL;
reason = "device reports illegal type";