else { std::cout << "we just read data successfully, return value is " << ret_r << std::endl; } std::cout << bl_aiow.to_str() << std::endl; write_completion->release(); read_completion->release(); void simple_write_cb(librbd::completion_t cb, void *arg) { std::cout << "write completion cb called!" << std::endl; } //简单的回调函数,用于librbd::RBD::AioCompletion void simple_read_cb(librbd::completion_t cb, void *arg) { std::cout << "read completion cb called!" << std::endl; }
收尾工作
在最后,一定不能忘记关闭rbd映像、I/O上下文,断开集群连接。
ret = image.close(); //关闭rbd映像 if (ret < 0) { std::cerr << "couldn't close rbd image! err " << ret << std::endl; ret = EXIT_FAILURE; return EXIT_FAILURE; } else { std::cout << "we just closed an rbd image" << std::endl; } io_ctx.close(); //关闭I/O上下文 rados.shutdown(); //断开集群连接 return EXIT_SUCCESS;