commit a71db85d9ad6015dbdba1b15106e08ea69fdd67d Author: Matthew Dillon <dil...@apollo.backplane.com> Date: Mon Aug 4 01:11:46 2014 -0700
hammer2 - freemap and data check code * Change the freemap to use 8 sets = ~32 reserved blocks instead of 14 sets. Use a straight iterator. (TODO - must invalidate newer volumes if an older volume backup is mounted RW because freemap will become inconsistent). * Update the freemap documentation. Requires more work. * MODIFY_OPTDATA can only skip to the end if chain->data is NULL in the BREF_TYPE_DATA case. chain->data might not be NULL if the data chain represents a compressed device buffer. * Add check code generation and testing. Currently just kprintf()s a warning if the check code does not match. Implement iscsi crc-32, sha-192 (this is sha-256 with the last 64 bits XOR'd into the first), and implement check generation and testing for all data, meta-data, and the freemap. For Everything. 64-bit CRCs are not yet implemented. * Fix a few cases where the DIO or the chain was not being properly dirtied prior to making modifications to the media contents via chain->data (this showed up because CRC tests were failing). * Cleanup: - CHAIN_FORCECOW is no longer used, remove it. - Move FLUSH_DEPTH_LIMIT from hammer2.h to hammer2_flush.c. - Remove debug structures from the blockref check union. - Remove some #if 0'd code that is no longer applicable. Summary of changes: sys/vfs/hammer2/FREEMAP | 190 ++++++++++++++++++++------------------ sys/vfs/hammer2/hammer2.h | 13 ++- sys/vfs/hammer2/hammer2_chain.c | 168 +++++++++++++++++++++++++++++---- sys/vfs/hammer2/hammer2_disk.h | 168 ++++++++++++++++----------------- sys/vfs/hammer2/hammer2_flush.c | 109 ++++++---------------- sys/vfs/hammer2/hammer2_freemap.c | 58 ++++++++---- sys/vfs/hammer2/hammer2_inode.c | 5 +- sys/vfs/hammer2/hammer2_vfsops.c | 21 ++++- 8 files changed, 430 insertions(+), 302 deletions(-) http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/a71db85d9ad6015dbdba1b15106e08ea69fdd67d -- DragonFly BSD source repository