Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 13 Nov 2009 08:25:54 -0600
From:      Robert Noland <rnoland@FreeBSD.org>
To:        Matt Reimer <mattjreimer@gmail.com>
Cc:        freebsd-fs@freebsd.org, Radek =?iso-8859-2?Q?Val=E1=B9ek?= <valin@buchlovice.org>, freebsd-current@freebsd.org
Subject:   Re: GPT boot with ZFS RAIDZ "ZFS: i/o error - all block copies  unavailable"
Message-ID:  <1258122354.2303.24.camel@balrog.2hip.net>
In-Reply-To: <f383264b0911122215h61d4d54as2d9511b6896a125f@mail.gmail.com>
References:  <4AD710D6.70404@buchlovice.org> <f383264b0911121654g3d15690eq4e6c92355e5368b6@mail.gmail.com> <1258087983.2303.23.camel@balrog.2hip.net> <f383264b0911122215h61d4d54as2d9511b6896a125f@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 2009-11-12 at 22:15 -0800, Matt Reimer wrote:
> 2009/11/12 Robert Noland <rnoland@freebsd.org>:
> > On Thu, 2009-11-12 at 16:54 -0800, Matt Reimer wrote:
> >> 2009/10/15 Radek Valášek <valin@buchlovice.org>:
> >> > Everything works fine for me, until I rewrite kernel/world after system
> >> > upgrade to latest one (releng_8). After this am I no longer able to boot
> >> > from zfs raidz1 pool with following messages:
> >> >
> >> >>/ ZFS: i/o error - all block copies unavailable
> >> > />/ ZFS: can't read MOS
> >> > />/ ZFS: unexpected object set type lld
> >> > />/ ZFS: unexpected object set type lld
> >> > />/
> >> > />/ FreeBSD/i386 boot
> >> > />/ Default: z:/boot/kernel/kernel
> >> > />/ boot:
> >> > />/ ZFS: unexpected object set type lld
> >> > />/
> >> > />/ FreeBSD/i386 boot
> >> > />/ Default: tank:/boot/kernel/kernel
> >> > />/ boot:
> >>
> >> Radek,
> >>
> >> Try the attached patch (sponsored by VPOP Technologies). I found an
> >> overflow in /sys/cddl/boot/zfs/zfssubr.c:vdev_raidz_read() that was
> >> causing my 6x1TB raidz2 array to fail to boot.
> ...
> >> The kernel source for the corresponding functionality is in
> >> /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c:vdev_raidz_map_alloc().
> >> There all these variables are uint64_t, but I think unnecessarily. I
> >> tried changing the boot loader's vdev_raidz_read() variables to all
> >> uint64_t but then gptzfsboot would reboot itself, likely due to a
> >> stack overflow. The attached patch just changes a few variables that,
> >> after a quick analysis, seemed likely to overflow.
> >>
> >> If this looks good, would someone commit it?
> >
> > ps@ grabbed it up already, but I may handle the MFC for him.  I have
> > some other minor fixups in my tree right now... like teaching printf to
> > handle %llx.  Thanks for finding this... It's been really frustrating
> > that I couldn't produce a failing system.
> 
> Is it possible for this patch to get into 8.0-RELEASE, or is it too
> late? I suppose it doesn't matter that much since the loader isn't
> built with LOADER_ZFS_SUPPORT by default anyway, so folks are going to
> have to compile it themselves.

I think we have missed the boat, but I'll talk to re@ and see if we can
get it in.

robert.

> Matt
-- 
Robert Noland <rnoland@FreeBSD.org>
FreeBSD




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1258122354.2303.24.camel>