I've tried, again, to fix my raid array with raidctl -R. I did it on the console port this time so I could capture the output from ddb>

Here is some output:

# raidctl -s raid0
raid0 Components:
           /dev/wd0d: failed
           /dev/wd1d: optimal
No spares.
Parity status: DIRTY
Reconstruction is 100% complete.
Parity Re-write is 100% complete.
Copyback is 100% complete.

So I attempt an inplace  reconstruction of wd0d.

#
# raidctl -R /dev/wd0d raid0
Closing the opened device: /dev/wd0d
About to (re-)open the device for rebuilding: /dev/wd0d
RECON: Initiating in-place reconstruction on
       row 0 col 0 -> spare at row 0 col 0.
Quiescence reached...

I then use raidctl -S to monitor the reconstruction. Things go well until the 48% mark. Then I get:

wd1d: uncorrectable data error reading fsbn 111722176 of 11722176-111722303 (wd1 bn 114343984; cn 113436 tn 7 sn 55), retrying
/wd1: transfer error, downgrading to Ultra-DMA mode 4
wd1(pciide0:1:0): using PIO mode 4, Ultra-DMA mode 4
wd1d: uncorrectable data error reading fsbn 111722176 of 111722176-111722303 (wd1 bn 114343984; cn 113436 tn 7 sn 55), retrying wd1d: uncorrectable data error reading fsbn 111722248 of 111722176-111722303 (wd1 bn 114344056; cn 113436 tn 9 sn 1), retrying wd1d: uncorrectable data error reading fsbn 111722248 of 111722176-111722303 (wd1 bn 114344056; cn 113436 tn 9 sn 1)
raid0: IO Error.  Marking /dev/wd1d as failed.
Recon read failed !
panic: RAIDframe error at line 1518 file /usr/src/sys/dev/raidframe/rf_reconstruct.c
Stopped at      Debugger+0x4:   leave
RUN AT LEAST 'trace' AND 'ps' AND INCLUDE OUTPUT WHEN REPORTING THIS PANIC!

DO NOT EVEN BOTHER REPORTING THIS WITHOUT INCLUDING THAT INFORMATION!

This concerns me because I need wd1d to rebuild my failed wd0d. Any ideas? Drive cables maybe? Any help is greatly appreciated.

Anyway below is the trace and ps from the ddb.


ddb> trace

Debugger(d0642f0d,d0ba1000,d0774c0c,d0ba1000,d0cb4d2c) at Debugger+0x4
panic(d0642ec0,40,d0774c0c,d026e457,d05fde44) at panic+0x63
rf_ReconReadDoneProc(d0cb4d2c,1,1,0,44ba5557) at rf_ReconReadDoneProc+0x1b6
rf_KernelWakeupFunc(d57e8200,ad6ea,787,6befb) at rf_KernelWakeupFunc+0xe2
biodone(d57e8200,9000,100000,d05fde44,636e7520) at biodone+0x88
wddone(d0b82000,d5808000,d0774ddc,d03ed2e0) at wddone+0x7e
wdc_ata_bio_done(d0b7c5a4,d5808000,0,0,a0) at wdc_ata_bio_done+0x5e
wdc_ata_bio_intr(d0b7c5a4,d5808000,1,1) at wdc_ata_bio_intr+0x1a9
wdcintr(d0b7c5a4) at wdcintr+0x8b
Xrecurse_legacy15() at Xrecurse_legacy15+0xb6
apm_cpu_idle(b0,d0644240,d06440a0,7fffffff,d02692e7) at apm_cpu_idle+0x80
idle_loop(d06f28c0,28,0,0,80000000) at idle_loop+0x5
bpendtsleep(d06440a0,4,d0587231,0,0,ffffffff,d05337d7,0) at bpendtsleep
uvm_scheduler(d064409c,3,0,d05337d7,dff0000) at uvm_scheduler+0x6b
check_console(0,0,0,0,0) at check_console

