[RH 7.2] hda lost interrupt....

Pagina: 1
Acties:

  • blade181
  • Registratie: Januari 2001
  • Laatst online: 17-04 07:52

blade181

Cra-cra-cracker?

Topicstarter
Linux server opgezet en ongeveer 110 dagen onafgebroken aan laten staan....

Krijg ik vandaag zo'n melding (x 1000) ik had het nagevraagd maar ze wisten niet veel (de computerstore), wat houdt dit in...

Iets te maken met de aansturing van de harde schijf??
Wie kan mij helpen...

Another white boy in this movie? Damn!


  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Ik neem aan de het een kernel oops is. In dat geval zou het wel eens een kapotte disk/diskcontroller kunnen zijn.
Please supply more information :)

  • blade181
  • Registratie: Januari 2001
  • Laatst online: 17-04 07:52

blade181

Cra-cra-cracker?

Topicstarter
Maxtor schijfje 20 gb 5400 tr. Amd Athlon 1200 Asus KT133A mobo, ongeveer een half jaartje oud nooit problemen meegehad.

Wat heb je nog meer nodig....

Another white boy in this movie? Damn!


  • XTerm
  • Registratie: Juli 2001
  • Laatst online: 10-06-2025
Een dmesg en een kernel log.

Verwijderd

in /usr/src/linux/drivers/ide/ide.c zit een functie ide_timer_expiry
Dit bied misschien wat info, dit is namelijk het stuk dat die error produceert.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/*
 * ide_timer_expiry() is our timeout function for all drive operations.
 * But note that it can also be invoked as a result of a "sleep" operation
 * triggered by the mod_timer() call in ide_do_request.
 */
void ide_timer_expiry (unsigned long data)
{
    ide_hwgroup_t   *hwgroup = (ide_hwgroup_t *) data;
    ide_handler_t   *handler;
    ide_expiry_t    *expiry;
     unsigned long  flags;
    unsigned long   wait;

    spin_lock_irqsave(&io_request_lock, flags);
    del_timer(&hwgroup->timer);

    if ((handler = hwgroup->handler) == NULL) {
        /*
         * Either a marginal timeout occurred
         * (got the interrupt just as timer expired),
         * or we were "sleeping" to give other devices a chance.
         * Either way, we don't really want to complain about anything.
         */
        if (hwgroup->sleeping) {
            hwgroup->sleeping = 0;
            hwgroup->busy = 0;
        }
    } else {
        ide_drive_t *drive = hwgroup->drive;
        if (!drive) {
            printk("ide_timer_expiry: hwgroup->drive was NULL\n");
            hwgroup->handler = NULL;
        } else {
            ide_hwif_t *hwif;
            ide_startstop_t startstop;
            if (!hwgroup->busy) {
                hwgroup->busy = 1;  /* paranoia */
                printk("%s: ide_timer_expiry: hwgroup->busy was 0 ??\n", drive->name);
            }
            if ((expiry = hwgroup->expiry) != NULL) {
                /* continue */
                if ((wait = expiry(drive)) != 0) {
                    /* reset timer */
                    hwgroup->timer.expires  = jiffies + wait;
                    add_timer(&hwgroup->timer);
                    spin_unlock_irqrestore(&io_request_lock, flags);
                    return;
                }
            }
            hwgroup->handler = NULL;
            /*
             * We need to simulate a real interrupt when invoking
             * the handler() function, which means we need to globally
             * mask the specific IRQ:
             */
            spin_unlock(&io_request_lock);
            hwif  = HWIF(drive);
#if DISABLE_IRQ_NOSYNC
            disable_irq_nosync(hwif->irq);
#else
            disable_irq(hwif->irq); /* disable_irq_nosync ?? */
#endif /* DISABLE_IRQ_NOSYNC */
            __cli();    /* local CPU only, as if we were handling an interrupt */
            if (hwgroup->poll_timeout != 0) {
    startstop = handler(drive);
            } else if (drive_is_ready(drive)) {
                if (drive->waiting_for_dma)
                    (void) hwgroup->hwif->dmaproc(ide_dma_lostirq, drive);
                (void)ide_ack_intr(hwif);
                printk("%s: lost interrupt\n", drive->name);
                startstop = handler(drive);
            } else {
                if (drive->waiting_for_dma) {
                    startstop = ide_stopped;
                    ide_dma_timeout_retry(drive);
                } else
                    startstop = ide_error(drive, "irq timeout", GET_STAT());
            }
            set_recovery_timer(hwif);
            drive->service_time = jiffies - drive->service_start;
            enable_irq(hwif->irq);
            spin_lock_irq(&io_request_lock);
            if (startstop == ide_stopped)
                hwgroup->busy = 0;
        }
    }
    ide_do_request(hwgroup, 0);
    spin_unlock_irqrestore(&io_request_lock, flags);
}

  • blade181
  • Registratie: Januari 2001
  • Laatst online: 17-04 07:52

