use io_complete var to avoid the rbd_aio_is_complete lock and context switch

Signed-off-by: Ketor Meng <d.ketor@gmail.com>
diff --git a/engines/rbd.c b/engines/rbd.c
index 363be65..52fc8c9 100644
--- a/engines/rbd.c
+++ b/engines/rbd.c
@@ -13,6 +13,7 @@
 	struct io_u *io_u;
 	rbd_completion_t completion;
 	int io_seen;
+	int io_complete;
 };
 
 struct rbd_data {
@@ -186,6 +187,8 @@
 	 * a specific error. So we have to assume that it can't do
 	 * partial completions.
 	 */
+	fri->io_complete = 1;
+	
 	ret = rbd_aio_get_return_value(fri->completion);
 	if (ret < 0) {
 		io_u->error = ret;
@@ -207,7 +210,7 @@
 {
 	struct fio_rbd_iou *fri = io_u->engine_data;
 
-	if (rbd_aio_is_complete(fri->completion)) {
+	if (fri->io_complete) {
 		fri->io_seen = 1;
 		rbd_data->aio_events[*events] = io_u;
 		(*events)++;
@@ -283,6 +286,7 @@
 	fio_ro_check(td, io_u);
 
 	fri->io_seen = 0;
+	fri->io_complete = 0;
 
 	r = rbd_aio_create_completion(fri, _fio_rbd_finish_aiocb,
 						&fri->completion);