From bb0ad5d8f8a3b8e3a23f54106cf9068661ac8352 Mon Sep 17 00:00:00 2001 From: Neha Ojha Date: Thu, 18 Jan 2018 11:04:03 -0800 Subject: [PATCH] PG: set delete flag in needs_recovery_map for deletes Signed-off-by: Neha Ojha --- src/osd/PG.h | 4 ++-- src/osd/PrimaryLogPG.cc | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/osd/PG.h b/src/osd/PG.h index b07f2fc070926..5ca38f46ad61c 100644 --- a/src/osd/PG.h +++ b/src/osd/PG.h @@ -800,8 +800,8 @@ protected: } } - 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); diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index 640cd6b7b3ec7..d2904eb329b04 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -10081,7 +10081,9 @@ void PrimaryLogPG::issue_repop(RepGather *repop, OpContext *ctx) 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()); + } } } -- 2.39.5