ddb> ps

   PID   PPID   PGRP    UID  S       FLAGS  WAIT       COMMAND
 29631   9527   9527      0  3     0x44184  select     sendmail
  9527  30988   9527      0  3      0x4084  pause      sh
 30988   2589   2589      0  3        0x84  piperd     cron
  5360  19845   5360      0  3      0x4086  nanosleep  raidctl
 13182      0      0      0  3    0x100204  RAIDframe  raid_reconip
 19845      1  19845      0  3      0x4086  pause      ksh
  6511      1   6511      0  3      0x4086  ttyin      getty
 31213      1  31213      0  3      0x4086  ttyin      getty
 18636      1  18636      0  3      0x4086  ttyin      getty
 16125      1  16125      0  3      0x4086  ttyin      getty
  5862      1   5862      0  3      0x4086  ttyin      getty
  2589      1   2589      0  3        0x84  select     cron
 19058      1  19058      0  3        0x84  select     sshd
  7847      1   7847     77  3       0x184  poll       dhcpd
  3822  19592  19592     83  3       0x184  poll       ntpd
 19592      1  19592      0  3        0x84  select     ntpd
  9741   1703   1703     74  3       0x184  bpf        pflogd
  1703      1   1703      0  3        0x84  netio      pflogd
  8078   6713   6713     73  2       0x184             syslogd
  6713      1   6713      0  3        0x84  netio      syslogd
  4673      1   4673      0  3        0x84  mfsidl     mount_mfs
 28531      0      0      0  3    0x100204  rfwcond    raid0
    15      0      0      0  3    0x100204  crypto_wa  crypto
    14      0      0      0  3    0x100204  aiodoned   aiodoned
    13      0      0      0  3    0x100204  syncer     update
    12      0      0      0  3    0x100204  cleaner    cleaner
    11      0      0      0  3    0x100204  reaper     reaper
    10      0      0      0  3    0x100204  pgdaemon   pagedaemon
     9      0      0      0  3    0x100204  pftm       pfpurge
     8      0      0      0  3    0x100204  usbevt     usb3
     7      0      0      0  3    0x100204  usbevt     usb2
     6      0      0      0  3    0x100204  usbevt     usb1
     5      0      0      0  3    0x100204  usbtsk     usbtask
     4      0      0      0  3    0x100204  usbevt     usb0
     3      0      0      0  3    0x100204  apmev      apm0
     2      0      0      0  3    0x100204  kmalloc    kmthread
     1      0      1      0  3      0x4084  wait       init
     0     -1      0      0  3     0x80204  scheduler  swapper

Greg Oster wrote:
"Jeff Quast" writes:

My first few months with raidframe caused many kernel panics. With 30
minutes of parity checking, this was a difficult learning experience.
I was initialy led to beleive that raidframe was hardly stable (and
therfor disabled in GENERIC).

However, as I gained experience with raidctl and raidframe, and traced
the panics to code level, I almost always found the panics were caused
by my misuse or misinterpretation of raidctl(8). A small book could
probobly be written on the many different situations you can find
yourself in with raidframe.

I havn't had a kernel panic for a long time, and have had 3 disks fail
since on a level 5 raid without issue reconstructing, changing
geometry, etc. If memory serves me, I may have reconstructed a mounted
raidset, though given the choice, I certainly wouldn't.


RAIDframe was built to allow reconstructing a mounted RAID set... in fact, it goes to a lot of trouble to allow that to happen properly... The only 'problem' you might notice would be a performance degredation for both the rebuild and any user IO taking place...

All in all, I find kernel panics with raidframe is just its way of
saying "Bad choice of arguments" :)


RAIDframe in OpenBSD is somewhat lax about checking the input provided by raidctl... It works quite well if you don't tell it to do anything it's not expecting :-} (most (all?) of those problems have long since been cleaned up -- unfortunately not in the code base that's in OpenBSD though :( )

Later...

Greg Oster

Reply via email to