rgw librados io

    xiaoxiao2021-08-14  133

    原链接

    http://blog.csdn.net/litianze99/article/details/51489517

    //初始化user quota 和bucket quota

    op->init_processing() 1 1

    //验证用户是否有对应的操作,

    op->verify_op_mask(); 1 1

    //对应ACL权限的检测

    op->verify_permission(); 1 1

    //验证请求的参数是否合法

    op->verify_params(); 1 1 RGWPutObjProcessor RGWPutObjProcessor_Aio 1.RGWPutObjProcessor_Atomic 2.RGWPutObjProcessor_Multipart(继承 RGWPutObjProcessor_Atomic) 123 123 RGWOP::execute() put_data_and_throttle() RGWPutObjProcessor_Atomic::handle_data() RGWPutObjProcessor_Atomic::write_data() RGWPutObjProcessor_Aio::handle_obj_data() RGWRados::aio_put_obj_data() librados::ObjectWriteOperation()-->op(继承librados::ObjectOperation 实例化该对象) librados::IoCtx::aio_operate(...op...) IoCtxImpl::librados::IoCtxImpl::queue_aio_write()(把异步写op放入librados::IoCtxImpl::aio_write_list 列表中) librados::IoCtxImpl::objecter->mutate()(objecter 是osdc/Objecter的实例,转变op(ObjectOP)-->op(Op (继承RefCountedObject))) osdc/Objecter::op_submit(o) osdc/Objecter::_op_submit() osdc/Objecter::_calc_target() osdc/Objecter::_get_session()(OSDSession 是Objecter的内部结构,主要用于为Objecter构建session,在osd_sessions中保存) osdc/Objecter::_prepare_osd_op(op); //new a MOSDOp which will be used by osd osdc/Objecter::_session_op_assign(s, op) //assign op to session osdc/Objecter::_send_op()send the msg out with the connection incorporated in the OSDSession op->session->con.send_message()(由与session关联的PipeConnection::send_message(Message *m)发送消息) SimpleMessenger::send_message() SimpleMessenger::_send_message(m, con) SimpleMessenger::submit_message() PipConnection::pipe->_send(m)()(将要发送的消息放入队列中map<int, list<Message*> > out_q) RGWPutObjProcessor_Atomic::throttle_data() Objecter 中有OSDsession MOSDOp SimpleMesseger为osdsession 提供pipconnection。(pip)
    转载请注明原文地址: https://ju.6miu.com/read-676317.html

    最新回复(0)