}
}
- void add_missing(const hobject_t &hoid, eversion_t need, eversion_t have) {
- needs_recovery_map[hoid] = pg_missing_item(need, have);
+ void add_missing(const hobject_t &hoid, eversion_t need, eversion_t have, bool is_delete=false) {
+ needs_recovery_map[hoid] = pg_missing_item(need, have, is_delete);
}
void revise_need(const hobject_t &hoid, eversion_t need) {
auto it = needs_recovery_map.find(hoid);
pg_shard_t peer(*i);
if (peer == pg_whoami) continue;
if (async_recovery_targets.count(peer) && peer_missing[peer].is_missing(soid)) {
- missing_loc.add_missing(soid, ctx->at_version, eversion_t());
+ for (auto &&entry: ctx->log) {
+ missing_loc.add_missing(soid, ctx->at_version, eversion_t(), entry.is_delete());
+ }
}
}