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

Method adjust_stack

src/test/osd/Object.cc:84–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

82}
83
84void ObjectDesc::iterator::adjust_stack() {
85 while (!stack.empty() && pos >= stack.top().second.next) {
86 ceph_assert(pos == stack.top().second.next);
87 size = stack.top().second.size;
88 current = stack.top().first;
89 stack.pop();
90 }
91
92 if (stack.empty()) {
93 cur_valid_till = std::numeric_limits<uint64_t>::max();
94 } else {
95 cur_valid_till = stack.top().second.next;
96 }
97
98 while (current != layers.end() && !current->covers(pos)) {
99 uint64_t next = current->next(pos);
100 if (next < cur_valid_till) {
101 stack.emplace(current, StackState{next, size});
102 cur_valid_till = next;
103 }
104
105 ++current;
106 }
107
108 if (current == layers.end()) {
109 size = 0;
110 } else {
111 current->iter.seek(pos);
112 size = std::min(size, current->get_size());
113 cur_valid_till = std::min(
114 current->valid_till(pos),
115 cur_valid_till);
116 }
117}
118
119const ContDesc &ObjectDesc::most_recent() {
120 return layers.begin()->second;

Callers

nothing calls this directly

Calls 9

coversMethod · 0.80
valid_tillMethod · 0.80
emptyMethod · 0.45
popMethod · 0.45
endMethod · 0.45
nextMethod · 0.45
emplaceMethod · 0.45
seekMethod · 0.45
get_sizeMethod · 0.45

Tested by

no test coverage detected