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

Method clone_range

src/test/common/ObjectContents.cc:76–108  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

74}
75
76void ObjectContents::clone_range(ObjectContents &other,
77 interval_set<uint64_t> &intervals)
78{
79 interval_set<uint64_t> written_to_clone;
80 written_to_clone.intersection_of(intervals, other.written);
81
82 interval_set<uint64_t> zeroed = intervals;
83 zeroed.subtract(written_to_clone);
84
85 written.union_of(intervals);
86 written.subtract(zeroed);
87
88 for (interval_set<uint64_t>::iterator i = written_to_clone.begin();
89 i != written_to_clone.end();
90 ++i) {
91 uint64_t start = i.get_start();
92 uint64_t len = i.get_len();
93
94 unsigned int seed = get_iterator().get_state(start+len);
95
96 seeds[start+len] = seed;
97 seeds.erase(seeds.lower_bound(start), seeds.lower_bound(start+len));
98
99 seeds[start] = other.get_iterator().get_state(start);
100 seeds.insert(other.seeds.upper_bound(start),
101 other.seeds.lower_bound(start+len));
102 }
103
104 if (intervals.range_end() > _size)
105 _size = intervals.range_end();
106 _exists = true;
107 return;
108}
109
110void ObjectContents::write(unsigned int seed,
111 uint64_t start,

Callers 2

test_object_contentsFunction · 0.45
TESTFunction · 0.45

Calls 14

intersection_ofMethod · 0.45
subtractMethod · 0.45
union_ofMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
get_startMethod · 0.45
get_lenMethod · 0.45
get_stateMethod · 0.45
eraseMethod · 0.45
lower_boundMethod · 0.45
get_iteratorMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected