Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 12 Aug 2003 11:57:14 +0400 (MSD)
From:      Dmitry Morozovsky <marck@rinet.ru>
To:        "Greg 'groggy' Lehey" <grog@freebsd.org>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: vinum (root on vinum too) throw_rude_remark crash: endless loop
Message-ID:  <20030812114228.M64103@woozle.rinet.ru>
In-Reply-To: <20030812110255.S64103@woozle.rinet.ru>
References:  <20030811192306.E39447@woozle.rinet.ru> <20030812014822.GM803@wantadilla.lemis.com> <20030812110255.S64103@woozle.rinet.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 12 Aug 2003, Dmitry Morozovsky wrote:

DM> Now, for the source of panic. I *think* this is comething related to config
DM> consistency checker. BTW, what is proposed "correct" way to delete a volume? I
DM> was pushed to user 'rm -rf volname', and supposedly this was the problem; as
DM> far as I remember the config raght after crash recovery (unfortunately, I did
DM> not write it in details), there were volume intersection:
DM>
DM> drive wd16-0b device /dev/ad0ds1a
DM> drive wd16-1b device /dev/ad2ds1a
DM> drive wd16-alpha device /dev/ad0hs1a
DM> drive wd16-beta device /dev/ad2hs1a
DM> volume r
DM> volume usr
DM> volume var
DM> volume obj
DM> volume lh
DM> volume bsd
DM> volume bk0
DM> volume bk1
DM> ...
DM> (all of them are just plain mirrors). I did 'rm -rf bk1', then create 1+0
DM> stripe-mirrored volume for testing. It has been successfully created, then I
DM> rebooted (forgot to add ad1h and ad3h to vinum.drives), and then stuck as
DM> described before. The problem seems to be that when I read config after
DM> recovery, there were _both_ newly created test volume _and_ bk1.

Well, I found this inconsistent configuration in serial console logs (luckily
me having freshly installed conserver-com! ;-)

This will be rather long message, sorry.


p is test volume, bk2 has been created to temporary hold bk1's content.

# vinum printconfig^M
# Vinum configuration of , saved at Mon Aug 11 20:44:26 2003
drive wd16-0b device /dev/ad0ds1a
drive wd16-1b device /dev/ad2ds1a
drive wd16-beta device /dev/ad2hs1a
drive seag80 device /dev/ad1hs1a
drive ibm60 device /dev/ad3hs1a
drive wd16-alpha device /dev/ad0hs1a
volume r
volume usr
volume var
volume obj
volume swap
volume lh
volume bsd
volume bk0
volume p
volume bk2
volume bk1
plex name r.p0 org concat vol r
plex name r.p1 org concat vol r
plex name usr.p0 org concat vol usr
plex name usr.p1 org concat vol usr
plex name var.p0 org concat vol var
plex name var.p1 org concat vol var
plex name obj.p0 org concat vol obj
plex name obj.p1 org concat vol obj
plex name swap.p0 org striped 512s vol swap
plex name lh.p0 org concat vol lh
plex name lh.p1 org concat vol lh
plex name bsd.p0 org concat vol bsd
plex name bsd.p1 org concat vol bsd
plex name bk0.p0 org concat vol bk0
plex name bk0.p1 org concat vol bk0
plex name p.p0 org striped 513s vol p
plex name p.p1 org striped 513s vol p
plex name bk2.p0 org concat vol bk2
plex name bk2.p1 org concat vol bk2
plex name bk1.p0 org concat vol bk1
plex name bk1.p1 org concat vol bk1
sd name r.p0.s0 drive wd16-0b plex r.p0 len 262144s driveoffset 265s plexoffset 0s
sd name r.p1.s0 drive wd16-1b plex r.p1 len 262144s driveoffset 265s plexoffset 0s
sd name usr.p0.s0 drive wd16-0b plex usr.p0 len 786112s driveoffset 262409s plexoffset 0s
sd name usr.p1.s0 drive wd16-1b plex usr.p1 len 786112s driveoffset 262409s plexoffset 0s
sd name var.p0.s0 drive wd16-alpha plex var.p0 len 2097152s driveoffset 265s plexoffset 0s
sd name var.p1.s0 drive wd16-beta plex var.p1 len 2097152s driveoffset 265s plexoffset 0s
sd name obj.p0.s0 drive wd16-alpha plex obj.p0 len 4194304s driveoffset 2097417s plexoffset 0s
sd name obj.p1.s0 drive wd16-beta plex obj.p1 len 4194304s driveoffset 2097417s plexoffset 0s
sd name swap.p0.s0 drive wd16-alpha plex swap.p0 len 1048576s driveoffset 6291721s plexoffset 0s
sd name swap.p0.s1 drive wd16-beta plex swap.p0 len 1048576s driveoffset 6291721s plexoffset 512s
sd name lh.p0.s0 drive wd16-alpha plex lh.p0 len 8388608s driveoffset 7340297s plexoffset 0s
sd name lh.p1.s0 drive wd16-beta plex lh.p1 len 8388608s driveoffset 7340297s plexoffset 0s
sd name bsd.p0.s0 drive wd16-alpha plex bsd.p0 len 12582912s driveoffset 15728905s plexoffset 0s
sd name bsd.p1.s0 drive wd16-beta plex bsd.p1 len 12582912s driveoffset 15728905s plexoffset 0s
sd name bk0.p0.s0 drive wd16-alpha plex bk0.p0 len 146800640s driveoffset 28311817s plexoffset 0s
sd name bk0.p1.s0 drive wd16-beta plex bk0.p1 len 146800640s driveoffset 28311817s plexoffset 0s
sd name p.p0.s0 drive wd16-alpha plex p.p0 len 41942880s driveoffset 175112457s plexoffset 0s
sd name p.p0.s1 drive seag80 plex p.p0 len 41942880s driveoffset 265s plexoffset 513s
sd name p.p1.s0 drive wd16-beta plex p.p1 len 41942880s driveoffset 175112457s plexoffset 0s
sd name p.p1.s1 drive ibm60 plex p.p1 len 41942880s driveoffset 265s plexoffset 513s
sd name bk2.p0.s0 drive seag80 plex bk2.p0 len 77109248s driveoffset 41943305s plexoffset 0s
sd name bk2.p1.s0 drive ibm60 plex bk2.p1 len 77109248s driveoffset 41943305s plexoffset 0s
sd name bk1.p0.s0 drive wd16-alpha plex bk1.p0 len 136420712s driveoffset 175112457s plexoffset 0s
sd name bk1.p1.s0 drive wd16-beta plex bk1.p1 len 136420712s driveoffset 175112457s plexoffset 0s

