From: myoungwon oh Date: Fri, 12 Jul 2019 12:01:39 +0000 (+0900) Subject: src/osd/PrimaryLogPG.cc: do manifest_flush() before tier_promote() when an object... X-Git-Tag: v15.1.0~2104^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=9e10934d59f50aea008138ec0dce11f7c6d7b9b2;p=ceph.git src/osd/PrimaryLogPG.cc: do manifest_flush() before tier_promote() when an object is dirty Signed-off-by: Myoungwon Oh --- diff --git a/src/osd/PrimaryLogPG.cc b/src/osd/PrimaryLogPG.cc index eeb619345c0f..6635ab9d4609 100644 --- a/src/osd/PrimaryLogPG.cc +++ b/src/osd/PrimaryLogPG.cc @@ -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; } }