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;
}
}