您的位置:首页 > 其它

rgw librados io

2016-05-24 13:29 344 查看
//初始化user quota 和bucket quota

op->init_processing()


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

op->verify_op_mask();


//对应ACL权限的检测

op->verify_permission();


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

op->verify_params();


RGWPutObjProcessor  RGWPutObjProcessor_Aio
1.RGWPutObjProcessor_Atomic
2.RGWPutObjProcessor_Multipart(继承 RGWPutObjProcessor_Atomic)


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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  librados rgw