[cache] a lot of format 2 changes

This commit is contained in:
Joe Thornber
2016-09-30 11:21:20 -04:00
parent bce4acf214
commit 05c4b7b400
10 changed files with 98 additions and 40 deletions

View File

@@ -3,6 +3,7 @@
#include "persistent-data/space-maps/core.h"
using namespace caching;
namespace pd = persistent_data;
//----------------------------------------------------------------
@@ -30,15 +31,11 @@ namespace {
//----------------------------------------------------------------
metadata::metadata(block_manager<>::ptr bm, open_type ot)
metadata::metadata(block_manager<>::ptr bm, open_type ot, unsigned metadata_version)
{
switch (ot) {
case CREATE:
create_metadata(bm);
break;
case OPEN:
open_metadata(bm);
create_metadata(bm, metadata_version);
break;
default:
@@ -46,6 +43,11 @@ metadata::metadata(block_manager<>::ptr bm, open_type ot)
}
}
metadata::metadata(block_manager<>::ptr bm)
{
open_metadata(bm);
}
void
metadata::commit(bool clean_shutdown)
{
@@ -65,7 +67,7 @@ metadata::setup_hint_array(size_t width)
}
void
metadata::create_metadata(block_manager<>::ptr bm)
metadata::create_metadata(block_manager<>::ptr bm, unsigned metadata_version)
{
tm_ = open_tm(bm);
@@ -79,7 +81,10 @@ metadata::create_metadata(block_manager<>::ptr bm)
// We can't instantiate the hint array yet, since we don't know the
// hint width.
discard_bits_ = persistent_data::bitset::ptr(new persistent_data::bitset(*tm_));
discard_bits_ = pd::bitset::ptr(new pd::bitset(*tm_));
if (metadata_version >= 2)
dirty_bits_ = pd::bitset::ptr(new pd::bitset(*tm_));
}
void
@@ -100,8 +105,12 @@ metadata::open_metadata(block_manager<>::ptr bm)
sb_.hint_root, sb_.cache_blocks));
if (sb_.discard_root)
discard_bits_ = persistent_data::bitset::ptr(
new persistent_data::bitset(*tm_, sb_.discard_root, sb_.discard_nr_blocks));
discard_bits_ = pd::bitset::ptr(
new pd::bitset(*tm_, sb_.discard_root, sb_.discard_nr_blocks));
if (sb_.version >= 2)
dirty_bits_ = pd::bitset::ptr(
new pd::bitset(*tm_, *sb_.dirty_root, sb_.cache_blocks));
}
void