[caching] start wiring up the discard bitset

This commit is contained in:
Joe Thornber 2013-10-10 13:08:04 +01:00
parent 9b5bf559ec
commit 5dbaf8371c
3 changed files with 17 additions and 0 deletions

View File

@ -239,6 +239,7 @@ CACHE_CHECK_SOURCE=\
persistent-data/hex_dump.cc \ persistent-data/hex_dump.cc \
persistent-data/lock_tracker.cc \ persistent-data/lock_tracker.cc \
persistent-data/data-structures/btree.cc \ persistent-data/data-structures/btree.cc \
persistent-data/data-structures/bitset.cc \
persistent-data/space_map.cc \ persistent-data/space_map.cc \
persistent-data/space-maps/disk.cc \ persistent-data/space-maps/disk.cc \
persistent-data/space-maps/recursive.cc \ persistent-data/space-maps/recursive.cc \

View File

@ -52,6 +52,7 @@ metadata::commit()
commit_space_map(); commit_space_map();
commit_mappings(); commit_mappings();
commit_hints(); commit_hints();
commit_discard_bits();
commit_superblock(); commit_superblock();
} }
@ -94,6 +95,8 @@ metadata::create_metadata(block_manager<>::ptr bm)
// We can't instantiate the hint array yet, since we don't know the // We can't instantiate the hint array yet, since we don't know the
// hint width. // hint width.
discard_bits_ = bitset::ptr(new bitset(tm_));
} }
void void
@ -112,6 +115,10 @@ metadata::open_metadata(block_manager<>::ptr bm)
hints_ = hint_array::ptr( hints_ = hint_array::ptr(
new hint_array(tm_, sb_.policy_hint_size, new hint_array(tm_, sb_.policy_hint_size,
sb_.hint_root, sb_.cache_blocks)); sb_.hint_root, sb_.cache_blocks));
if (sb_.discard_root)
discard_bits_ = bitset::ptr(
new bitset(tm_, sb_.discard_root, sb_.cache_blocks));
} }
void void
@ -133,6 +140,12 @@ metadata::commit_hints()
sb_.hint_root = hints_->get_root(); sb_.hint_root = hints_->get_root();
} }
void
metadata::commit_discard_bits()
{
// FIXME: finish
}
void void
metadata::commit_superblock() metadata::commit_superblock()
{ {

View File

@ -3,6 +3,7 @@
#include "persistent-data/block.h" #include "persistent-data/block.h"
#include "persistent-data/data-structures/array.h" #include "persistent-data/data-structures/array.h"
#include "persistent-data/data-structures/bitset.h"
#include "persistent-data/endian_utils.h" #include "persistent-data/endian_utils.h"
#include "persistent-data/space-maps/disk.h" #include "persistent-data/space-maps/disk.h"
#include "persistent-data/transaction_manager.h" #include "persistent-data/transaction_manager.h"
@ -37,6 +38,7 @@ namespace caching {
checked_space_map::ptr metadata_sm_; checked_space_map::ptr metadata_sm_;
mapping_array::ptr mappings_; mapping_array::ptr mappings_;
hint_array::ptr hints_; hint_array::ptr hints_;
bitset::ptr discard_bits_;
private: private:
void init_superblock(); void init_superblock();
@ -47,6 +49,7 @@ namespace caching {
void commit_space_map(); void commit_space_map();
void commit_mappings(); void commit_mappings();
void commit_hints(); void commit_hints();
void commit_discard_bits();
void commit_superblock(); void commit_superblock();
}; };
}; };