Also, vinum control program reported all disks as totally free!
vinum -> l
6 drives:
D wd16-0b               State: up       Device /dev/ad0ds1a     Avail: 0/511 MB (0%)
D wd16-1b               State: up       Device /dev/ad2ds1a     Avail: 0/511 MB (0%)
D wd16-beta             State: up       Device /dev/ad2hs1a     Avail: 152115/152115 MB (100%)
D seag80                State: up       Device /dev/ad1hs1a     Avail: 75806/75807 MB (100%)
D ibm60                 State: up       Device /dev/ad3hs1a     Avail: 58131/58132 MB (100%)
D wd16-alpha            State: up       Device /dev/ad0hs1a     Avail: 152115/152115 MB (100%)

I removed p volume and then...

vinum -> rm -rf p
vinum: removing p.p0
vinum: removing p.p1
vinum: removing p
vinum -> ld
6 drives:
D wd16-0b               State: up       Device /dev/ad0ds1a     Avail: 0/511 MB (0%)
D wd16-1b               State: up       Device /dev/ad2ds1a     Avail: 0/511 MB (0%)
D wd16-beta             State: up       Device /dev/ad2hs1a     Avail: 172595/152115 MB (113%)
D seag80                State: up       Device /dev/ad1hs1a     Avail: 96286/75807 MB (127%)
D ibm60                 State: up       Device /dev/ad3hs1a     Avail: 78611/58132 MB (135%)
D wd16-alpha            State: up       Device /dev/ad0hs1a     Avail: 172595/152115 MB (113%)

as you can see, more than 100% free. Neat, huh? ;-)

I then force saveconfig and makedev, newfs bk1 and finished these dangerouts
experiment for now ;-)

As a sidenote, there is another problem (hard to reproduce, no kernel dump
right now unfortunately) is panic with the following symptoms:

Fatal trap 18: integer divide fault while in kernel mode
instruction pointer     = 0x8:0xc01e3956
stack pointer           = 0x10:0xd7576c68
frame pointer           = 0x10:0xd7576cd4
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         = 249 (vinum)
interrupt mask          = none
trap number             = 18
panic: integer divide fault

panic has been provoked via 'vinum ld' command, and I suppose it was in free
space/capacity calculations.


Sincerely,
D.Marck                                     [DM5020, MCK-RIPE, DM3-RIPN]
------------------------------------------------------------------------
*** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck@rinet.ru ***
------------------------------------------------------------------------



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030812114228.M64103>