new LOR: gmirror: cdev/system map

Thierry Herbelot thierry at herbelot.com
Sat Apr 9 13:17:42 PDT 2005


Le Saturday 9 April 2005 15:36, Pawel Jakub Dawidek a écrit :
>
> Could you rerun your test (as I'm not able to reproduce it) with recent
> HEAD (you need revision 1.191 of sys/kern/subr_witness.c).
> I hardcoded the order you're posting here, because this is the right
> order, I belive and we need to find out where it is opposite.

unfortunately, I only saw it in the course of a maintenance operation (change 
of the BIOS geometry of the ad8s1 and ad10s1 slices hosting a gmirror : 
gm0s1, which is itself sliced as gm0s1a, gm0s1d for /tmp, gm0s1e for /var and 
gm0s1f for /usr). ad8s2 et ad10s2 are labelled as ad8s2d and ad10s2d 
for /usr/src and /usr/obj.

the maintenance is done (and I would like not to do it again).

I am rebuilding the world, but I did not catch your recent modfications in 
sys/kern/subr_witness.c (slow cvsup mirror ?).

(see the PS2 at the end for another partial crash report)

	Cheers,

	TfH

PS : sequence of operations :
# gmirror deactivate gm0s1 ad10s1
# gmirror stop gm0s1
GEOM_MIRROR: Device gm0s1: provider mirror/gm0s1 destroyed.
GEOM_MIRROR: Device gm0s1 destroyed.
# gmirror unload
<change of fdisk geometry of ad10s1>
dd if=/dev/zero of=/dev/ad10s1 bs=512 count=128
dd if=/dev/zero of=/dev/ad10s1 bs=512 skip=9806700 count=69
gmirror load
gmirror forget  gm0s1
gmirror insert gm0s1 /dev/ad10s1

<wait for end of synchronization>
<repeat of geometry change for ad8s1>
<repeat of sync for ad8s1>
then :
bsdlabel -w -B /dev/mirror/gm0s1 # initialize
bsdlabel -e /dev/mirror/gm0s1

[obviously too many error-prone steps, but the end result is suprisingly 
good : the partitions have been changed and the data are still in place]


PS2 : the goal of these changes is to move /usr/src to ad8s2 and /usr/obj 
towards ad10s2 to investigate a crash involving gmirror :
this crash occurred already twice when /usr/src was hosted in the gmirror, 
but /usr/obj on a standard slice of third disk (as the ad8 and ad10 disks are 
old, I wanted to check their health by using them "directly")

login: Apr  4 22:59:50 multi-cur su: thierry.herbelot to root on /dev/ttyp0
ad10: TIMEOUT - WRITE_DMA retrying (2 retries left) LBA=9806831
ad10: FAILURE - device detached
subdisk10: detached
ad10: detached
GEOM_MIRROR: Cannot update metadata on disk ad10s1 (error=5).
GEOM_MIRROR: Cannot update metadata on disk ad10s1 (error=6).
GEOM_MIRROR: Device gm0s1: provider ad10s1 disconnected.
GEOM_MIRROR: Request failed (error=6).

Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
fault virtual address   = 0xdeadc0de
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0xc067912c
stack pointer           = 0x10:0xcd5c8bb4
frame pointer           = 0x10:0xcd5c8bb4
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         = 8 (g_mirror gm0s1)
[thread pid 8 tid 100053 ]
Stopped at      strlen+0x8:     cmpb    $0,0(%edx)
db> call doadump
Dumping 160 MB
 16 32 48 64 80 96 112 128 144
Dump complete
0xf
db> where
Tracing pid 8 tid 100053 td 0xc14b4170
strlen(deadc0de,cd5c8bdc,0,20000020,0) at strlen+0x8
kvprintf(c0834128,c06335a4,cd5c8c90,a,cd5c8cb4) at kvprintf+0x62a
printf(c0834128,deadc0de,c07fdc0a,c81a000,0) at printf+0x43
g_print_bio(c23667bc,c0a9fb9e,c0a9ee51,6,c0a9eabc) at g_print_bio+0x84
g_mirror_regular_request(c23667bc,c151d844,14f28,c151d800,c14b29ec) at 
g_mirror_regular_request+0x22b
g_mirror_worker(c151d800,cd5c8d48,c151d800,c0a9879c,0) at 
g_mirror_worker+0x743
fork_exit(c0a9879c,c151d800,cd5c8d48) at fork_exit+0xa4
fork_trampoline() at fork_trampoline+0x8
--- trap 0x1, eip = 0, esp = 0xcd5c8d7c, ebp = 0 ---


More information about the freebsd-current mailing list