Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 05 Feb 2008 15:19:12 +0100
From:      =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@des.no>
To:        Joe Peterson <joe@skyrush.com>
Cc:        freebsd-fs@freebsd.org
Subject:   Re: Forcing full file read in ZFS even when checksum error encountered
Message-ID:  <864pcnxz8f.fsf@ds4.des.no>
In-Reply-To: <47A864D9.4060504@skyrush.com> (Joe Peterson's message of "Tue\,  05 Feb 2008 06\:30\:01 -0700")
References:  <47A73C8D.3000107@skyrush.com> <86prvby5o1.fsf@ds4.des.no> <47A864D9.4060504@skyrush.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Joe Peterson <joe@skyrush.com> writes:
> Dag-Erling Sm=C3=B8rgrav <des@des.no> writes:
> > Joe Peterson <joe@skyrush.com> writes:
> > > When I try to copy the file, I get only 655360 bytes copied, and
> > > then the copy stops.  I assume this is because the next block is
> > > where the error is.
> > Try to lseek past it.
> Well, I'd like to actually read the "bad" data too, so I can see if it is
> really bad or if there is a metadata issue.  Basically, I'd like to recov=
er
> all the file's bytes this once without having ZFS stop me due to the chec=
ksum
> failure, just for debugging purposes.  Is this impossible in ZFS?

There is now way to "read the bad data" since an unrecoverable checksum
error means that ZFS has no idea which of the multiple version of the
affected block is the right one.

(I assume this was a raidz pool; if not, imagine Nelson Muntz from the
Simpsons yelling "ha ha!" at you)

My advice is to use 'dd conv=3Dnoerror' with a sufficiently small block
size to recover what parts you can.

DES
--=20
Dag-Erling Sm=C3=B8rgrav - des@des.no



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