mirror of
https://github.com/ceph/ceph
synced 2025-02-23 19:17:37 +00:00
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:
commit
ca42b2b011
@ -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);
|
||||
|
@ -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 {
|
||||
|
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user