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