]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
Merge remote-tracking branch 'gh/mimic-dev2'
authorSage Weil <sage@redhat.com>
Sun, 18 Mar 2018 23:39:46 +0000 (18:39 -0500)
committerSage Weil <sage@redhat.com>
Sun, 18 Mar 2018 23:39:46 +0000 (18:39 -0500)
1  2 
src/osd/ECBackend.cc
src/osd/ECMsgTypes.cc
src/osd/PG.cc
src/osd/PG.h
src/osd/PGBackend.h
src/osd/PrimaryLogPG.cc
src/osd/PrimaryLogPG.h
src/osd/ReplicatedBackend.cc

index 7210cf61971b7d5c8bf277a02e23710166ebce40,6e92775009b5b57ccfc54c8a2351ec35c20d4df8..2ad2e3563f26aef04b920d7a9200cd027cf110c5
@@@ -938,7 -929,10 +938,11 @@@ void ECBackend::handle_sub_write
    tls.push_back(std::move(op.t));
    tls.push_back(std::move(localt));
    get_parent()->queue_transactions(tls, msg);
 +  dout(30) << __func__ << " missing after" << get_parent()->get_log().get_missing().get_items() << dendl;
+   if (op.at_version != eversion_t()) {
+     // dummy rollforward transaction doesn't get at_version (and doesn't advance it)
+     get_parent()->op_applied(op.at_version);
+   }
  }
  
  void ECBackend::handle_sub_read(
Simple merge
diff --cc src/osd/PG.cc
Simple merge
diff --cc src/osd/PG.h
Simple merge
Simple merge
index 13adf8330b82261e42f09ddc1055dcdd9c66d438,bc27e844c24a0e86bfb22b807920e8944cd0d40f..3035db7fa4345620f436fb438629d11b06bef5fd
@@@ -10348,9 -10244,8 +10365,10 @@@ void PrimaryLogPG::submit_log_entries
        new OnComplete{this, rep_tid, get_osdmap()->get_epoch()});
        int r = osd->store->queue_transaction(ch, std::move(t), NULL);
        assert(r == 0);
+       op_applied(info.last_update);
      });
 +
 +  calc_trim_to();
  }
  
  void PrimaryLogPG::cancel_log_updates()
index c9a8f880e45fe89e143f9e188d24726c5895596d,dfa584b1ea39602a1755fc8026f9b51b2bd33fa4..2a034371f2d6b018c7423b2a176c864b92aa2048
@@@ -417,9 -414,22 +417,11 @@@ public
      append_log(logv, trim_to, roll_forward_to, t, transaction_applied);
    }
  
+   void op_applied(const eversion_t &applied_version) override;
    bool should_send_op(
      pg_shard_t peer,
 -    const hobject_t &hoid) override {
 -    if (peer == get_primary())
 -      return true;
 -    assert(peer_info.count(peer));
 -    bool should_send =
 -      hoid.pool != (int64_t)info.pgid.pool() ||
 -      hoid <= last_backfill_started ||
 -      hoid <= peer_info[peer].last_backfill;
 -    if (!should_send)
 -      assert(is_backfill_targets(peer));
 -    return should_send;
 -  }
 +    const hobject_t &hoid) override;
  
    bool pg_is_undersized() const override {
      return is_undersized();
Simple merge