]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
PG: set delete flag in needs_recovery_map for deletes
authorNeha Ojha <nojha@redhat.com>
Thu, 18 Jan 2018 19:04:03 +0000 (11:04 -0800)
committerNeha Ojha <nojha@redhat.com>
Wed, 14 Mar 2018 22:56:05 +0000 (15:56 -0700)
Signed-off-by: Neha Ojha <nojha@redhat.com>
src/osd/PG.h
src/osd/PrimaryLogPG.cc

index b07f2fc07092693da5787b7e905190169fdb0b42..5ca38f46ad61cefe1507d755d60fed64f06469cc 100644 (file)
@@ -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);
index 640cd6b7b3ec7d133f6f38ac345af2cf60f3a539..d2904eb329b04e08c8223f0132f9134e9c78ae2f 100644 (file)
@@ -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());
+      }
     }
   }