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

Method start_ops

src/librbd/AsyncObjectThrottle.cc:30–48  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

28
29template <typename T>
30void AsyncObjectThrottle<T>::start_ops(uint64_t max_concurrent) {
31 ceph_assert(ceph_mutex_is_locked(m_image_ctx.owner_lock));
32 bool complete;
33 {
34 std::lock_guard l{m_lock};
35 for (uint64_t i = 0; i < max_concurrent; ++i) {
36 start_next_op();
37 if (m_ret < 0 && m_current_ops == 0) {
38 break;
39 }
40 }
41 complete = (m_current_ops == 0);
42 }
43 if (complete) {
44 // avoid re-entrant callback
45 m_image_ctx.op_work_queue->queue(m_ctx, m_ret);
46 delete this;
47 }
48}
49
50template <typename T>
51void AsyncObjectThrottle<T>::finish_op(int r) {

Callers 9

migrate_objectsMethod · 0.80
send_verify_objectsMethod · 0.80
send_rollback_objectsMethod · 0.80
flatten_objectsMethod · 0.80
send_copyup_objectsMethod · 0.80
send_remove_objectsMethod · 0.80
sparsify_objectsMethod · 0.80
update_object_mapsMethod · 0.80

Calls 1

queueMethod · 0.45

Tested by

no test coverage detected