Re: Vinum Spielereien

From: Oliver Lehmann <lehmann(at)ans-netz.de>
Date: Sun, 1 Feb 2004 11:24:59 +0100

Bernd Walter wrote:

> Nicht gut.
> Das Dingen muss komplett weg sein.
> Der hat aber gerade mal das pass device vollständig auflösen können.

root(at)nudel /root> camcontrol devlist
[...]
<SEAGATE ST11200N SUN1.05 9500> at scbus1 target 0 lun 0 (pass1,da1)
<SEAGATE ST31200N 8590> at scbus1 target 1 lun 0 (pass2,da2)
<SEAGATE ST31200N 8590> at scbus1 target 2 lun 0 (pass3,da3)
<SEAGATE ST31200N 8590> at scbus1 target 3 lun 0 (pass4,da4)
<Quantum VP32210 81HA> at scbus1 target 5 lun 0 (pass6,da6)
<NEC DSE2100S 0307> at scbus1 target 6 lun 0 (pass7,da7)
[...]
root(at)nudel /root> camcontrol devlist -v
[...]
scbus1 on sym0 bus 0:
<SEAGATE ST11200N SUN1.05 9500> at scbus1 target 0 lun 0 (pass1,da1)
<SEAGATE ST31200N 8590> at scbus1 target 1 lun 0 (pass2,da2)
<SEAGATE ST31200N 8590> at scbus1 target 2 lun 0 (pass3,da3)
<SEAGATE ST31200N 8590> at scbus1 target 3 lun 0 (pass4,da4)
<SEAGATE ST31200N 8590> at scbus1 target 4 lun 0 (da5)
<Quantum VP32210 81HA> at scbus1 target 5 lun 0 (pass6,da6)
<NEC DSE2100S 0307> at scbus1 target 6 lun 0 (pass7,da7)
[...]

Wiso taucht die Platte im normalem devlist nicht auf, im verbose aber?
Sehr komisch - muss ich das verstehen?

ein "camcontrol rescan 1" hat daran auch nichts geaendert (ausser das
pass5 wieder dazukam...)

Jetzt ist mir uebrigens gleich nach nem reboot beim "vinum start" das
System abgestuerzt... mit panic&co.

root(at)nudel include> gdb -k /usr/obj/i386-5.2/usr/src/sys/NUDEL/kernel.debug /usr/tmp/vmcore.2
GNU gdb 5.2.1 (FreeBSD)
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-unknown-freebsd"...
panic: from debugger
panic messages:

---
Fatal trap 18: integer divide fault while in kernel mode
cpuid = 0; apic id = 00
instruction pointer     = 0x8:0xc06a21bb
stack pointer           = 0x10:0xcfb3a950
frame pointer           = 0x10:0xcfb3a9d0
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = interrupt enabled, resume, IOPL = 0
current process         = 811 (vinum)
panic: from debugger
cpuid = 0; 
Fatal trap 3: breakpoint instruction fault while in kernel mode
cpuid = 0; apic id = 00
instruction pointer     = 0x8:0xc067f195
stack pointer           = 0x10:0xcfb3a704
frame pointer           = 0x10:0xcfb3a710
code segment            = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags        = IOPL = 0
current process         = 811 (vinum)
panic: from debugger
cpuid = 0; 
boot() called on cpu#0
Uptime: 2m56s
Dumping 256 MB
 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240
---
Reading symbols from /boot/kernel/if_xl.ko...done.
Loaded symbols for /boot/kernel/if_xl.ko
#0  doadump () at /usr/src/sys/kern/kern_shutdown.c:240
240             dumping++;
(kgdb) list *0xc06a21bb
0xc06a21bb is in __qdivrem (/usr/src/sys/libkern/qdivrem.c:101).
96               */
97              if (vq == 0) {
98                      /* divide by zero. */
99                      static volatile const unsigned int zero = 0;
100     
101                     tmp.ul[H] = tmp.ul[L] = 1 / zero;
102                     if (arq)
103                             *arq = uq;
104                     return (tmp.q);
105             }
(kgdb) list *0xc067f195
0xc067f195 is in Debugger (machine/atomic.h:263).
258     ATOMIC_ASM(add,      long,  "addl %1,%0",  "ir",  v);
259     ATOMIC_ASM(subtract, long,  "subl %1,%0",  "ir",  v);
260     
261     ATOMIC_STORE_LOAD(char, "cmpxchgb %b0,%1", "xchgb %b1,%0");
262     ATOMIC_STORE_LOAD(short,"cmpxchgw %w0,%1", "xchgw %w1,%0");
263     ATOMIC_STORE_LOAD(int,  "cmpxchgl %0,%1",  "xchgl %1,%0");
264     ATOMIC_STORE_LOAD(long, "cmpxchgl %0,%1",  "xchgl %1,%0");
265     
266     #undef ATOMIC_ASM
267     #undef ATOMIC_STORE_LOAD
(kgdb) bt
#0  doadump () at /usr/src/sys/kern/kern_shutdown.c:240
#1  0xc0516c51 in boot (howto=260) at /usr/src/sys/kern/kern_shutdown.c:372
#2  0xc051709f in panic () at /usr/src/sys/kern/kern_shutdown.c:550
#3  0xc044ef62 in db_panic () at /usr/src/sys/ddb/db_command.c:450
#4  0xc044eec2 in db_command (last_cmdp=0xc07149e0, cmd_table=0xc06e7e20, aux_cmd_tablep=0xc06e13f4, aux_cmd_tablep_end=0xc06e13f8)
    at /usr/src/sys/ddb/db_command.c:346
#5  0xc044f005 in db_command_loop () at /usr/src/sys/ddb/db_command.c:472
#6  0xc0452025 in db_trap (type=18, code=0) at /usr/src/sys/ddb/db_trap.c:73
#7  0xc067ee8c in kdb_trap (type=18, code=0, regs=0xcfb3a910) at /usr/src/sys/i386/i386/db_interface.c:171
#8  0xc06950e6 in trap_fatal (frame=0xcfb3a910, eva=0) at /usr/src/sys/i386/i386/trap.c:816
#9  0xc0694ad2 in trap (frame=
      {tf_fs = 24, tf_es = -929759216, tf_ds = -810352624, tf_edi = 1, tf_esi = 0, tf_ebp = -810309168, tf_isp = -810309316, tf_ebx = 4608, tf_edx = 0, tf_ecx = 0, tf_eax = 1, tf_trapno = 18, tf_err = 0, tf_eip = -1066786373, tf_cs = 8, tf_eflags = 66118, tf_esp = 256, tf_ss = -810309260})
    at /usr/src/sys/i386/i386/trap.c:618
#10 0xc06808d8 in calltrap () at {standard input}:94
#11 0xc06a202c in __divdi3 (a=0, b=0) at /usr/src/sys/libkern/divdi3.c:62
#12 0xc04b9d48 in driveio (drive=0xc2df8800, buf=0xc309e000 "", length=65536, offset=4294967296, flag=2) at /usr/src/sys/dev/vinum/vinumio.c:257
#13 0xc04ba791 in daemon_save_config () at /usr/src/sys/dev/vinum/vinumio.c:602
#14 0xc04b7f95 in vinum_daemon () at /usr/src/sys/dev/vinum/vinumdaemon.c:80
#15 0xc04b8390 in vinum_finddaemon () at /usr/src/sys/dev/vinum/vinumdaemon.c:274
#16 0xc04bbaf6 in vinum_super_ioctl (dev=0xc2ddde00, cmd=0, data=0xcfb3ac58 "") at /usr/src/sys/dev/vinum/vinumioctl.c:410
#17 0xc04bb286 in vinumioctl (dev=0x0, cmd=18013, data=0xcfb3ac58 "", flag=3, td=0xc2f59280) at /usr/src/sys/dev/vinum/vinumioctl.c:82
#18 0xc04d640b in spec_ioctl (ap=0xcfb3ac58) at /usr/src/sys/fs/specfs/spec_vnops.c:351
#19 0xc04d5a88 in spec_vnoperate (ap=0x0) at /usr/src/sys/fs/specfs/spec_vnops.c:122
#20 0xc0584831 in vn_ioctl (fp=0xc2e6dbf4, com=18013, data=0xcfb3ac58, active_cred=0xc308f780, td=0xc2f59280) at vnode_if.h:503
#21 0xc054127c in ioctl (td=0xc2f59280, uap=0xcfb3ad14) at /usr/src/sys/sys/file.h:261
#22 0xc06954d0 in syscall (frame=
      {tf_fs = 47, tf_es = 47, tf_ds = 47, tf_edi = -1077941084, tf_esi = -1077941072, tf_ebp = -1077941304, tf_isp = -810308236, tf_ebx = 2, tf_edx = 672941912, tf_ecx = 11, tf_eax = 54, tf_trapno = 12, tf_err = 2, tf_eip = 672427183, tf_cs = 31, tf_eflags = 646, tf_esp = -1077941332, tf_ss = 47})
    at /usr/src/sys/i386/i386/trap.c:1010
