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