{"id":533,"date":"2014-04-28T01:30:30","date_gmt":"2014-04-28T01:30:30","guid":{"rendered":"http:\/\/www.selinuxplus.com\/?p=533"},"modified":"2014-04-28T01:32:23","modified_gmt":"2014-04-28T01:32:23","slug":"ceph%e7%9a%84rbd-c%e6%96%87%e4%bb%b6","status":"publish","type":"post","link":"http:\/\/www.selinuxplus.com\/?p=533","title":{"rendered":"ceph\u7684rbd.ko libceph.ko\u6587\u4ef6"},"content":{"rendered":"<p>rbd.c<br \/>\nrbd \u5728\u5185\u6838\u7684linux-3.13.8\/drivers\/block\u76ee\u5f55\u4e0b\u3002<br \/>\n\u6a21\u5757\u7684\u521d\u59cb\u5316\u6587\u4ef6\u4e3arbd_init.<br \/>\n5321 module_init(rbd_init);<br \/>\n5322 module_exit(rbd_exit);<\/p>\n<p>rbd_slab_init kmem_cache_create  \u4ece kmem_cache \u4e2d\u83b7\u53d6\u4e00\u4e2a\u7f13\u5b58\u5668\u63cf\u8ff0\u7b26,\u5e76\u4e14\u6839\u636e\u53c2\u6570\u521d\u59cb\u5316\u4e00\u4e9b\u5fc5\u8981\u5b57\u6bb5\u3002<\/p>\n<pre class=\"lang:default decode:true \" >rbd_sysfs_init-&gt;device_register\r\n\t\t-&gt;bus_register<\/pre>\n<pre class=\"lang:default decode:true \" >static struct device rbd_root_dev = {\r\n     .init_name =    \"rbd\",\r\n     .release =      rbd_root_dev_release,\r\n};   <\/pre>\n<p> \u8c03\u7528\u6d41\u7a0b<\/p>\n<pre class=\"lang:default decode:true \" >rbd_add-&gt;rbd_add_parse_args-&gt;ceph_parse_options  -&gt; ceph_parse_ips \r\n\t\t\t\t\t\t -&gt;match_token-&gt;parse_extra_token \r\n\t\t\t\t\t\t -&gt;get_secret-&gt;\uff08request_key\uff0cceph_crypto_key_clone\uff09\r\n\t\t-&gt;rbd_dev_create\r\n\t\t-&gt;rbd_dev_image_probe -&gt;rbd_dev_header_watch_sync -&gt;rbd_obj_request_create\r\n\t\t\t\t\t\t\t\t-&gt;rbd_osd_req_create-&gt;ceph_osdc_alloc_request-&gt;ceph_msg_new\r\n\t<\/pre>\n<p>libceph.ko<\/p>\n<pre class=\"lang:default decode:true \" >44 module_init(init_ceph_lib);\r\n645 module_exit(exit_ceph_lib);<\/pre>\n<p>init_ceph_lib ->ceph_crypto_init->register_key_type;<\/p>\n<p>key_type_ceph \u7ed3\u6784\u4f53<\/p>\n<pre class=\"lang:default decode:true \" >484 struct key_type key_type_ceph = {\r\n485     .name       = \"ceph\",\r\n486     .instantiate    = ceph_key_instantiate,\r\n487     .match      = ceph_key_match,\r\n488     .destroy    = ceph_key_destroy,\r\n489 };<\/pre>\n<p>ceph_key_instantiate->ceph_crypto_key_decode<\/p>\n<pre class=\"lang:default decode:true \" >660 static const struct ceph_auth_client_ops ceph_x_ops = {\r\n661     .name = \"x\",\r\n662     .is_authenticated = ceph_x_is_authenticated,\r\n663     .should_authenticate = ceph_x_should_authenticate,\r\n664     .build_request = ceph_x_build_request,\r\n665     .handle_reply = ceph_x_handle_reply,                                                                                          \r\n666     .create_authorizer = ceph_x_create_authorizer,\r\n667     .update_authorizer = ceph_x_update_authorizer,\r\n668     .verify_authorizer_reply = ceph_x_verify_authorizer_reply,\r\n669     .destroy_authorizer = ceph_x_destroy_authorizer,\r\n670     .invalidate_authorizer = ceph_x_invalidate_authorizer,\r\n671     .reset =  ceph_x_reset,\r\n672     .destroy = ceph_x_destroy,\r\n673 };<\/pre>\n<p>ceph\u6d89\u53caAES\u52a0\u5bc6\u6d41\u7a0b\uff1a<\/p>\n<pre class=\"lang:default decode:true \" >dispatch-&gt;handle_auth_reply\r\n        -&gt;ceph_handle_auth_reply\r\n        -&gt;ceph_x_handle_reply\r\n        -&gt;ceph_x_proc_ticket_reply\r\n        -&gt;ceph_x_decrypt\r\n        -&gt;ceph_decrypt2\r\n        -&gt;ceph_aes_decrypt2<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>rbd.c rbd \u5728\u5185\u6838\u7684linux-3.13.&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[84],"tags":[180,92],"_links":{"self":[{"href":"http:\/\/www.selinuxplus.com\/index.php?rest_route=\/wp\/v2\/posts\/533"}],"collection":[{"href":"http:\/\/www.selinuxplus.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.selinuxplus.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.selinuxplus.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.selinuxplus.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=533"}],"version-history":[{"count":4,"href":"http:\/\/www.selinuxplus.com\/index.php?rest_route=\/wp\/v2\/posts\/533\/revisions"}],"predecessor-version":[{"id":537,"href":"http:\/\/www.selinuxplus.com\/index.php?rest_route=\/wp\/v2\/posts\/533\/revisions\/537"}],"wp:attachment":[{"href":"http:\/\/www.selinuxplus.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=533"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.selinuxplus.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=533"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.selinuxplus.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=533"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}