MCPcopy Create free account
hub / github.com/ceph/ceph / try_reads_to_commit

Method try_reads_to_commit

src/osd/ECCommonL.cc:870–1031  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

868}
869
870bool ECCommonL::RMWPipeline::try_reads_to_commit()
871{
872 if (waiting_reads.empty())
873 return false;
874 Op *op = &(waiting_reads.front());
875 if (op->read_in_progress())
876 return false;
877 waiting_reads.pop_front();
878 waiting_commit.push_back(*op);
879
880 dout(10) << __func__ << ": starting commit on " << *op << dendl;
881 dout(20) << __func__ << ": " << cache << dendl;
882
883 get_parent()->apply_stats(
884 op->hoid,
885 op->delta_stats);
886
887 if (op->using_cache) {
888 for (auto &&hpair: op->pending_read) {
889 op->remote_read_result[hpair.first].insert(
890 cache.get_remaining_extents_for_rmw(
891 hpair.first,
892 op->pin,
893 hpair.second));
894 }
895 op->pending_read.clear();
896 } else {
897 ceph_assert(op->pending_read.empty());
898 }
899
900 map<shard_id_t, ObjectStore::Transaction> trans;
901 for (set<pg_shard_t>::const_iterator i =
902 get_parent()->get_acting_recovery_backfill_shards().begin();
903 i != get_parent()->get_acting_recovery_backfill_shards().end();
904 ++i) {
905 trans[i->shard];
906 }
907
908 op->trace.event("start ec write");
909
910 map<hobject_t,extent_map> written;
911 op->generate_transactions(
912 ec_impl,
913 get_parent()->get_info().pgid.pgid,
914 sinfo,
915 &written,
916 &trans,
917 get_parent()->get_dpp(),
918 get_osdmap()->require_osd_release);
919
920 dout(20) << __func__ << ": " << cache << dendl;
921 dout(20) << __func__ << ": written: " << written << dendl;
922 dout(20) << __func__ << ": op: " << *op << dendl;
923
924 if (!get_parent()->get_pool().allows_ecoverwrites()) {
925 for (auto &&i: op->log_entries) {
926 if (i.requires_kraken()) {
927 derr << __func__ << ": log entry " << i << " requires kraken"

Callers

nothing calls this directly

Calls 15

get_osdmapFunction · 0.85
get_infoFunction · 0.85
test_write_error1Function · 0.85
ghobject_tClass · 0.85
spg_tClass · 0.85
read_in_progressMethod · 0.80
allows_ecoverwritesMethod · 0.80
get_interval_setMethod · 0.80
present_rmw_updateMethod · 0.80
keyvalMethod · 0.80
get_parentFunction · 0.50

Tested by

no test coverage detected