From 0b4c359a638ced910650a2589067cd2fc7cb849d Mon Sep 17 00:00:00 2001 From: Joe Thornber Date: Fri, 26 Apr 2013 13:18:24 +0100 Subject: [PATCH] [block manager] The dirty flag for blocks was never being cleared, causes redundant writes. --- persistent-data/block.tcc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/persistent-data/block.tcc b/persistent-data/block.tcc index 7db9b3a..cc46ff6 100644 --- a/persistent-data/block.tcc +++ b/persistent-data/block.tcc @@ -231,6 +231,7 @@ block_manager::block::flush() if (dirty_) { validator_->prepare(*data_, location_); io_->write_buffer(location_, *data_); + dirty_ = false; } } @@ -341,6 +342,9 @@ block_manager::read_lock(block_address location, if (cached_block) { (*cached_block)->check_read_lockable(); + + // FIXME: a different validator may now be set. + return read_ref(*this, *cached_block); }