rbd: remove duplicate _fio_rbd_connect
authorPan Liu <pan.liu@istuary.com>
Fri, 23 Dec 2016 16:35:55 +0000 (00:35 +0800)
committerPan Liu <pan.liu@istuary.com>
Fri, 23 Dec 2016 16:35:55 +0000 (00:35 +0800)
Signed-off-by: Pan Liu <pan.liu@istuary.com>
engines/rbd.c

index ee2ce813b9ae2d6e3bb2ac3649a9e909573ea7f0..ee7a7cd4cbb4680a43eebee5c59535a27fdf593b 100644 (file)
@@ -36,6 +36,7 @@ struct rbd_data {
        struct io_u **aio_events;
        struct io_u **sort_events;
        int fd; /* add for poll */
        struct io_u **aio_events;
        struct io_u **sort_events;
        int fd; /* add for poll */
+       bool connected;
 };
 
 struct rbd_options {
 };
 
 struct rbd_options {
@@ -111,6 +112,8 @@ static int _fio_setup_rbd_data(struct thread_data *td,
        if (!rbd)
                goto failed;
 
        if (!rbd)
                goto failed;
 
+       rbd->connected = false;
+
        /* add for poll, init fd: -1 */
        rbd->fd = -1;
 
        /* add for poll, init fd: -1 */
        rbd->fd = -1;
 
@@ -529,6 +532,10 @@ failed:
 static int fio_rbd_init(struct thread_data *td)
 {
        int r;
 static int fio_rbd_init(struct thread_data *td)
 {
        int r;
+       struct rbd_data *rbd = td->io_ops_data;
+       if (rbd->connected) {
+               return 0;
+       }
 
        r = _fio_rbd_connect(td);
        if (r) {
 
        r = _fio_rbd_connect(td);
        if (r) {
@@ -589,6 +596,7 @@ static int fio_rbd_setup(struct thread_data *td)
                log_err("fio_rbd_connect failed.\n");
                goto cleanup;
        }
                log_err("fio_rbd_connect failed.\n");
                goto cleanup;
        }
+       rbd->connected = true;
 
        /* get size of the RADOS block device */
        r = rbd_stat(rbd->image, &info, sizeof(info));
 
        /* get size of the RADOS block device */
        r = rbd_stat(rbd->image, &info, sizeof(info));
@@ -618,7 +626,6 @@ static int fio_rbd_setup(struct thread_data *td)
        /* disconnect, then we were only connected to determine
         * the size of the RBD.
         */
        /* disconnect, then we were only connected to determine
         * the size of the RBD.
         */
-       _fio_rbd_disconnect(rbd);
        return 0;
 
 disconnect:
        return 0;
 
 disconnect: