]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
src/osd/PrimaryLogPG.cc: do manifest_flush() before tier_promote() when an object... 28778/head
authormyoungwon oh <omwmw@sk.com>
Fri, 12 Jul 2019 12:01:39 +0000 (21:01 +0900)
committermyoungwon oh <omwmw@sk.com>
Fri, 12 Jul 2019 13:26:15 +0000 (22:26 +0900)
Signed-off-by: Myoungwon Oh <omwmw@sk.com>
src/osd/PrimaryLogPG.cc

index eeb619345c0f15dd5c98c6c6067676ec98cf5720..6635ab9d460903fb1677aa0de477e71ec754904b 100644 (file)
@@ -2276,10 +2276,20 @@ PrimaryLogPG::cache_result_t PrimaryLogPG::maybe_handle_manifest_detail(
     ceph_osd_op& op = osd_op.op;
     if (op.op == CEPH_OSD_OP_SET_REDIRECT ||
        op.op == CEPH_OSD_OP_SET_CHUNK || 
-       op.op == CEPH_OSD_OP_TIER_PROMOTE ||
        op.op == CEPH_OSD_OP_UNSET_MANIFEST ||
        op.op == CEPH_OSD_OP_TIER_FLUSH) {
       return cache_result_t::NOOP;
+    } else if (op.op == CEPH_OSD_OP_TIER_PROMOTE) {
+      bool is_dirty = false;
+      for (auto& p : obc->obs.oi.manifest.chunk_map) {
+       if (p.second.is_dirty()) {
+         is_dirty = true;
+       }
+      }
+      if (is_dirty) {
+       start_flush(OpRequestRef(), obc, true, NULL, std::nullopt);
+      }
+      return cache_result_t::NOOP;
     }
   }