On 31/03/2010 10:27, Erik Trimble wrote:
Orvar's post over in opensol-discuss has me thinking:

After reading the paper and looking at design docs, I'm wondering if
there is some facility to allow for comparing data in the ARC to it's
corresponding checksum. That is, if I've got the data I want in the ARC,
how can I be sure it's correct (and free of hardware memory errors)? I'd
assume the way is to also store absolutely all the checksums for all
blocks/metadatas being read/written in the ARC (which, of course, means
that only so much RAM corruption can be compensated for), and do a
validation when that every time that block is used/written from the ARC.
You'd likely have to do constant metadata consistency checking, and
likely have to hold multiple copies of metadata in-ARC to compensate for
possible corruption. I'm assuming that this has at least been explored,
right?

A subset of this is already done. The ARC keeps its own in memory checksum (because some buffers in the ARC are not yet on stable storage so don't have a block pointer checksum yet).

http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/fs/zfs/arc.c

arc_buf_freeze()
arc_buf_thaw()
arc_cksum_verify()
arc_cksum_compute()

It isn't done on every access but it can detect in memory corruption - I've seen it happen on several occasions but all due to errors in my code not bad physical memory.

Doing in more frequently could cause a significant performance problem.

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

Reply via email to