git: hammer2 - freemap and data check code
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon Aug 4 01:20:37 PDT 2014
commit a71db85d9ad6015dbdba1b15106e08ea69fdd67d
Author: Matthew Dillon <dillon at 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
More information about the Commits
mailing list