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

Method send_verify_objects

src/librbd/operation/ObjectMapIterate.cc:250–275  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

248
249template <typename I>
250void ObjectMapIterateRequest<I>::send_verify_objects() {
251 ceph_assert(ceph_mutex_is_locked(m_image_ctx.owner_lock));
252 CephContext *cct = m_image_ctx.cct;
253
254 uint64_t snap_id;
255 uint64_t num_objects;
256 {
257 std::shared_lock l{m_image_ctx.image_lock};
258 snap_id = m_image_ctx.snap_id;
259 num_objects = Striper::get_num_objects(m_image_ctx.layout,
260 m_image_ctx.get_image_size(snap_id));
261 }
262 ldout(cct, 5) << this << " send_verify_objects" << dendl;
263
264 m_state = STATE_VERIFY_OBJECTS;
265
266 typename AsyncObjectThrottle<I>::ContextFactory context_factory(
267 boost::lambda::bind(boost::lambda::new_ptr<C_VerifyObjectCallback<I> >(),
268 boost::lambda::_1, &m_image_ctx, snap_id,
269 boost::lambda::_2, m_handle_mismatch, &m_invalidate));
270 AsyncObjectThrottle<I> *throttle = new AsyncObjectThrottle<I>(
271 this, m_image_ctx, context_factory, this->create_callback_context(),
272 &m_prog_ctx, 0, num_objects);
273 throttle->start_ops(
274 m_image_ctx.config.template get_val<uint64_t>("rbd_concurrent_management_ops"));
275}
276
277template <typename I>
278uint64_t ObjectMapIterateRequest<I>::get_image_size() const {

Callers

nothing calls this directly

Calls 4

bindClass · 0.85
start_opsMethod · 0.80
get_image_sizeMethod · 0.45

Tested by

no test coverage detected