[Bugme-new] [Bug 10887] New: Kernel report fake device busy intermittently

bugme-daemon at bugzilla.kernel.org bugme-daemon at bugzilla.kernel.org
Mon Jun 9 03:41:03 PDT 2008


http://bugzilla.kernel.org/show_bug.cgi?id=10887

           Summary: Kernel report fake device busy intermittently
           Product: Drivers
           Version: 2.5
     KernelVersion: 2.6.25
          Platform: All
        OS/Version: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: Other
        AssignedTo: drivers_other at kernel-bugs.osdl.org
        ReportedBy: standby24x7 at gmail.com


Distribution: RHEL4 + vanilla kernel (2.6.25)
Hardware Environment:TEAC DV-W28ECW
Software Environment:
Problem Description: When I access /proc/ide/hda/identify,
following error is seen intermittently.

 kernel: hda: task_in_intr: status=0xd0 { Busy }
 kernel: hda: task_in_intr: error=0xd0LastFailedSense 0x0d

Steps to reproduce:
# cat /proc/ide/hda/identify

This symptom occured very rare.
(ex) 22 times in 60000 access.

Analyze:
After DVD drive return the identify data, the linux kernel
wait 1ms to see if the drive status back to "Ready".
But this TEAC DV-W28ECW drive, average retry count was 22 times.
But in some cases, it exceed the 1ms (100 times), but it just 
takes a bit longer time... 6m sec. 

drivers/ide/ide-taskfile.c
static u8 wait_drive_not_busy(ide_drive_t *drive)
{
        int retries;
        u8 stat;

        /*
         * Last sector was transfered, wait until drive is ready.
         * This can take up to 10 usec, but we will wait max 1 ms.
         */
        for (retries = 0; retries < 100; retries++) {
                stat = ide_read_status(drive);

                if (stat & BUSY_STAT)
                        udelay(10);
                else
                        break;
        }

        if (stat & BUSY_STAT)
                printk(KERN_ERR "%s: drive still BUSY!\n", drive->name);

        return stat;
}


>         * Last sector was transfered, wait until drive is ready.
>         * This can take up to 10 usec, but we will wait max 1 ms.

This part is not documented within ATAPI specification.
So the Drive vender never take care of the retry.
In order to support some corner cases drive, I expect retry count 
in the loop need to be adjustable by /proc or /sys.
Then just set the same value, 100 as a default.


-- 
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


More information about the Bugme-new mailing list