(cc'ing linux-ide) Konstantin Kletschke wrote: > Am 2008-09-01 13:18 +0200 schrieb Tejun Heo: > >>> Hmn, to take my pants down entirely: What is this "EH"? >> libata EH == libatata exception handling. > > Seems this stuff is kinda new since 2.6.25? I think it's more circa 2.6.22 but in my memory terms, which sucks, that's a lifetime before so I don't really remember. :-) >> Can you please apply the attached patch and post the resulting dmesg? > > Of course. Patch applied, here is dmesg output, looks interesting now - > but anything works fine so far. Hmm... someone is scheduling EH incessantly without any error or action set. Can you please try the attached patch? -- tejun
--- drivers/ata/libata-eh.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) Index: tree0/drivers/ata/libata-eh.c =================================================================== --- tree0.orig/drivers/ata/libata-eh.c +++ tree0/drivers/ata/libata-eh.c @@ -671,6 +671,9 @@ static void ata_eh_set_pending(struct at ap->pflags |= ATA_PFLAG_EH_PENDING; + ata_port_printk(ap, KERN_INFO, "XXX EH_SET_PENDING\n"); + dump_stack(); + if (!fastdrain) return; @@ -1077,6 +1080,11 @@ void ata_eh_about_to_do(struct ata_link struct ata_eh_context *ehc = &link->eh_context; unsigned long flags; + if (link) + ata_link_printk(link, KERN_INFO, "XXX about_to_do %x\n", action); + else if (dev) + ata_dev_printk(dev, KERN_INFO, "XXX about_to_do %x\n", action); + spin_lock_irqsave(ap->lock, flags); ata_eh_clear_action(link, dev, ehi, action); @@ -1890,8 +1898,8 @@ static void ata_eh_link_report(struct at nr_failed++; } - if (!nr_failed && !ehc->i.err_mask) - return; + //if (!nr_failed && !ehc->i.err_mask) + // return; frozen = ""; if (ap->pflags & ATA_PFLAG_FROZEN)