*/
void release_object_locks(
ObcLockManager &lock_manager) {
- list<pair<hobject_t, list<OpRequestRef> > > to_req;
+ list<pair<ObjectContextRef, list<OpRequestRef> > > to_req;
bool requeue_recovery = false;
bool requeue_snaptrim = false;
lock_manager.put_locks(
if (!to_req.empty()) {
// requeue at front of scrub blocking queue if we are blocked by scrub
for (auto &&p: to_req) {
- if (write_blocked_by_scrub(p.first.get_head())) {
+ if (write_blocked_by_scrub(p.first->obs.oi.soid.get_head())) {
for (auto& op : p.second) {
op->mark_delayed("waiting for scrub");
}
}
void put_locks(
- list<pair<hobject_t, list<OpRequestRef> > > *to_requeue,
+ list<pair<ObjectContextRef, list<OpRequestRef> > > *to_requeue,
bool *requeue_recovery,
bool *requeue_snaptrimmer) {
- for (auto p: locks) {
+ for (auto& p: locks) {
list<OpRequestRef> _to_requeue;
p.second.obc->put_lock_type(
p.second.type,
requeue_recovery,
requeue_snaptrimmer);
if (to_requeue) {
- to_requeue->push_back(
- make_pair(
- p.second.obc->obs.oi.soid,
- std::move(_to_requeue)));
+ // We can safely std::move here as the whole `locks` is going
+ // to die just after the loop.
+ to_requeue->emplace_back(std::move(p.second.obc),
+ std::move(_to_requeue));
}
}
locks.clear();