The question I have is whether it would be possible (reasonable?) to
implement a daemon (possibly a kernel daemon) which maintains a
checksum hash of each page in the page cache which has not been
dirtied. The daemon would periodically (only when the system is idle)
regenerate checksums for pages and compare them with it's internal
database. If an undirtied page has a different checksum, the page is
declared corrupted: a log message is generated (for later statistics
collection) and the page is maked invalid/free. This will force the
kernel to reload the page from disc next time it is required.
Obviously, when a page is dirtied the daemon would have to remove it
from its database. It might also be an advantage to prevent the normal
modification of the last used time for the page when the daemon
accesses it.
While the above scheme is not as robust as proper ECC memory, it has
the distinct advantage of being cheap (free:-) and should provide some
level of protection against random bit errors. I shudder to think what
other bit errors have crept into my source tree which don't prevent
compiling :-(
Anyway, I'd like to get some reaction from those who know more about
the page cache implementation as to what they think of this idea?
Regards,
Richard....