Re: IOMEGA IDE ZIP (ATAPI) drive

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

 



Mark Lord wrote:
> Tejun Heo wrote:
> 
>> Mark Lord wrote:
>>
>>> Really?  I didn't notice when libata gained ATAPI-disk support.
>>>
>>> Are you *sure* about that??
>>
>>
>> Not sure sure but almost sure.  :-)  What ide-scsi does is borrowing
>> SCSI mid and high level drivers while using ide as SCSI low level
>> driver.  To SCSI, libata and ide-scsi aren't very different except that
>> libata also exports SBC device to it.  So, if SCSI could handle ATAPI
>> disk via ide-scsi, I don't think there is any reason it can't with
>> libata.
> 
> 
> Okay, I dusted off one of my old (actually, I believe *the oldest*)
> Zip100 drives in the collection, and tried it out here with both
> 2.6.20 and 2.6.21-rc3-git9.   It works mostly fine with each.
> 
> A couple of minor issues, though.
> 
> (1) When ejecting a disk, either with the "eject /dev/sdc" command
> or using the front-panel soft-eject button on the drive,
> I get the following in syslog from libata:
> 
> sdc: Spinning up disk...<3>ata4.00: exception Emask 0x0 SAct 0x0 SErr
> 0x0 action 0x2
>         res 00/00:03:00:00:20/00:00:00:00:00/a0 Emask 0x2 (HSM violation)
> ata4: soft resetting port
> ATA: abnormal status 0x7F on port 0x00010177
> ATA: abnormal status 0x7F on port 0x00010177
> ata4.00: configured for PIO2
> ata4: EH complete

The device status of 0x00 looks strange.
Could you please apply the attached debugging patch for 
clue about what caused the HSM violation, thanks.

> 
> 
> (2) The above log says PIO2, but the IDENTIFY data for this drive,
> which I had to patch the kernel to get (ATAPI ATA_16 support),
> indicates max PIO0 for this unit.  I suppose maybe the chipset
> doesn't go that low, but no big deal since IORDY handshakes it anyway.
> 

I saw this strange behavior, too.
The Promise BIOS identified my zip 100 drive as "PIO 0" during boot,
but libata identified it as "PIO2":

ata4.00: ATAPI, max PIO2, CDB intr
ata4.00: configured for PIO2

--
albert

--- linux-2.6.20.3/drivers/ata/libata-core.c	2007-03-15 12:13:12.000000000 +0800
+++ linux-2.6.20.3-mod/drivers/ata/libata-core.c	2007-03-15 12:13:55.000000000 +0800
@@ -4371,8 +4371,9 @@ int ata_hsm_move(struct ata_port *ap, st
 	WARN_ON(in_wq != ata_hsm_ok_in_wq(ap, qc));
 
 fsm_start:
-	DPRINTK("ata%u: protocol %d task_state %d (dev_stat 0x%X)\n",
-		ap->id, qc->tf.protocol, ap->hsm_task_state, status);
+	if (is_atapi_taskfile(&qc->tf))
+		printk(KERN_ERR "ata%u: protocol %d task_state %d (dev_stat 0x%X)\n",
+		       ap->id, qc->tf.protocol, ap->hsm_task_state, status);
 
 	switch (ap->hsm_task_state) {
 	case HSM_ST_FIRST:
@@ -5091,8 +5092,9 @@ inline unsigned int ata_host_intr (struc
 	struct ata_eh_info *ehi = &ap->eh_info;
 	u8 status, host_stat = 0;
 
-	VPRINTK("ata%u: protocol %d task_state %d\n",
-		ap->id, qc->tf.protocol, ap->hsm_task_state);
+	if (is_atapi_taskfile(&qc->tf))
+		printk(KERN_ERR "ata%u: protocol %d task_state %d\n",
+		       ap->id, qc->tf.protocol, ap->hsm_task_state);
 
 	/* Check whether we are expecting interrupt in this state */
 	switch (ap->hsm_task_state) {

-
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux