engines/dfs: add support for 1.3 DAOS API
authorJohann Lombardi <johann.lombardi@intel.com>
Tue, 10 Aug 2021 13:03:21 +0000 (15:03 +0200)
committerJohann Lombardi <johann.lombardi@intel.com>
Tue, 10 Aug 2021 13:13:18 +0000 (15:13 +0200)
A few changes were done to the pool connect and container open API
in DAOS 1.3+. UUID string or label are now passed via the API
instead of uuid_t structures. Change the dfs engine accordingly.

Signed-off-by: Johann Lombardi <johann.lombardi@intel.com>
HOWTO
engines/dfs.c
fio.1

diff --git a/HOWTO b/HOWTO
index 04ea284b5badc3cde2c31a7987fb2ea32918afcb..9bfd38b4589610a5e9d7662fe321fa530222cbfd 100644 (file)
--- a/HOWTO
+++ b/HOWTO
@@ -2561,11 +2561,11 @@ with the caveat that when used on the command line, they must come after the
 
 .. option:: pool=str : [dfs]
 
-       Specify the UUID of the DAOS pool to connect to.
+       Specify the label or UUID of the DAOS pool to connect to.
 
 .. option:: cont=str : [dfs]
 
-       Specify the UUID of the DAOS container to open.
+       Specify the label or UUID of the DAOS container to open.
 
 .. option:: chunk_size=int : [dfs]
 
index 0343b101e92c2899db26c7dddecef696ae70e7b0..664e8b13c727107fd2659f8a9795c1fabcc4d5ae 100644 (file)
@@ -49,19 +49,19 @@ struct daos_fio_options {
 static struct fio_option options[] = {
        {
                .name           = "pool",
-               .lname          = "pool uuid",
+               .lname          = "pool uuid or label",
                .type           = FIO_OPT_STR_STORE,
                .off1           = offsetof(struct daos_fio_options, pool),
-               .help           = "DAOS pool uuid",
+               .help           = "DAOS pool uuid or label",
                .category       = FIO_OPT_C_ENGINE,
                .group          = FIO_OPT_G_DFS,
        },
        {
                .name           = "cont",
-               .lname          = "container uuid",
+               .lname          = "container uuid or label",
                .type           = FIO_OPT_STR_STORE,
                .off1           = offsetof(struct daos_fio_options, cont),
-               .help           = "DAOS container uuid",
+               .help           = "DAOS container uuid or label",
                .category       = FIO_OPT_C_ENGINE,
                .group          = FIO_OPT_G_DFS,
        },
@@ -103,7 +103,6 @@ static struct fio_option options[] = {
 static int daos_fio_global_init(struct thread_data *td)
 {
        struct daos_fio_options *eo = td->eo;
-       uuid_t                  pool_uuid, co_uuid;
        daos_pool_info_t        pool_info;
        daos_cont_info_t        co_info;
        int                     rc = 0;
@@ -124,6 +123,10 @@ static int daos_fio_global_init(struct thread_data *td)
                return rc;
        }
 
+#if !defined(DAOS_API_VERSION_MAJOR) || \
+    (DAOS_API_VERSION_MAJOR == 1 && DAOS_API_VERSION_MINOR < 3)
+       uuid_t pool_uuid, co_uuid;
+
        rc = uuid_parse(eo->pool, pool_uuid);
        if (rc) {
                log_err("Failed to parse 'Pool uuid': %s\n", eo->pool);
@@ -137,6 +140,7 @@ static int daos_fio_global_init(struct thread_data *td)
                td_verror(td, EINVAL, "uuid_parse(eo->cont)");
                return EINVAL;
        }
+#endif
 
        /* Connect to the DAOS pool */
 #if !defined(DAOS_API_VERSION_MAJOR) || DAOS_API_VERSION_MAJOR < 1
@@ -152,9 +156,12 @@ static int daos_fio_global_init(struct thread_data *td)
        rc = daos_pool_connect(pool_uuid, NULL, svcl, DAOS_PC_RW,
                        &poh, &pool_info, NULL);
        d_rank_list_free(svcl);
-#else
+#elif (DAOS_API_VERSION_MAJOR == 1 && DAOS_API_VERSION_MINOR < 3)
        rc = daos_pool_connect(pool_uuid, NULL, DAOS_PC_RW, &poh, &pool_info,
                               NULL);
+#else
+       rc = daos_pool_connect(eo->pool, NULL, DAOS_PC_RW, &poh, &pool_info,
+                              NULL);
 #endif
        if (rc) {
                log_err("Failed to connect to pool %d\n", rc);
@@ -163,7 +170,12 @@ static int daos_fio_global_init(struct thread_data *td)
        }
 
        /* Open the DAOS container */
+#if !defined(DAOS_API_VERSION_MAJOR) || \
+    (DAOS_API_VERSION_MAJOR == 1 && DAOS_API_VERSION_MINOR < 3)
        rc = daos_cont_open(poh, co_uuid, DAOS_COO_RW, &coh, &co_info, NULL);
+#else
+       rc = daos_cont_open(poh, eo->cont, DAOS_COO_RW, &coh, &co_info, NULL);
+#endif
        if (rc) {
                log_err("Failed to open container: %d\n", rc);
                td_verror(td, rc, "daos_cont_open");
diff --git a/fio.1 b/fio.1
index ff100a1ca6725a08426043c85010d96fc94f1009..382cebfc46510e251a92e905f51175ca3d977a46 100644 (file)
--- a/fio.1
+++ b/fio.1
@@ -2326,10 +2326,10 @@ the use of cudaMemcpy.
 .RE
 .TP
 .BI (dfs)pool
-Specify the UUID of the DAOS pool to connect to.
+Specify the label or UUID of the DAOS pool to connect to.
 .TP
 .BI (dfs)cont
-Specify the UUID of the DAOS DAOS container to open.
+Specify the label or UUID of the DAOS container to open.
 .TP
 .BI (dfs)chunk_size
 Specificy a different chunk size (in bytes) for the dfs file.