[space-maps] remove count_possibly_greater_than_one
This is only ever called with a recursive space map wrapper, and that causes too many false positives. False positives trigger a copy of a metadata page, so this is a false economy.
This commit is contained in:
parent
29cfdd8979
commit
128ecc27f2
@ -77,10 +77,6 @@ namespace {
|
|||||||
return sm_->find_free(filtered_it);
|
return sm_->find_free(filtered_it);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool count_possibly_greater_than_one(block_address b) const {
|
|
||||||
return sm_->count_possibly_greater_than_one(b);
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void extend(block_address extra_blocks) {
|
virtual void extend(block_address extra_blocks) {
|
||||||
return sm_->extend(extra_blocks);
|
return sm_->extend(extra_blocks);
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,6 @@ namespace {
|
|||||||
void inc(block_address b, ref_t count) override;
|
void inc(block_address b, ref_t count) override;
|
||||||
void dec(block_address b, ref_t count) override;
|
void dec(block_address b, ref_t count) override;
|
||||||
maybe_block find_free(span_iterator &it) override;
|
maybe_block find_free(span_iterator &it) override;
|
||||||
bool count_possibly_greater_than_one(block_address b) const override;
|
|
||||||
void extend(block_address extra_blocks) override;
|
void extend(block_address extra_blocks) override;
|
||||||
void count_metadata(block_counter &bc) const override;
|
void count_metadata(block_counter &bc) const override;
|
||||||
|
|
||||||
@ -131,11 +130,6 @@ namespace {
|
|||||||
return maybe_block();
|
return maybe_block();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
|
||||||
core_map::count_possibly_greater_than_one(block_address b) const {
|
|
||||||
return get_count(b) > 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
core_map::extend(block_address extra_blocks) {
|
core_map::extend(block_address extra_blocks) {
|
||||||
throw std::runtime_error("'extend' not implemented");
|
throw std::runtime_error("'extend' not implemented");
|
||||||
|
@ -429,10 +429,6 @@ namespace {
|
|||||||
return maybe_block();
|
return maybe_block();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool count_possibly_greater_than_one(block_address b) const {
|
|
||||||
return get_count(b) > 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void extend(block_address extra_blocks) {
|
virtual void extend(block_address extra_blocks) {
|
||||||
block_address nr_blocks = nr_blocks_ + extra_blocks;
|
block_address nr_blocks = nr_blocks_ + extra_blocks;
|
||||||
|
|
||||||
|
@ -64,11 +64,6 @@ namespace persistent_data {
|
|||||||
return boost::optional<block_address>(0);
|
return boost::optional<block_address>(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool count_possibly_greater_than_one(block_address b) const {
|
|
||||||
fail();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void extend(block_address extra_blocks) {
|
void extend(block_address extra_blocks) {
|
||||||
fail();
|
fail();
|
||||||
}
|
}
|
||||||
|
@ -132,16 +132,6 @@ namespace {
|
|||||||
return sm_->find_free(filtered_it);
|
return sm_->find_free(filtered_it);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual bool count_possibly_greater_than_one(block_address b) const {
|
|
||||||
recursing_const_lock lock(*this);
|
|
||||||
|
|
||||||
bool gto = sm_->count_possibly_greater_than_one(b);
|
|
||||||
if (gto)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return modify_count(b, 1) > 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void extend(block_address extra_blocks) {
|
virtual void extend(block_address extra_blocks) {
|
||||||
cant_recurse("extend");
|
cant_recurse("extend");
|
||||||
recursing_lock lock(*this);
|
recursing_lock lock(*this);
|
||||||
|
@ -88,8 +88,6 @@ namespace persistent_data {
|
|||||||
|
|
||||||
virtual maybe_block find_free(span_iterator &it) = 0;
|
virtual maybe_block find_free(span_iterator &it) = 0;
|
||||||
|
|
||||||
virtual bool count_possibly_greater_than_one(block_address b) const = 0;
|
|
||||||
|
|
||||||
virtual void extend(block_address extra_blocks) = 0;
|
virtual void extend(block_address extra_blocks) = 0;
|
||||||
|
|
||||||
struct iterator {
|
struct iterator {
|
||||||
|
@ -62,7 +62,7 @@ transaction_manager::new_block(validator v)
|
|||||||
pair<transaction_manager::write_ref, bool>
|
pair<transaction_manager::write_ref, bool>
|
||||||
transaction_manager::shadow(block_address orig, validator v)
|
transaction_manager::shadow(block_address orig, validator v)
|
||||||
{
|
{
|
||||||
bool need_inc = sm_->count_possibly_greater_than_one(orig);
|
bool need_inc = sm_->get_count(orig) > 1;
|
||||||
if (is_shadow(orig) && !need_inc)
|
if (is_shadow(orig) && !need_inc)
|
||||||
return make_pair(bm_->write_lock(orig, v), need_inc);
|
return make_pair(bm_->write_lock(orig, v), need_inc);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user