kern/125413: Panic when doing zfs raidz with gmirror and ggate
Javier Martín Rueda
jmrueda at diatel.upm.es
Wed Jul 9 01:20:04 UTC 2008
The following reply was made to PR kern/125413; it has been noted by GNATS.
From: =?ISO-8859-1?Q?Javier_Mart=EDn_Rueda?= <jmrueda at diatel.upm.es>
To: bug-followup at FreeBSD.org, jmrueda at diatel.upm.es
Cc:
Subject: Re: kern/125413: Panic when doing zfs raidz with gmirror and ggate
Date: Wed, 09 Jul 2008 02:52:39 +0200
This is a multi-part message in MIME format.
--------------080503070700060808010208
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
I attach a console dump of the panic.
--------------080503070700060808010208
Content-Type: text/plain;
name="p2bis.txt"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="p2bis.txt"
NOTE: in this dump, I was using da0s1, da1s1, etc. instead of da0, da1...
# sysctl kern.geom.debugflags=5
# sysctl kern.geom.mirror.debug=2
# sysctl vfs.zfs.debug=1
# zpool create z1 raidz2 mirror/gm0 mirror/gm1 mirror/gm2 mirror/gm3 mirror/gm4 mirror/gm5 mirror/gm6 mirror/gm7
g_dev_open(mirror/gm0, 1, 8192, 0xc422d880)
g_access(0xc3fb8d40(mirror/gm0), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc4184980(mirror/gm0)
GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0.
g_dev_close(mirror/gm0, 1, 8192, 0xc422d880)
g_access(0xc3fb8d40(mirror/gm0), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc4184980(mirror/gm0)
GEOM_MIRROR[2]: Accest for mirror/gm0: r-1w0e0.
g_dev_open(mirror/gm0, 1, 8192, 0xc422d880)
g_access(0xc3fb8d40(mirror/gm0), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc4184980(mirror/gm0)
GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0.
g_dev_close(mirror/gm0, 1, 8192, 0xc422d880)
g_access(0xc3fb8d40(mirror/gm0), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc4184980(mirror/gm0)
GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0.
g_dev_open(mirror/gm1, 1, 8192, 0xc422d880)
g_access(0xc419c100(mirror/gm1), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3b57700(mirror/gm1)
GEOM_MIRROR[2]: Access request for mirror/gm1: r1w0e0.
g_dev_close(mirror/gm1, 1, 8192, 0xc422d880)
g_access(0xc419c100(mirror/gm1), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3b57700(mirror/gm1)
GEOM_MIRROR[2]: Access request for mirror/gm1: r-1w0e0.
g_dev_open(mirror/gm1, 1, 8192, 0xc422d880)
g_access(0xc419c100(mirror/gm1), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3b57700(mirror/gm1)
GEOM_MIRROR[2]: Access request for mirror/gm1: r1w0e0.
g_dev_close(mirror/gm1, 1, 8192, 0xc422d880)
g_access(0xc419c100(mirror/gm1), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3b57700(mirror/gm1)
GEOM_MIRROR[2]: Access request for mirror/gm1: r-1w0e0.
g_dev_open(mirror/gm2, 1, 8192, 0xc422d880)
g_access(0xc419dbc0(mirror/gm2), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3f1d400(mirror/gm2)
GEOM_MIRROR[2]: Access request for mirror/gm2: r1w0e0.
g_dev_close(mirror/gm2, 1, 8192, 0xc422d880)
g_access(0xc419dbc0(mirror/gm2), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3f1d400(mirror/gm2)
GEOM_MIRROR[2]: Access request for mirror/gm2: r-1w0e0.
g_dev_open(mirror/gm2, 1, 8192, 0xc422d880)
g_access(0xc419dbc0(mirror/gm2), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3f1d400(mirror/gm2)
GEOM_MIRROR[2]: Access request for mirror/gm2: r1w0e0.
g_dev_close(mirror/gm2, 1, 8192, 0xc422d880)
g_access(0xc419dbc0(mirror/gm2), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3f1d400(mirror/gm2)
GEOM_MIRROR[2]: Access request for mirror/gm2: r-1w0e0.
g_dev_open(mirror/gm3, 1, 8192, 0xc422d880)
g_access(0xc4b60c00(mirror/gm3), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3f2a900(mirror/gm3)
GEOM_MIRROR[2]: Access request for mirror/gm3: r1w0e0.
g_dev_close(mirror/gm3, 1, 8192, 0xc422d880)
g_access(0xc4b60c00(mirror/gm3), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3f2a900(mirror/gm3)
GEOM_MIRROR[2]: Access request for mirror/gm3: r-1w0e0.
g_dev_open(mirror/gm3, 1, 8192, 0xc422d880)
g_access(0xc4b60c00(mirror/gm3), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3f2a900(mirror/gm3)
GEOM_MIRROR[2]: Access request for mirror/gm3: r1w0e0.
g_dev_close(mirror/gm3, 1, 8192, 0xc422d880)
g_access(0xc4b60c00(mirror/gm3), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3f2a900(mirror/gm3)
GEOM_MIRROR[2]: Access request for mirror/gm3: r-1w0e0.
g_dev_open(mirror/gm4, 1, 8192, 0xc422d880)
g_access(0xc3fb8dc0(mirror/gm4), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3ecf000(mirror/gm4)
GEOM_MIRROR[2]: Access request for mirror/gm4: r1w0e0.
g_dev_close(mirror/gm4, 1, 8192, 0xc422d880)
g_access(0xc3fb8dc0(mi0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3ecf000(mirror/gm4)
GEOM_MIRROR[2]: Access request for mirror/gm4: r-1w0e0.
g_dev_open(mirror/gm4, 1, 8192, 0xc422d880)
g_access(0xc3fb8dc0(mirror/gm4), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3ecf000(mirror/gm4)
GEOM_MIRROR[2]: Access request for mirror/gm4: r1w0e0.
g_dev_close(mirror/gm4, 1, 8192, 0xc422d880)
g_access(0xc3fb8dc0(mirror/gm4), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3ecf000(mirror/gm4)
GEOM_MIRROR[2]: Access request for mirror/gm4: r-1w0e0.
g_dev_open(mirror/gm5, 1, 8192, 0xc422d880)
g_access(0xc3fb94c0(mirror/gm5), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc417e400(mirror/gm5)
GEOM_MIRROR[2]: Access request for mirror/gm5: r1w0e0.
g_dev_close(mirror/gm5, 1, 8192, 0xc422d880)
g_access(0xc3fb94c0(mirror/gm5), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc417e400(mirror/gm5)
GEOM_MIRROR[2]: Access request for mirror/gm5: r-1w0e0.
g_dev_open(mirror/gm5, 1, 8192, 0xc422d880)
g_access(0xc3fb94c0(mirror/gm5), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc417e400(mirror/gm5)
GEOM_MIRROR[2]: Access request for mirror/gm5: r1w0e0.
g_dev_close(mirror/gm5, 1, 8192, 0xc422d880)
g_access(0xc3fb94c0(mirror/gm5), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc417e400(mirror/gm5)
GEOM_MIRROR[2]: Access request for mirror/gm5: r-1w0e0.
g_dev_open(mirror/gm6, 1, 8192, 0xc422d880)
g_access(0xc4b60c40(mirror/gm6), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3ed5000(mirror/gm6)
GEOM_MIRROR[2]: Access request for mirror/gm6: r1w0e0.
g_dev_close(mirror/gm6, 1, 8192, 0xc422d880)
g_access(0xc4b60c40(mirror/gm6), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3ed5000(mirror/gm6)
GEOM_MIRROR[2]: Access request for mirror/gm6: r-1w0e0.
g_dev_open(mirror/gm6, 1, 8192, 0xc422d880)
g_access(0xc4b60c40(mirror/gm6), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3ed5000(mirror/gm6)
GEOM_MIRROR[2]: Access request for mirror/gm6: r1w0e0.
g_dev_close(mirror/gm6, 1, 8192, 0xc422d880)
g_access(0xc4b60c40(mirror/gm6), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3ed5000(mirror/gm6)
GEOM_MIRROR[2]: Access request for mirror/gm6: r-1w0e0.
g_dev_open(mirror/gm7, 1, 8192, 0xc422d880)
g_access(0xc419c780(mirror/gm7), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc417e180(mirror/gm7)
GEOM_MIRROR[2]: Access request for mirror/gm7: r1w0e0.
g_dev_close(mirror/gm7, 1, 8192, 0xc422d880)
g_access(0xc419c780(mirror/gm7), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc417e180(mirror/gm7)
GEOM_MIRROR[2]: Access request for mirror/gm7: r-1w0e0.
g_dev_open(mirror/gm7, 1, 8192, 0xc422d880)
g_access(0xc419c780(mirror/gm7), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc417e180(mirror/gm7)
GEOM_MIRROR[2]: Access request for mirror/gm7: r1w0e0.
g_dev_close(mirror/gm7, 1, 8192, 0xc422d880)
g_access(0xc419c780(mirror/gm7), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc417e180(mirror/gm7)
GEOM_MIRROR[2]: Access request for mirror/gm7: r-1w0e0.
g_post_t_x(0xc0720910, 0xc4a69560, 2, 262144)
g_post_event_x(0xc0720910, 0xc48c9280, 2, 262144)
g_post_event_x(0xc0720910, 0xc44c1080, 2, 262144)
g_post_event_x(0xc0720910, 0xc496d120, 2, 262144)
g_post_event_x(0xc0720910, 0xc4abd0a0, 2, 262144)
g_post_event_x(0xc0720910, 0xc4abd0e0, 2, 262144)
g_post_event_x(0xc0720910, 0xc4abd120, 2, 262144)
g_post_event_x(0xc0720910, 0xc4abd160, 2, 262144)
g_dev_open(mirror/gm0, 1, 8192, 0xc422d880)
g_access(0xc3fb8d40(mirror/gm0), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc4184980(mirror/gm0)
GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0.
g_dev_close(mirror/gm0, 1, 8192, 0xc422d880)
g_access(0xc3fb8d40(mirror/gm0), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc4184980(mirror/gm0)
GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0.
g_dev_open(mirror/gm1, 1, 8192, 0xc422d880)
g_access(0xc419c100(mirror/gm1), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3b57700(mirror/gm1)
GEOM_MIRROR[2]: Access request for mirror/gm1: r1w0e0.
g_dev_close(mirror/gm1, 1, 8192, 0xc422d880)
g_access(0xc419c100(mirror/gm1), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3b57700(mirror/gm1)
GEOM_MIRROR[2]: Access request for mirror/gm1: r-1w0e0.
g_dev_open(mirror/gm2, 1, 8192, 0xc422d880)
g_access(0xc419dbc0(mirror/gm2), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3f1d400(mirror/gm2)
GEOM_MIRROR[2]: Access request for mirror/gm2: r1w0e0.
g_dev_close(mirror/gm2, 1, 8192, 0xc422d880)
g_access(0xc419dbc0(mirror/gm2), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3f1d400(mirror/gm2)
GEOM_MIRROR[2]: Access request for mirror/gm2: r-1w0e0.
g_dev_open(mirror/gm3, 1, 8192, 0xc422d880)
g_access(0xc4b60c00(mirror/gm3), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3f2a900(mirror/gm3)
GEOM_MIRROR[2]: Access request for mirror/gm3: r1w0e0.
g_dev_close(mirror/gm3, 1, 8192, 0xc422d880)
g_access(0xc4b60c00(mirror/gm3), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3f2a900(mirror/gm3)
GEOM_MIRROR[2]: Access request for mirror/gm3: r-1w0e0.
g_dev_open(mirror/gm4, 1, 8192, 0xc422d880)
g_access(0xc3fb8dc0(mirror/gm4), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3ecf000(mirror/gm4)
GEOM_MIRROR[2]: Access request for mirror/gm4: r1w0e0.
g_dev_close(mirror/gm4, 1, 8192, 0xc422d880)
g_access(0xc3fb8dc0(mirror/gm4), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3ecf000(mirror/gm4)
GEOM_MIRROR[2]: Access request for mirror/gm4: r-1w0e0.
g_dev_open(mirror/gm5, 1, 8192, 0xc422d880)
g_access(0xc3fb94c0(mirror/gm5), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc417e400(mirror/gm5)
GEOM_MIRROR[2]: Access request for mirror/gm5: r1w0e0.
g_dev_close(mirror/gm5, 1, 8192, 0xc422d880)
g_access(0xc3fb94c0(mirror/gm5), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc417e400(mirror/gm5)
GEOM_MIRROR[2]: Access request for mirror/gm5: r-1w0e0.
g_dev_open(mirror/gm6, 1, 8192, 0xc422d880)
g_access(0xc4b60c40(mirror/gm6), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc3ed5000(mirror/gm6)
GEOM_MIRROR[2]: Access request for mirror/gm6: r1w0e0.
g_dev_close(mirror/gm6, 1, 8192, 0xc422d880)
g_access(0xc4b60c40(mirror/gm6), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc3ed5000(mirror/gm6)
GEOM_MIRROR[2]: Access request for mirror/gm6: r-1w0e0.
g_dev_open(mirror/gm7, 1, 8192, 0xc422d880)
g_access(0xc419c780(mirror/gm7), 1, 0, 0)
open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xc417e180(mirror/gm7)
GEOM_MIRROR[2]: Access request for mirror/gm7: r1w0e0.
g_dev_close(mirror/gm7, 1, 8192, 0xc422d880)
g_access(0xc419c780(mirror/gm7), -1, 0, 0)
open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xc417e180(mirror/gm7)
GEOM_MIRROR[2]: Access request for mirror/gm7: r-1w0e0.
vdev_geom_open:371[1]: Found provider by name /dev/mirror/gm0.
vdev_geom_attach:116[1]: Attaching to mirror/gm0.
g_access(0xc41a4800(mirror/gm0), 1, 1, 1)
open delta:[r1w1e1] old:[r0w0e0] provider:[r0w0e0] 0xc4184980(mirror/gm0)
GEOM_MIRROR[2]: Access request for mirror/gm0: r1w1e1.
g_post_event_x(0xc0724990, 0xc4184980, 2, 0)
ref 0xc4184980
vdev_geom_attach:137[1]: Created geom and consumer for mirror/gm0.
vdev_geom_open:371[1]: Found provider by name /dev/mirror/gm1.
vdev_geom_attach:116[1]: Attaching to mirror/gm1.
g_access(0xc41a49c0(mirror/gm1), 1, 1, 1)
open delta:[r1w1e1] old:[r0w0e0] provider:[r0w0e0] 0xc3b57700(mirror/gm1)
GEOM_MIRROR[2]: Access request for mirror/gm1: r1w1e1.
g_post_event_x(0xc0724990, 0xc3b57700, 2, 0)
ref 0xc3b57700
vdev_geom_attach:157[1]: Created consumer for mirror/gm1.
vdev_geom_open:371[1]: Found provider by name /dev/mirror/gm2.
vdev_geom_attach:116[1]: Attaching to mirror/gm2.
g_access(0xc419da80(mirror/gm2), 1, 1, 1)
open delta:[r1w1e1] old:[r0w0e0] provider:[r0w0e0] 0xc3f1d400(mirror/gm2)
GEOM_MIRROR[2]: Access request for mirror/gm2: r1w1e1.
g_post_event_x(0xc0724990, 0xc3f1d400, 2, 0)
ref 0xc3f1d400
vdev_geom_attach:157[1]: Created consumer for mirror/gm2.
vdev_geom_open:371[1]: Found provider by name /dev/mirror/gm3.
vdev_geom_attach:116[1]: Attaching to mirror/gm3.
g_access(0xc4b60940(mirror/gm3), 1, 1, 1)
open delta:[r1w1e1] old:[r0w0e0] provider:[r0w0e0] 0xc3f2a900(mirror/gm3)
GEOM_MIRROR[2]: Access request for mirror/gm3: r1w1e1.
g_post_event_x(0xc0724990, 0xc3f2a900, 2, 0)
ref 0xc3f2a900
vdev_geom_attach:157[1]: Created consumer for mirror/gm3.
vdev_geom_open:371[1]: Found provider by name /dev/mirror/gm4.
vdev_geom_attach:116[1]: Attaching to mirror/gm4.
g_access(0xc4b61140(mirror/gm4), 1, 1, 1)
open delta:[r1w1e1] old:[r0w0e0] provider:[r0w0e0] 0xc3ecf000(mirror/gm4)
GEOM_MIRROR[2]: Access request for mirror/gm4: r1w1e1.
g_post_event_x(0xc0724990, 0xc3ecf000, 2, 0)
ref 0xc3ecf000
vdev_geom_attach:157[1]: Created consumer for mirror/gm4.
vdev_geom_open:371[1]: Found provider by name /dev/mirror/gm5.
vdev_geom_attach:116[1]: Attaching to mirror/gm5.
g_access(0xc4b60800(mirror/gm5), 1, 1, 1)
open delta:[r1w1e1] old:[r0w0e0] provider:[r0w0e0] 0xc417e400(mirror/gm5)
GEOM_MIRROR[2]: Access request for mirror/gm5: r1w1e1.
g_post_event_x(0xc0724990, 0xc417e400, 2, 0)
ref 0xc417e400
vdev_geom_attach:157[1]: Created consumer for mirror/gm5.
vdev_geom_open:371[1]: Found provider by name /dev/mirror/gm6.
vdev_geom_attach:116[1]: Attaching to mirror/gm6.
g_access(0xc4b60c80(mirror/gm6), 1, 1, 1)
open delta:[r1w1e1] old:[r0w0e0] provider:[r0w0e0] 0xc3ed5000(mirror/gm6)
GEOM_MIRROR[2]: Access request for mirror/gm6: r1w1e1.
g_post_event_x(0xc0724990, 0xc3ed5000, 2, 0)
ref 0xc3ed5000
vdev_geom_attach:157[1]: Created consumer for mirror/gm6.
vdev_geom_open:371[1]: Found provider by name /dev/mirror/gm7.
vdev_geom_attach:116[1]: Attaching to mirror/gm7.
g_access(0xc419d240(mirror/gm7), 1, 1, 1)
open delta:[r1w1e1] old:[r0w0e0] provider:[r0w0e0] 0xc417e180(mirror/gm7)
GEOM_MIRROR[2]: Access request for mirror/gm7: r1w1e1.
g_post_event_x(0xc0724990, 0xc417e180, 2, 0)
ref 0xc417e180
vdev_geom_attach:157[1]: Created consumer for mirror/gm7.
GEOM_MIRROR[1]: Disk da0s1 (device gm0) marked as dirty.
GEOM_MIRROR[2]: Metadata on da0s1 updated.
GEOM_MIRROR[1]: Disk ggate0 (device gm0) marked as dirty.
GEOM_MIRROR[2]: Metadata on ggate0 updated.
GEOM_MIRROR[1]: Disk da1s1 (device gm1) marked as dirty.
GEOM_MIRROR[2]: Metadata on da1s1 updated.
GEOM_MIRROR[1]: Disk ggate1 (device gm1) marked as dirty.
GEOM_MIRROR[2]: Metadata on ggate1 updated.
GEOM_MIRROR[1]: Disk da2s1 (device gm2) marked as dirty.
GEOM_MIRROR[2]: Metadata on da2s1 updated.
GEOM_MIRROR[1]: Disk ggate2 (device gm2) marked as dirty.
GEOM_MIRROR[2]: Metadata on ggate2 updated.
GEOM_MIRROR[1]: Disk da3s1 (device gm3) marked as dirty.
GEOM_MIRROR[2]: Metadata on da3s1 updated.
GEOM_MIRROR[1]: Disk ggate3 (device gm3) marked as dirty.
GEOM_MIRROR[2]: Metadata on ggate3 updated.
GEOM_MIRROR[1]: Disk da4s1 (device gm4) marked as dirty.
GEOM_MIRROR[2]: Metadata on da4s1 updated.
GEOM_MIRROR[1]: Disk ggate4 (device gm4) marked as dirty.
GEOM_MIRROR[2]: Metadata on ggate4 updated.
GEOM_MIRROR[1]: Disk da5s1 (device gm5) marked as dirty.
GEOM_MIRROR[2]: Metadata on da5s1 updated.
GEOM_MIRROR[1]: Disk ggate5 (device gm5) marked as dirty.
GEOM_MIRROR[2]: Metadata on ggate5 updated.
GEOM_MIRROR[1]: Disk da6s1 (device gm6) marked as dirty.
GEOM_MIRROR[2]: Metadata on da6s1 updated.
GEOM_MIRROR[1]: Disk ggate6 (device gm6) marked as dirty.
GEOM_MIRROR[2]: Metadata on ggate6 updated.
GEOM_MIRROR[1]: Disk da7s1 (device gm7) marked as dirty.
GEOM_MIRROR[2]: Metadata on da7s1 updated.
GEOM_MIRROR[1]: Disk ggate7 (device gm7) marked as dirty.
GEOM_MIRROR[2]: Metadata on ggate7 updated.
g_disk_flushcache(da0)
g_disk_flushcache(da1)
g_disk_flushcache(da2)
g_disk_flushcache(da3)
g_disk_flushcache(da4)
g_disk_flushcache(da5)
g_disk_flushcache(da6)
g_disk_flushcache(da7)
NOTE: this is when vdev_reopen gets called.
g_post_event_x(0xc0e185a0, 0xc41a4800, 2, 0)
vdev_geom_detach:177[1]: Closing access to mirror/gm0.
g_access(0xc41a4800(mirror/gm0), -1, 0, -1)
open delta:[r-1w0e-1] old:[r1w1e1] provider:[r1w1e1] 0xc4184980(mirror/gm0)
GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e-1.
vdev_geom_detach:181[1]: Destroyed consumer to mirror/gm0.
g_access(0xc41a4800(mirror/gm0), 0, -1, 0)
open delta:[r0w-1e0] old:[r0w1e0] provider:[r0w1e0] 0xc4184980(mirror/gm0)
GEOM_MIRROR[2]: Access request for mirror/gm0: r0w-1e0.
GEOM_MIRROR[1]: Disk da0s1 (device gm0) marked as clean.
g_poGEOM_MIRROR[2]: Metadata on da0s1 updated.
GEOM_MIRROR[1]: Disk ggate0 (device gm0) marked as clean.
st_event_x(0xc0e185a0, 0xc41a49c0, 2, 0)
g_post_event_x(0xc0e185a0, 0xc419da80, 2, 0)
g_post_event_x(0xc0e185a0, 0xc4b60940, 2, 0)
g_post_event_x(0xc0e185a0, 0xc4b61140, 2, 0)
g_post_event_x(0xc0e185a0, 0xc4b60800, 2, 0)
g_post_event_x(0xc0e185a0, 0xc4b60c80, 2, 0)
g_post_event_x(0xc0e185a0, 0xc419d240, 2, 0)
NOTE: the above geom events are the vdev_geom_detach of vdev_close for 8 devices. The first one is processed, but the others remain in the queue when vdev_close returns.
At this moment, vdev_reopen resumes and invokes vdev_open. The consumer for gm0 has been destroyed already, but the zfs::vdev geom still exists, as 7 of the consumers still appear as active. vdev_open reuses the consumer for gm0, but now it has no provider (it is a null pointer), and as soon as the code attempts to access the provider, it faults. See below.
vdev_geom_open:371[1]: Found provider by name /dev/mirror/gm0.
vdev_geom_attach:116[1]: Attaching to mirror/gm0.
vdev_geom_attach:142[1]: Found consumer for mirror/gm0.
g_access(0xc41a4800(mirror/gm0), 1, 0, 1)
open delta:[r1w0e1] old:[r0w1e0] provider:[r0w1e0] 0xc4184980(mirror/gm0)
GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e1.
GEOM_MIRROR[2]: Metadata on ggate0 updated.
g_post_event_x(0xc0724790, 0xc4184980, 2, 0)
ref 0xc4184980
g_detach(0xc41a4800)
g_destroy_consumer(0xc41a4800)
vdev_geom_detach:177[1]: Closing access to mirror/gm1.
g_access(0xc41a49c0(mirror/gm1), -1, 0, -1)
open delta:[r-1w0e-1] old:[r1w1e1] provider:[r1w1e1] 0xc3b57700(mirror/gm1)
GEOM_MIRROR[2]: Access request for mirror/gm1: r-1w0e-1.
vdev_geom_detach:181[1]: Destroyed consumer to mirror/gm1.
g_access(0xc41a49c0(mirror/gm1), 0, -1, 0)
open delta:[r0w-1e0] old:[r0w1e0] provider:[r0w1e0] 0xc3b57700(mirror/gm1)
GEOM_MIRROR[2]: Access request for mirror/gm1: r0w-1e0.
GEOM_MIRROR[1]: Disk da1s1 (device gm1) marked as clean.
vdev_geom_attach:161[1]: Used existing consumer for mirror/gm0.
Fatal trap GEOM_MIRROR[2]: Metadata on da1s1 updated.
GEOM_MIRROR[1]: Disk ggate1 (device gm1) marked as clean.
12: page fault while in kernel mode
cpuid = 0; apic id = 00
fault virtual address = 0x30
fault code = supervisor read, page not present
instruction pointer = 0x20:0xc0e193d6
stack pointer = 0x28:0xe0489aa0
frame pointer = 0x28:0xe0489ae4
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 = 1053 (solthread 0xc0dcfa7)
[thread pid 1053 tid 100113 ]
Stopped at vdev_geom_open+0x6d6: movl 0x30(%eax),%edx
As I said in the bug report, the above instruction corresponds to vdev_geom.c:420.
--------------080503070700060808010208--
More information about the freebsd-bugs
mailing list