If the object is missing on the primary, we need to fully populate the
missing_loc.needs_recovery_map. This broke with the recent refactoring of
recovery for EC, somewhere around
84e2f39c557c79e9ca7c3c3f0eb0bfa4860bf899.
Fixes: #8008
Signed-off-by: Sage Weil <sage@inktank.com>
assert(waiting_for_unreadable_object.empty());
pg_log.missing_add(soid, oi.version, eversion_t());
+ missing_loc.add_missing(soid, oi.version, eversion_t());
missing_loc.add_location(soid, ok_peer);
pg_log.set_last_requested(0);
}
}
}
+
+ void add_missing(const hobject_t &hoid, eversion_t need, eversion_t have) {
+ needs_recovery_map[hoid] = pg_missing_t::item(need, have);
+ }
void revise_need(const hobject_t &hoid, eversion_t need) {
assert(needs_recovery(hoid));
needs_recovery_map[hoid].need = need;