Hey all,

New to ZFS, I made a critical error when migrating data and
configuring zpools according to needs - I stored a snapshot stream to
a file using "zfs send -R [filesystem]@[snapshot] >[stream_file]".
When I attempted to receive the stream onto to the newly configured
pool, I ended up with a checksum mismatch and thought I had lost my
data.

After googling the issue and finding nil, I downloaded FreeBSD
9-CURRENT (development), installed, and recompiled the kernel making
one modification to
"/usr/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c":

Comment out the following lines (1439 - 1440 at the time of writing):

                        if (!ZIO_CHECKSUM_EQUAL(drre.drr_checksum, pcksum))
                                        ra.err = ECKSUM;

Once recompiled and booted up on the new kernel, I executed "zfs
receive -v [filesystem] <[stream_file]". Once received, I scrubbed the
zpool, which corrected a couple of checksum errors, and proceeded to
finish setting up my NAS. Hopefully, this might help someone else if
they're stupid enough to make the same mistake I did...

Note: changing this section of the ZFS kernel code should not be used
for anything other than special cases when you need to bypass the data
integrity checks for recovery purposes.

-Johnny Walker
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to