Date: Wed, 25 Jan 2012 16:10:19 +0000 From: Martin Ranne <martin.ranne@kockumsonics.com> To: 'Andriy Gapon' <avg@FreeBSD.org> Cc: "'freebsd-fs@freebsd.org'" <freebsd-fs@FreeBSD.org> Subject: RE: zpool import reboots computer Message-ID: <39C592E81AEC0B418EAD826FC1BBB09B25CF08@mailgate> In-Reply-To: <4F1DC398.3050502@FreeBSD.org> References: <39C592E81AEC0B418EAD826FC1BBB09B25031D@mailgate> <4F18459F.7040309@FreeBSD.org> <39C592E81AEC0B418EAD826FC1BBB09B252444@mailgate> <4F1858FE.7020509@FreeBSD.org> <39C592E81AEC0B418EAD826FC1BBB09B25253F@mailgate> <4F1878AC.6060704@FreeBSD.org> <39C592E81AEC0B418EAD826FC1BBB09B25284B@mailgate> <4F1AC995.7050506@FreeBSD.org> <39C592E81AEC0B418EAD826FC1BBB09B255E15@mailgate> <4F1D75CD.6050000@FreeBSD.org> <39C592E81AEC0B418EAD826FC1BBB09B25607F@mailgate> <4F1DC398.3050502@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Thank you everyone who have helped me with hacking zfs. We have now been ab= le to do an import of the pool and transfered all the data to another compu= ter. Next step is to see if we can quickly repair the pool or just delete i= t and make it new again. We hacked the functions vdev_mirror_child_select() and vdev_mirror_io_start= (). In vdev_mirror_io_start() we added the code below just after the mc poi= nter was set in both loops. if (mc->mc_vd =3D=3D NULL) { (void) printf("mc->mc_vd is NULL. Child %i\n", c); continue; } In vdev_mirror_child_select(), we added the code below just after the mc po= inter was set. if (mc->mc_vd =3D=3D NULL) { (void) printf("mc->mc_vd is NULL. Child %i\n", c); mc->mc_tried =3D 1; mc->mc_skipped =3D 1; continue; } Best regards, Martin Ranne >On 2012-01-23 21:31, Andriy Gapon wrote:=20 >>on 23/01/2012 20:33 Martin Ranne said the following: >>Have done some checking and found mc->mc_vd =3D=3D NULL in the function v= dev_mirror_io_start() where the while-loop is.=20 >> >>while (children--) {=20 >> mc =3D &mm->mm_child[c]; >> zio_nowait(zio_vdev_child_io(zio, zio->io_bp, >> mc->mc_vd, mc->mc_offset, zio->io_data, zio->io_size, >> zio->io_type, zio->io_priority, 0, >> vdev_mirror_child_done, mc)); >> c++; >>} >> >>if i set a break before it runs zio_nowait() it will still crash the kern= el.=20 >>What can i check next for it to be able to continue? Is it possible to ha= ve it ignore the child where mc_vd is NULL? I am also looking into what mor= e I can do to debug it (adding code to print to console as i can not use ke= rnel dumps). >> >Not sure. If by "set a break" you mean inserting a break statement, try >continue instead. >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?39C592E81AEC0B418EAD826FC1BBB09B25CF08>