>>>>> "re" == Richard Elling <richard.ell...@gmail.com> writes:

    re> As I said before, if the checksum matches, then the data is
    re> checked for sequence number = previous + 1, the blk_birth ==
    re> 0, and the size is correct. Since this data lives inside the
    re> block, it is unlikely that a collision would also result in a
    re> valid block.

That's just a description of how the zil works, not an additional
layer of protection for user data in the ZIL beyond the checksum.  The
point of all this is to avoid needing to write a synchronous commit
sector to mark the block valid.  Instead, the block becomes valid once
it's entirely written.  Yes, the checksum has an additional, critical,
use in the ZIL compared to its use in the bulk pool, but checking
these header fields for sanity does nothing to mitigate broken
fletcher2's weakness in detecting corruption of the user data stored
inside the zil records.  It's completely orthogonal.

If anything, the additional use of broken fletcher2 in the ZIL is a
reason it's even more important to fix the checksum in the ZIL:
checksum mismatches occur in the ZIL even during normal operation,
even when the storage is not misbehaving, because sometimes blocks are
incompletely written.  This is the normal case, not the exception,
because the ZIL is only read after unclean shutdown.

and AIUI you are saying fletcher2 is still the default for bulk pool
data, too?  even on newly created pools with the latest code?  The fix
was just to add the word ``deprecated'' to some documentation
somewhere, without actually performing the deprecation?  I feel like
FreeBSD/NetBSD would probably have left this bug open until it's
fixed.  :/  Ubuntu or Gentoo would probably keep closing and reopening
it though while people haggled in the comments section.

Attachment: pgpiLfE4opE8N.pgp
Description: PGP signature

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

Reply via email to