blade181

Cra-cra-cracker?

Topicstarter
En die moet ik compilen...?
En daarna uitvoeren....
Ik heb dit nog nooit meegemaakt, misschien kunnen jullie precies vertellen wat ik daarmee moet doen...

Another white boy in this movie? Damn!


  • PipoDeClown
  • Registratie: September 2000
  • Niet online

PipoDeClown

Izze Zimpell

Op vrijdag 17 mei 2002 08:44 schreef blade181 het volgende:
En die moet ik compilen...?
En daarna uitvoeren....
Ik heb dit nog nooit meegemaakt, misschien kunnen jullie precies vertellen wat ik daarmee moet doen...
Nee joh, dat is toch al gebeurd anders zie je de foutmelding toch niet?

Doet die harde schijf het nog? Krijg je nog steeds die meldingen? Kwamen de meldingen bij veel hd-activiteit of juist in idle?

God weet alles, want hij is lid van de Mosad. To protect your freedom i will take that away from you. Mijn drankgebruik heeft ernstig te lijden onder mijn gezondheid.


  • blade181
  • Registratie: Januari 2001
  • Laatst online: 17-04 07:52

blade181

Cra-cra-cracker?

Topicstarter
Ik heb op Reset gedrukt, de pc starte weer op laadde alle apparaten, filesystems en services. /boot heb ik via fsck.ext2 gecontroleerd en was clean. De root heb ik nog niet gecontroleerd omdat er belangrijke data opstaat (voor zover). Deze is Ext3. Het enige rare is dat ondanks dat alle services aanstaan en goed geconfigureerd zijn het gewoon niet doen. Daaronder versta ik telnet, dns, dhcp, samba en ftp. Dit snap ik niet helemaal....

Verder heb ik nog niet de tijd gehad om er verder op in te gaan....

Oh ja en ik weet niet of deze idle of bezig was...

Staat er in die file of in die foutmelding een datum en tijd bij zodat ik dat kan controleren?

Another white boy in this movie? Damn!


  • deadinspace
  • Registratie: Juni 2001
  • Laatst online: 16:08

deadinspace

The what goes where now?

Op vrijdag 17 mei 2002 09:23 schreef blade181 het volgende:
Ik heb op Reset gedrukt, de pc starte weer op laadde alle apparaten, filesystems en services.
Hij hing toen je die errors kreeg? Dat is niet goed...
Het enige rare is dat ondanks dat alle services aanstaan en goed geconfigureerd zijn het gewoon niet doen. Daaronder versta ik telnet, dns, dhcp, samba en ftp. Dit snap ik niet helemaal....
Kun je de machine wel pingen?
Staat er in die file of in die foutmelding een datum en tijd bij zodat ik dat kan controleren?
Nou, ga kijken :)

  • [Yellow]
  • Registratie: December 2000
  • Niet online
En als je de machine echt uitzet en weer aan? Doet ie het dan wel weer?

Als dat zo is heb je dus idd een HD probleem, hadden wij ook op het werk, maar dan met een seagate 6.4Gb

  • Aetje
  • Registratie: September 2001
  • Laatst online: 18-12-2025

Aetje

Troubleshooting met HAMERRR

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (hwgroup->poll_timeout != 0) {
    startstop = handler(drive);
            } else if (drive_is_ready(drive)) {
                if (drive->waiting_for_dma)
                    (void) hwgroup->hwif->dmaproc(ide_dma_lostirq, drive);
                (void)ide_ack_intr(hwif);
                printk("%s: lost interrupt\n", drive->name);
                startstop = handler(drive);
            } else {
                if (drive->waiting_for_dma) {
                    startstop = ide_stopped;
                    ide_dma_timeout_retry(drive);
                } else
                    startstop = ide_error(drive, "irq timeout", GET_STAT());
            }

Als ik dit goed lees treed de melding op wanneer:
- Drive status ready EN Timeout occured EN niet aan het wachten op een DMA transfer. Een PIO timeout dus, waarschijnlijk het gevolg van een spinup (terug van sleepstand?), of een defect aan de harddisk waardoor deze in het geheel niet meer reageert op het systeem (controller failure). In jouw geval is het laatste waarschijnlijk.

Forget your fears...
...and want to know more...

Pagina: 1