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

Method minimum_to_decode

src/test/osd/MockErasureCode.h:74–111  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

72 }
73
74 int minimum_to_decode(const shard_id_set &want_to_read, const shard_id_set &available,
75 shard_id_set &minimum_set,
76 shard_id_map<std::vector<std::pair<int, int>>> *minimum_sub_chunks) override {
77 bool recover = false;
78 for (shard_id_t shard : want_to_read) {
79 if (available.contains(shard)) {
80 minimum_set.insert(shard);
81 } else {
82 recover = true;
83 break;
84 }
85 }
86
87 if (recover) {
88 minimum_set.clear();
89
90 // Shard is missing. Collect data_chunk_count shards from available
91 // shards for recovery.
92 for (auto a : available) {
93 minimum_set.insert(a);
94 if (std::cmp_equal(minimum_set.size(), data_chunk_count)) {
95 break;
96 }
97 }
98
99 if (std::cmp_not_equal(minimum_set.size(), data_chunk_count)) {
100 minimum_set.clear();
101 return -EIO; // Cannot recover.
102 }
103 }
104
105 if (minimum_sub_chunks) {
106 for (auto &&shard : minimum_set) {
107 minimum_sub_chunks->emplace(shard, default_sub_chunk);
108 }
109 }
110 return 0;
111 }
112
113 [[deprecated]]
114 int minimum_to_decode(const std::set<int> &want_to_read,

Callers 2

TESTFunction · 0.45
TESTFunction · 0.45

Calls 5

containsMethod · 0.45
insertMethod · 0.45
clearMethod · 0.45
sizeMethod · 0.45
emplaceMethod · 0.45

Tested by

no test coverage detected