Merge pull request #38390 from xxhdx1985126/wip-obc-related-issues

crimson/osd: fix several obc related issues

Reviewed-by: Kefu Chai <kchai@redhat.com>
This commit is contained in:
Kefu Chai 2020-12-02 21:13:51 +08:00 committed by GitHub
commit ca42b2b011
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 6 additions and 7 deletions

View File

@ -173,10 +173,8 @@ public:
return false;
}
}
seastar::future<> wait_recovery_read() {
return lock.lock_for_read().then([this] {
recovery_read_marker = true;
});
void wait_recovery_read() {
recovery_read_marker = true;
}
void drop_recovery_read() {
assert(recovery_read_marker);

View File

@ -840,7 +840,7 @@ PG::with_head_obc(hobject_t oid, with_obc_func_t&& func)
logger().debug("with_head_obc: found {} in cache", oid);
} else {
logger().debug("with_head_obc: cache miss on {}", oid);
loaded = obc->with_promoted_lock<RWState::RWEXCL>([this, obc] {
loaded = obc->with_promoted_lock<State>([this, obc] {
return load_head_obc(obc);
});
}
@ -873,7 +873,7 @@ PG::with_clone_obc(hobject_t oid, with_obc_func_t&& func)
logger().debug("with_clone_obc: found {} in cache", coid);
} else {
logger().debug("with_clone_obc: cache miss on {}", coid);
loaded = clone->template with_promoted_lock<RWState::RWEXCL>(
loaded = clone->template with_promoted_lock<State>(
[coid, clone, head, this] {
return backend->load_metadata(coid).safe_then(
[coid, clone=std::move(clone), head=std::move(head)](auto md) mutable {

View File

@ -126,7 +126,8 @@ auto ReplicatedRecoveryBackend::load_obc_for_recovery(
return pg.with_head_obc<RWState::RWREAD>(soid, [&recovery_waiter](auto obc) {
logger().debug("load_obc_for_recovery: loaded obc: {}", obc->obs.oi.soid);
recovery_waiter.obc = obc;
return recovery_waiter.obc->wait_recovery_read();
recovery_waiter.obc->wait_recovery_read();
return seastar::now();
});
}