Date: Fri, 21 Mar 2014 11:52:07 +0100 From: Andreas Longwitz <longwitz@incore.de> To: Andriy Gapon <avg@FreeBSD.org>, freebsd-fs@freebsd.org Subject: Re: g_mirror_access() dropping geom topology_lock [Was: Kernel crash trying to import a ZFS pool with log device] Message-ID: <532C19D7.9000901@incore.de> In-Reply-To: <532C085D.3020201@FreeBSD.org> References: <532B5A0C.1010008@incore.de> <532C085D.3020201@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Thanks for the quick analysis, > I read the above as thread A entering vdev_geom_open_by_path and trying to > "taste" /dev/mirror/gm0p3. > >> g_post_event_x(0xffffffff80b16830, 0xffffff0096b24180, 2, 0) >> vdev_geom_detach:163[1]: Closing access to mirror/gm0p3. >> g_access(0xffffff0096b24180(mirror/gm0p3), -1, 0, -1) >> open delta:[r-1w0e-1] old:[r1w0e1] provider:[r1w0e1] >> 0xffffff00969c7e00(mirror/gm0p3) > > > Simultaneously thread B is closing access /dev/mirror/gm0p3. > It is not clear from the quoted log when and how this thread B got access to the > device in the first place. OK, my snip of the console output was not correct. The complete output after the command "zpool import" follows. _post_event_x(0xffffffff8039b8f0, 0xffffff0002c07680, 2, 262144) g_post_event_x(0xffffffff8039b8f0, 0xffffff0096615280, 2, 262144) g_dev_open(acd0, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002aa5300(acd0), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002ad6a00(acd0) g_dev_close(acd0, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002aa5300(acd0), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0002ad6a00(acd0) g_dev_open(da0, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a0cc80(da0), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff00029f1d00(da0) g_disk_access(da0, 1, 0, 0) g_dev_close(da0, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a0cc80(da0), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff00029f1d00(da0) g_disk_access(da0, -1, 0, 0) g_dev_open(da1, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a69180(da1), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002a23500(da1) g_disk_access(da1, 1, 0, 0) g_dev_close(da1, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a69180(da1), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002a23500(da1) g_disk_access(da1, -1, 0, 0) g_dev_open(da2, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a69280(da2), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002a23800(da2) g_disk_access(da2, 1, 0, 0) g_dev_close(da2, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a69280(da2), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0002a23800(da2) g_disk_access(da2, -1, 0, 0) g_dev_open(da3, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a69480(da3), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002a23b00(da3) g_disk_access(da3, 1, 0, 0) g_dev_close(da3, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a69480(da3), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0002a23b00(da3) g_disk_access(da3, -1, 0, 0) g_dev_open(da4, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a69600(da4), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff00023c5000(da4) g_disk_access(da4, 1, 0, 0) g_dev_close(da4, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a69600(da4), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff00023c5000(da4) g_disk_access(da4, -1, 0, 0) g_dev_open(da5, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a16280(da5), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002a5fb00(da5) g_disk_access(da5, 1, 0, 0) g_dev_close(da5, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a16280(da5), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002a5fb00(da5) g_disk_access(da5, -1, 0, 0) g_dev_open(label/C325BL31, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba7e00(label/C325BL31), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002c0d400(label/C325BL31) g_access(0xffffff0002ba7300(da2), 1, 0, 1) open delta:[r1w0e1] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002a23800(da2) g_disk_access(da2, 1, 0, 1) g_dev_close(label/C325BL31, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba7e00(label/C325BL31), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0002c0d400(label/C325BL31) g_access(0xffffff0002ba7300(da2), -1, 0, -1) open delta:[r-1w0e-1] old:[r1w0e1] provider:[r1w0e1] 0xffffff0002a23800(da2) g_disk_access(da2, -1, 0, -1) g_dev_open(label/C330CJHW, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a16700(label/C330CJHW), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002c02100(label/C330CJHW) g_access(0xffffff0002b96280(da3), 1, 0, 1) open delta:[r1w0e1] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002a23b00(da3) g_disk_access(da3, 1, 0, 1) g_dev_close(label/C330CJHW, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a16700(label/C330CJHW), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0002c02100(label/C330CJHW) g_access(0xffffff0002b96280(da3), -1, 0, -1) open delta:[r-1w0e-1] old:[r1w0e1] provider:[r1w0e1] 0xffffff0002a23b00(da3) g_disk_access(da3, -1, 0, -1) g_dev_open(md0, 1, 8192, 0xffffff0096017000) g_access(0xffffff00961f1900(md0), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff00961b2800(md0) g_dev_close(md0, 1, 8192, 0xffffff0096017000) g_access(0xffffff00961f1900(md0), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff00961b2800(md0) g_dev_open(mirror/gm0, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096a9ce00(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096a9ce00(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p1, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b97880(mirror/gm0p1), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0096649700(mirror/gm0p1) g_part_access(mirror/gm0p1,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p1, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b97880(mirror/gm0p1), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0096649700(mirror/gm0p1) g_part_access(mirror/gm0p1,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p10, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096974880(mirror/gm0p10), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff009698a800(mirror/gm0p10) g_part_access(mirror/gm0p10,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p10, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096974880(mirror/gm0p10), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff009698a800(mirror/gm0p10) g_part_access(mirror/gm0p10,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p10.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff00966df400(mirror/gm0p10.journal), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002c70500(mirror/gm0p10.journal) g_dev_close(mirror/gm0p10.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff00966df400(mirror/gm0p10.journal), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0002c70500(mirror/gm0p10.journal) g_dev_open(mirror/gm0p11, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002c26c80(mirror/gm0p11), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0096989800(mirror/gm0p11) g_part_access(mirror/gm0p11,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p11, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002c26c80(mirror/gm0p11), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0096989800(mirror/gm0p11) g_part_access(mirror/gm0p11,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p11.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096565a80(mirror/gm0p11.journal), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0096988700(mirror/gm0p11.journal) g_dev_close(mirror/gm0p11.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096565a80(mirror/gm0p11.journal), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0096988700(mirror/gm0p11.journal) g_dev_open(mirror/gm0p2, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096b26180(mirror/gm0p2), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff009698a100(mirror/gm0p2) g_part_access(mirror/gm0p2,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p2, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096b26180(mirror/gm0p2), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff009698a100(mirror/gm0p2) g_part_access(mirror/gm0p2,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p3, 1, 8192, 0xffffff0096017000) g_access(0xffffff009607bb00(mirror/gm0p3), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff00969c7e00(mirror/gm0p3) g_part_access(mirror/gm0p3,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p3, 1, 8192, 0xffffff0096017000) g_access(0xffffff009607bb00(mirror/gm0p3), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff00969c7e00(mirror/gm0p3) g_part_access(mirror/gm0p3,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p4, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096562980(mirror/gm0p4), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c03200(mirror/gm0p4) g_part_access(mirror/gm0p4,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p4, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096562980(mirror/gm0p4), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c03200(mirror/gm0p4) g_part_access(mirror/gm0p4,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p5, 1, 8192, 0xffffff0096017000) g_access(0xffffff00966cfa80(mirror/gm0p5), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0096a97500(mirror/gm0p5) g_part_access(mirror/gm0p5,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p5, 1, 8192, 0xffffff0096017000) g_access(0xffffff00966cfa80(mirror/gm0p5), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0096a97500(mirror/gm0p5) g_part_access(mirror/gm0p5,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p6, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096a9d500(mirror/gm0p6), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002361600(mirror/gm0p6) g_part_access(mirror/gm0p6,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p6, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096a9d500(mirror/gm0p6), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002361600(mirror/gm0p6) g_part_access(mirror/gm0p6,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p7, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096562400(mirror/gm0p7), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0096989a00(mirror/gm0p7) g_part_access(mirror/gm0p7,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p7, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096562400(mirror/gm0p7), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0096989a00(mirror/gm0p7) g_part_access(mirror/gm0p7,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p8, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096c12300(mirror/gm0p8), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff009662ba00(mirror/gm0p8) g_part_access(mirror/gm0p8,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p8, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096c12300(mirror/gm0p8), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff009662ba00(mirror/gm0p8) g_part_access(mirror/gm0p8,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p8.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff00966cf300(mirror/gm0p8.journal), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0096172d00(mirror/gm0p8.journal) g_dev_close(mirror/gm0p8.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff00966cf300(mirror/gm0p8.journal), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0096172d00(mirror/gm0p8.journal) g_dev_open(mirror/gm0p9, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096564e00(mirror/gm0p9), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff00969ad500(mirror/gm0p9) g_part_access(mirror/gm0p9,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p9, 1, 8192, 0xffffff0096017000) g_access(0xffffff0096564e00(mirror/gm0p9), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff00969ad500(mirror/gm0p9) g_part_access(mirror/gm0p9,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. g_dev_open(mirror/gm0p9.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff00961f1980(mirror/gm0p9.journal), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff009664a600(mirror/gm0p9.journal) g_dev_close(mirror/gm0p9.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff00961f1980(mirror/gm0p9.journal), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff009664a600(mirror/gm0p9.journal) g_dev_open(mirror/gmsv09, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95c80(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95c80(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p1, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95880(mirror/gmsv09p1), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002ad6700(mirror/gmsv09p1) g_part_access(mirror/gmsv09p1,1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r9w9e17] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09p1, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95880(mirror/gmsv09p1), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0002ad6700(mirror/gmsv09p1) g_part_access(mirror/gmsv09p1,-1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r10w9e17] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p10, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba7100(mirror/gmsv09p10), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c32100(mirror/gmsv09p10) g_part_access(mirror/gmsv09p10,1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r9w9e17] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09p10, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba7100(mirror/gmsv09p10), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c32100(mirror/gmsv09p10) g_part_access(mirror/gmsv09p10,-1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r10w9e17] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p10.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b94a80(mirror/gmsv09p10.journal), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c30200(mirror/gmsv09p10.journal) g_dev_close(mirror/gmsv09p10.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b94a80(mirror/gmsv09p10.journal), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c30200(mirror/gmsv09p10.journal) g_dev_open(mirror/gmsv09p2, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95580(mirror/gmsv09p2), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e0] 0xffffff0002c31000(mirror/gmsv09p2) g_part_access(mirror/gmsv09p2,1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r9w9e17] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09p2, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95580(mirror/gmsv09p2), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e0] 0xffffff0002c31000(mirror/gmsv09p2) g_part_access(mirror/gmsv09p2,-1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r10w9e17] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p3, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95280(mirror/gmsv09p3), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c30d00(mirror/gmsv09p3) g_part_access(mirror/gmsv09p3,1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r9w9e17] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09p3, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95280(mirror/gmsv09p3), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c30d00(mirror/gmsv09p3) g_part_access(mirror/gmsv09p3,-1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r10w9e17] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p4, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba4400(mirror/gmsv09p4), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c30b00(mirror/gmsv09p4) g_part_access(mirror/gmsv09p4,1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r9w9e17] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09p4, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba4400(mirror/gmsv09p4), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c30b00(mirror/gmsv09p4) g_part_access(mirror/gmsv09p4,-1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r10w9e17] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p5, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba4780(mirror/gmsv09p5), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c30900(mirror/gmsv09p5) g_part_access(mirror/gmsv09p5,1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r9w9e17] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09p5, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba4780(mirror/gmsv09p5), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c30900(mirror/gmsv09p5) g_part_access(mirror/gmsv09p5,-1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r10w9e17] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p6, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b94c00(mirror/gmsv09p6), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c30700(mirror/gmsv09p6) g_part_access(mirror/gmsv09p6,1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r9w9e17] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09p6, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b94c00(mirror/gmsv09p6), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c30700(mirror/gmsv09p6) g_part_access(mirror/gmsv09p6,-1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r10w9e17] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p7, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b94900(mirror/gmsv09p7), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c30500(mirror/gmsv09p7) g_part_access(mirror/gmsv09p7,1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r9w9e17] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09p7, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b94900(mirror/gmsv09p7), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c30500(mirror/gmsv09p7) g_part_access(mirror/gmsv09p7,-1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r10w9e17] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p7.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95380(mirror/gmsv09p7.journal), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c03d00(mirror/gmsv09p7.journal) g_dev_close(mirror/gmsv09p7.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95380(mirror/gmsv09p7.journal), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c03d00(mirror/gmsv09p7.journal) g_dev_open(mirror/gmsv09p8, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ae0c80(mirror/gmsv09p8), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c30300(mirror/gmsv09p8) g_part_access(mirror/gmsv09p8,1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r9w9e17] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09p8, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ae0c80(mirror/gmsv09p8), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c30300(mirror/gmsv09p8) g_part_access(mirror/gmsv09p8,-1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r10w9e17] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p8.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba7480(mirror/gmsv09p8.journal), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c03900(mirror/gmsv09p8.journal) g_dev_close(mirror/gmsv09p8.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba7480(mirror/gmsv09p8.journal), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c03900(mirror/gmsv09p8.journal) g_dev_open(mirror/gmsv09p9, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba4e00(mirror/gmsv09p9), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c30100(mirror/gmsv09p9) g_part_access(mirror/gmsv09p9,1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), 1, 0, 0) open delta:[r1w0e0] old:[r9w9e17] provider:[r9w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r1w0e0. g_dev_close(mirror/gmsv09p9, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba4e00(mirror/gmsv09p9), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c30100(mirror/gmsv09p9) g_part_access(mirror/gmsv09p9,-1,0,0) g_access(0xffffff0002b97780(mirror/gmsv09), -1, 0, 0) open delta:[r-1w0e0] old:[r10w9e17] provider:[r10w9e17] 0xffffff0002c0d800(mirror/gmsv09) GEOM_MIRROR[2]: Access request for mirror/gmsv09: r-1w0e0. g_dev_open(mirror/gmsv09p9.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95900(mirror/gmsv09p9.journal), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r1w1e1] 0xffffff0002c03600(mirror/gmsv09p9.journal) g_dev_close(mirror/gmsv09p9.journal, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002b95900(mirror/gmsv09p9.journal), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r2w1e1] 0xffffff0002c03600(mirror/gmsv09p9.journal) g_dev_open(label/C325BL31, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba7e00(label/C325BL31), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002c0d400(label/C325BL31) g_access(0xffffff0002ba7300(da2), 1, 0, 1) open delta:[r1w0e1] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002a23800(da2) g_disk_access(da2, 1, 0, 1) g_dev_close(label/C325BL31, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002ba7e00(label/C325BL31), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0002c0d400(label/C325BL31) g_access(0xffffff0002ba7300(da2), -1, 0, -1) open delta:[r-1w0e-1] old:[r1w0e1] provider:[r1w0e1] 0xffffff0002a23800(da2) g_disk_access(da2, -1, 0, -1) g_dev_open(label/C330CJHW, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a16700(label/C330CJHW), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002c02100(label/C330CJHW) g_access(0xffffff0002b96280(da3), 1, 0, 1) open delta:[r1w0e1] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002a23b00(da3) g_disk_access(da3, 1, 0, 1) g_dev_close(label/C330CJHW, 1, 8192, 0xffffff0096017000) g_access(0xffffff0002a16700(label/C330CJHW), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff0002c02100(label/C330CJHW) g_access(0xffffff0002b96280(da3), -1, 0, -1) open delta:[r-1w0e-1] old:[r1w0e1] provider:[r1w0e1] 0xffffff0002a23b00(da3) g_disk_access(da3, -1, 0, -1) g_dev_open(mirror/gm0p3, 1, 8192, 0xffffff0096017000) g_access(0xffffff009607bb00(mirror/gm0p3), 1, 0, 0) open delta:[r1w0e0] old:[r0w0e0] provider:[r0w0e0] 0xffffff00969c7e00(mirror/gm0p3) g_part_access(mirror/gm0p3,1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 0) open delta:[r1w0e0] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e0. g_dev_close(mirror/gm0p3, 1, 8192, 0xffffff0096017000) g_access(0xffffff009607bb00(mirror/gm0p3), -1, 0, 0) open delta:[r-1w0e0] old:[r1w0e0] provider:[r1w0e0] 0xffffff00969c7e00(mirror/gm0p3) g_part_access(mirror/gm0p3,-1,0,0) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, 0) open delta:[r-1w0e0] old:[r9w8e16] provider:[r9w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e0. vdev_geom_open_by_path:554[1]: Found provider by name /dev/label/C325BL31. vdev_geom_attach:102[1]: Attaching to label/C325BL31. g_access(0xffffff0096b23a00(label/C325BL31), 1, 0, 1) open delta:[r1w0e1] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002c0d400(label/C325BL31) g_access(0xffffff0002ba7300(da2), 1, 0, 2) open delta:[r1w0e2] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002a23800(da2) g_disk_access(da2, 1, 0, 2) vdev_geom_attach:123[1]: Created geom and consumer for label/C325BL31. vdev_geom_read_config:248[1]: Reading config from label/C325BL31... vdev_geom_open_by_path:569[1]: guid match for provider /dev/label/C325BL31. vdev_geom_open_by_path:554[1]: Found provider by name /dev/label/C330CJHW. vdev_geom_attach:102[1]: Attaching to label/C330CJHW. g_access(0xffffff00969a5280(label/C330CJHW), 1, 0, 1) open delta:[r1w0e1] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002c02100(label/C330CJHW) g_access(0xffffff0002b96280(da3), 1, 0, 2) open delta:[r1w0e2] old:[r0w0e0] provider:[r0w0e0] 0xffffff0002a23b00(da3) g_disk_access(da3, 1, 0, 2) vdev_geom_attach:143[1]: Created consumer for label/C330CJHW. vdev_geom_read_config:248[1]: Reading config from label/C330CJHW... vdev_geom_open_by_path:569[1]: guid match for provider /dev/label/C330CJHW. vdev_geom_open_by_path:554[1]: Found provider by name /dev/mirror/gm0p3. vdev_geom_attach:102[1]: Attaching to mirror/gm0p3. g_access(0xffffff0096b24180(mirror/gm0p3), 1, 0, 1) open delta:[r1w0e1] old:[r0w0e0] provider:[r0w0e0] 0xffffff00969c7e00(mirror/gm0p3) g_part_access(mirror/gm0p3,1,0,1) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 1) open delta:[r1w0e1] old:[r8w8e16] provider:[r8w8e16] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e1. vdev_geom_attach:143[1]: Created consumer for mirror/gm0p3. vdev_geom_read_config:248[1]: Reading config from mirror/gm0p3... vdev_geom_open_by_path:569[1]: guid match for provider /dev/mirror/gm0p3. g_post_event_x(0xffffffff80b16830, 0xffffff0096b24180, 2, 0) vdev_geom_detach:163[1]: Closing access to mirror/gm0p3. g_access(0xffffff0096b24180(mirror/gm0p3), -1, 0, -1) open delta:[r-1w0e-1] old:[r1w0e1] provider:[r1w0e1] 0xffffff00969c7e00(mirror/gm0p3) g_part_access(mirror/gm0p3,-1,0,-1) g_access(0xffffff0096c0f800(mirror/gm0), -1, 0, -1) open delta:[r-1w0e-1] old:[r9w8e17] provider:[r9w8e17] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r-1w0e-1. vdev_geom_open_by_path:554[1]: Found provider by name /dev/mirror/gm0p3. vdev_geom_attach:102[1]: Attaching to mirror/gm0p3. vdev_geom_attach:128[1]: Found consumer for mirror/gm0p3. g_access(0xffffff0096b24180(mirror/gm0p3), 1, 0, 1) open delta:[r1w0e1] old:[r1w0e1] provider:[r1w0e1] 0xffffff00969c7e00(mirror/gm0p3) g_part_access(mirror/gm0p3,1,0,1) g_access(0xffffff0096c0f800(mirror/gm0), 1, 0, 1) open delta:[r1w0e1] old:[r9w8e17] provider:[r9w8e17] 0xffffff00969c7d00(mirror/gm0) GEOM_MIRROR[2]: Access request for mirror/gm0: r1w0e1. vdev_geom_detach:167[1]: Destroyed consumer to mirror/gm0p3. g_detach(0xffffff0096b24180) g_destroy_consumer(0xffffff0096b24180) vdev_geom_attach:147[1]: Used existing consumer for mirror/gm0p3. vdev_geom_read_config:248[1]: Fatal trap 12: page fault while in kernel mode > I see two issues here. > First, the ZFS tasting code could be made more robust. If it never tried to > re-use the consumer and always created a new one, then most likely this crash > could be avoided. But there is no bug in the code. The code is correct and it > it uses GEOM topology lock to avoid any concurrency issues. > > But GEOM mirror code breaks a contract on which the ZFS code relies. > g_access() must be called with the topology lock hold. > I extend this requirement to a requirement that access method of any GEOM > provider must operate under the topology lock and must never drop it. > In other words, if a caller must acquire g_topology_lock before calling > g_access, then in return it must have a guarantee that the GEOM topology stays > unchanged across the call to g_access(). > g_mirror_access() breaks the above contract. > > So, the code in vdev_geom_attach() obtains g_topology_lock, then it finds an > existing valid consumer and calls g_access() on it. It reasonably expects that > the consumer remains valid, but because g_mirror_access() drops and requires the > topology lock, there is a chance that the topology can change and the consumer > may become invalid. Ok, I do not understand why there are two threads A and B after "zpool export" dealing with the zfs log device. If you follow Pawels argumentation I am ready to test a patch for ZFS. -- Andreas Longwitz
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?532C19D7.9000901>