Re: GPT boot with ZFS RAIDZ "ZFS: i/o error - all block copies unavailable"

From: Norikatsu Shigemura <nork_at_ninth-nine.com>
Date: Wed, 28 Oct 2009 07:17:34 +0900
Hi rnoland.

On Mon, 26 Oct 2009 10:34:59 -0500
Robert Noland <rnoland_at_freebsd.org> wrote:
> > >>          ZFS: i/o error - all block copies unavailable
> > >>          Invalid format
> > >>          FreeBSD/i386 boot
> > >>          Default: tank:/boot/kernel/kernel
> > >>          boot:
> > > Could you type "status" at this point and tell what it shows?
> > If I type status at this point I get:
> >    pool: tank
> >    config:
> >        NAME    STATE
> >        tank   ONLINE
> >      raidz1   ONLINE
> >       ad4p3   ONLINE
> >       ad6p3   ONLINE
> >       ad8p3   ONLINE
> >      ad10p3   ONLINE
> > Which seems odd, since that's all the drives there are. So if it finds  
> > these it's already found all drives. My optimistic "Oh! I'll try and boot  
> > again" spirit was however crushed since it just results in the same error.
> Ok, that is both good and frustrating... I haven't produced any boot
> failures with all of the drives visible.  Do, note that I just added
> support for reading gang blocks to the loader. (basically untested,
> since I haven't managed to create them at will)  You will need to update
> your partition boot code for it to be supported during early boot.  i.e.
> gpart bootcode -p /boot/gptzfsboot -i <boot partition> <disk>
> The "all block copies unavailable" is a frustrating error, since all it
> means is a failed read, but we don't get a clue what failed or why.
> With the code that is in -CURRENT it will report gang blocks if found,
> even if it fails to read them.

	I confirmed reproduce.

	1. zpool list, and get SIZE and CAP.
		$ zpool list
		NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
		tank   59.5G  48.4G  11.1G    81%  ONLINE  -

	2. reduce AVAIL < 10% with creating dummy file like ...
		$ dd if=/dev/zero of=$HOME/DUMMY.FILE bs=1m count=5632
		5632+0 records in
		5632+0 records out
		5905580032 bytes transferred in 49.822200 secs (118533104 bytes/sec)
		$ zpool list
		NAME    SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
		tank   59.5G  53.9G  5.61G    90%  ONLINE  -

	3. cd /boot/; cp -pr kernel kernel.err
	   In this time, if reboot, we can get boot time error.

	4. rm $HOME/DUMMY.FILE, and reboot

	5. boot kernel.err on new-loader.
	   I can get "ZFS: gang block detected!" message and overrun:D.
Received on Tue Oct 27 2009 - 21:17:42 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:57 UTC