Re: FYI: BUG in SATA Promise 300 TX4 (2.6.24 - 2.6.27-3) w/Linux

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

 



Peter Favrholdt writes:
 > Hi Tejun and list,
 > 
 > Tejun Heo wrote:
 > > COMRESETs are failing with EBUSY while ata_sff_check_ready() is
 > > returning ENODEV.  Hmmm... Does the attached patch change anything?
 > 
 > patching file drivers/ata/sata_promise.c
 > Hunk #1 succeeded at 707 (offset -2 lines).
 > 
 > Yes, it actually helped. Tested it twice and both times the following 
 > happened:
 > 
 > 1. started the dd's from all four drives
 > 
 > 2. /dev/sda fails after a while as usual
 > 
 > 3. two hardresets happen on sda - the second limits the link to 1.5Gbps
 > 
 > 4. dd continues without hickups (and when completed normally I started 
 > yet another dd test which ran to completion without any errors).
 > 
 > So at first error the hardreset kicks in and saves the day (and 
 > downgrades to 1.5Gbps which prevents the problem from happening in my 
 > setup).
 > 
 > Thanks a lot!

Interesting.

Tejun, what's the functional difference between the original
sata reset method and the one you changed it to?

 > [  649.991712] ata1: hard resetting link
 > [  650.500230] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
 > [  650.641824] ata1.00: configured for UDMA/133
 > [  650.642194] ata1: limiting SATA link speed to 1.5 Gbps
 > [  650.642200] ata1: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0xf t4
 > [  650.642202] ata1: hotplug_status 0x80
 > [  650.642252] ata1: hard resetting link
 > [  651.550344] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310)
 > [  651.700416] ata1.00: configured for UDMA/133
 > [  651.700678] ata1: exception Emask 0x10 SAct 0x0 SErr 0x0 action 0x9 t3
 > [  651.700681] ata1: hotplug_status 0x80

These hotplug_status things worry me. Hard resets trigger
hotplug events, but all recent kernels should disable them
in ->freeze. This used to be the case.

Either libata isn't freezing the port before the reset,
or ->freeze isn't marking the port properly causing the
interrupt handler to interpret (silent) hotplug status bits
when it shouldn't, or (horrors) ->freeze isn't working any more.

Stray hotplug events prolong EH handling sequences and can
even cause port disabling due to EH failures.

/Mikael
--
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