pg->share_pg_info();
pl->publish_stats_to_osd();
- pg->check_local();
-
- // waiters
- if (ps->flushes_in_progress == 0) {
- pg->requeue_ops(pg->waiting_for_peered);
- } else if (!pg->waiting_for_peered.empty()) {
- psdout(10) << __func__ << " flushes in progress, moving "
- << pg->waiting_for_peered.size()
- << " items to waiting_for_flush"
- << dendl;
- ceph_assert(pg->waiting_for_flush.empty());
- pg->waiting_for_flush.swap(pg->waiting_for_peered);
- }
-
pl->on_activate_complete();
return discard_event();
void PrimaryLogPG::on_activate_complete()
{
+ check_local();
+ // waiters
+ if (!recovery_state.needs_flush()) {
+ requeue_ops(waiting_for_peered);
+ } else if (!waiting_for_peered.empty()) {
+ dout(10) << __func__ << " flushes in progress, moving "
+ << waiting_for_peered.size()
+ << " items to waiting_for_flush"
+ << dendl;
+ ceph_assert(waiting_for_flush.empty());
+ waiting_for_flush.swap(waiting_for_peered);
+ }
+
+
// all clean?
if (needs_recovery()) {
dout(10) << "activate not all replicas are up-to-date, queueing recovery" << dendl;