#23 0xc068092d in Xint0x80_syscall () at {standard input}:136
---Can't read userspace from dump, or kernel process---
(kgdb) up 21     
#21 0xc054127c in ioctl (td=0xc2f59280, uap=0xcfb3ad14) at /usr/src/sys/sys/file.h:261
261             return ((*fp->f_ops->fo_ioctl)(fp, com, data, active_cred, td));
(kgdb) list
256             void *data;
257             struct ucred *active_cred;
258             struct thread *td;
259     {
260     
261             return ((*fp->f_ops->fo_ioctl)(fp, com, data, active_cred, td));
262     }
263     
264     static __inline int
265     fo_poll(fp, events, active_cred, td)
(kgdb) print *td
$1 = {td_proc = 0xc2f578d4, td_ksegrp = 0xc2cbf600, td_plist = {tqe_next = 0x0, tqe_prev = 0xc2f578e4}, td_kglist = {tqe_next = 0x0, tqe_prev = 0xc2cbf61c}, 
  td_slpq = {tqe_next = 0x0, tqe_prev = 0xc2e2fd28}, td_lockq = {tqe_next = 0x0, tqe_prev = 0xcfb46910}, td_runq = {tqe_next = 0x0, tqe_prev = 0x0}, 
  td_selq = {tqh_first = 0x0, tqh_last = 0x0}, td_turnstile = 0xc2d37e00, td_flags = 65538, td_inhibitors = 0, td_pflags = 0, td_last_kse = 0xc16c8a40, 
  td_kse = 0xc16c8a40, td_dupfd = 0, td_wchan = 0x0, td_wmesg = 0x0, td_lastcpu = 0 '\0', td_oncpu = 0 '\0', td_locks = 0, td_blocked = 0x0, td_ithd = 0x0, 
  td_lockname = 0x0, td_contested = {lh_first = 0xc2d00ac0}, td_sleeplocks = 0x0, td_intr_nesting_level = 0, td_pinned = 0, td_mailbox = 0x0, 
  td_ucred = 0xc308f780, td_standin = 0x0, td_prticks = 0, td_upcall = 0x0, td_sticks = 1, td_uuticks = 0, td_usticks = 0, td_intrval = 0, td_oldsigmask = {
    __bits = {0, 0, 0, 0}}, td_sigmask = {__bits = {0, 0, 0, 0}}, td_siglist = {__bits = {0, 0, 0, 0}}, td_waitset = 0x0, td_umtx = {tqe_next = 0x0, 
    tqe_prev = 0x0}, td_generation = 7, td_base_pri = 160 ' ', td_priority = 20 '\024', td_pcb = 0xcfb3ada0, td_state = TDS_RUNNING, td_retval = {0, 
    672941912}, td_slpcallout = {c_links = {sle = {sle_next = 0x0}, tqe = {tqe_next = 0x0, tqe_prev = 0x0}}, c_time = 0, c_arg = 0x0, c_func = 0, 
    c_flags = 8}, td_frame = 0xcfb3ad48, td_kstack_obj = 0xc2f1dce4, td_kstack = 3484651520, td_kstack_pages = 2, td_altkstack_obj = 0x0, td_altkstack = 0, 
  td_altkstack_pages = 0, td_critnest = 0, td_md = {md_savecrit = 70}, td_sched = 0xc2f593b8}
(kgdb) print *data
$2 = 0 '\0'
(kgdb) print com
$3 = 18013
(kgdb) print active_cred
No symbol "active_cred" in current context.
(kgdb) print *fp
$4 = {f_list = {le_next = 0xc2e76908, le_prev = 0xc2e6c220}, f_type = 1, f_data = 0xc307fa28, f_flag = 3, f_mtxp = 0xc16aee8c, f_ops = 0xc06fe4e0, 
  f_cred = 0xc308f780, f_count = 2, f_vnode = 0xc307fa28, f_offset = 0, f_gcflag = 0, f_msgcount = 0, f_seqcount = 1, f_nextoff = 0}
(kgdb)
Jetzt lief ein "vinum start" wieder...
> Evtl solltest du mal versuchen so eine Platte ohne vinum zu mounten.
> Eigendlich sollte die Platte dann vollständig verschwinden und ein FS
> Zugriff Fehler zurückliefern.
Ja, das passt:
root(at)nudel /root> mount /dev/da5s1d /mnt/tmp/
root(at)nudel /root> df -k /mnt/tmp
/dev/da5s1d    993502        4   914018     0%    /mnt/tmp
Platte ab
root(at)nudel /root> touch /mnt/tmp/1
touch: /mnt/tmp/1: Device not configured
root(at)nudel /root> dmesg
[...]
(da5:sym0:0:4:0): lost device
(da5:sym0:0:4:0): Invalidating pack
"camcontrol devlist" zeigt hier aber auch noch
<SEAGATE ST31200N 8590>            at scbus1 target 4 lun 0 (da5)
Platte wieder ran
root(at)nudel /root> touch /mnt/tmp/1
touch: /mnt/tmp/1: Device not configured
root(at)nudel /root> umount /mnt/tmp/
umount: unmount of /mnt/tmp failed: Resource temporarily unavailable
root(at)nudel /root> dmesg
[...]
fsync: giving up on dirty: 0xc30af71c: tag devfs, type VCHR, usecount 2, writecount 0, refcount 3, flags (VV_OBJBUF), lock type devfs: EXCL (count 1) by thread 0xc2cbeb40
        dev da5s1d
root(at)nudel /root> 
Und jetzt wieder booten um ans device zu kommen? *seufz*
-- 
 Oliver Lehmann
  http://www.pofo.de/
  http://wishlist.ans-netz.de/
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 01 Feb 2004 - 11:30:18 CET

search this site