glusterfs: silence printf specifier warnings
[fio.git] / engines / glusterfs.c
index 52006b04075ab26f46bae54973d34e29dd92d096..981dfa35e03783b6a4c06b4441da9297f21186ea 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include "gfapi.h"
+#include "../optgroup.h"
 
 struct fio_option gfapi_options[] = {
        {
@@ -40,7 +41,7 @@ int fio_gf_setup(struct thread_data *td)
 
        dprint(FD_IO, "fio setup\n");
 
-       if (td->io_ops->data)
+       if (td->io_ops_data)
                return 0;
 
        g = malloc(sizeof(struct gf_data));
@@ -76,19 +77,19 @@ int fio_gf_setup(struct thread_data *td)
                goto cleanup;
        }
        dprint(FD_FILE, "fio setup %p\n", g->fs);
-       td->io_ops->data = g;
+       td->io_ops_data = g;
        return 0;
 cleanup:
        if (g->fs)
                glfs_fini(g->fs);
        free(g);
-       td->io_ops->data = NULL;
+       td->io_ops_data = NULL;
        return r;
 }
 
 void fio_gf_cleanup(struct thread_data *td)
 {
-       struct gf_data *g = td->io_ops->data;
+       struct gf_data *g = td->io_ops_data;
 
        if (g) {
                if (g->aio_events)
@@ -98,7 +99,7 @@ void fio_gf_cleanup(struct thread_data *td)
                if (g->fs)
                        glfs_fini(g->fs);
                free(g);
-               td->io_ops->data = NULL;
+               td->io_ops_data = NULL;
        }
 }
 
@@ -106,7 +107,7 @@ int fio_gf_get_file_size(struct thread_data *td, struct fio_file *f)
 {
        struct stat buf;
        int ret;
-       struct gf_data *g = td->io_ops->data;
+       struct gf_data *g = td->io_ops_data;
 
        dprint(FD_FILE, "get file size %s\n", f->file_name);
 
@@ -134,7 +135,7 @@ int fio_gf_open_file(struct thread_data *td, struct fio_file *f)
 
        int flags = 0;
        int ret = 0;
-       struct gf_data *g = td->io_ops->data;
+       struct gf_data *g = td->io_ops_data;
        struct stat sb = { 0, };
 
        if (td_write(td)) {
@@ -164,11 +165,11 @@ int fio_gf_open_file(struct thread_data *td, struct fio_file *f)
        if (td_read(td)) {
                if (glfs_lstat(g->fs, f->file_name, &sb)
                    || sb.st_size < f->real_file_size) {
-                       dprint(FD_FILE, "fio extend file %s from %ld to %ld\n",
-                              f->file_name, sb.st_size, f->real_file_size);
+                       dprint(FD_FILE, "fio extend file %s from %jd to %" PRIu64 "\n",
+                              f->file_name, (intmax_t) sb.st_size, f->real_file_size);
                        ret = glfs_ftruncate(g->fd, f->real_file_size);
                        if (ret) {
-                               log_err("failed fio extend file %s to %ld\n",
+                               log_err("failed fio extend file %s to %" PRIu64 "\n",
                                        f->file_name, f->real_file_size);
                        } else {
                                unsigned long long left;
@@ -189,7 +190,7 @@ int fio_gf_open_file(struct thread_data *td, struct fio_file *f)
 
                                        r = glfs_write(g->fd, b, bs, 0);
                                        dprint(FD_IO,
-                                              "fio write %d of %ld file %s\n",
+                                              "fio write %d of %" PRIu64 " file %s\n",
                                               r, f->real_file_size,
                                               f->file_name);
 
@@ -223,10 +224,10 @@ int fio_gf_open_file(struct thread_data *td, struct fio_file *f)
                                        free(b);
                                glfs_lseek(g->fd, 0, SEEK_SET);
 
-                               if (td->terminate) {
+                               if (td->terminate && td->o.unlink) {
                                        dprint(FD_FILE, "terminate unlink %s\n",
                                               f->file_name);
-                                       unlink(f->file_name);
+                                       glfs_unlink(g->fs, f->file_name);
                                } else if (td->o.create_fsync) {
                                        if (glfs_fsync(g->fd) < 0) {
                                                dprint(FD_FILE,
@@ -260,20 +261,38 @@ int fio_gf_open_file(struct thread_data *td, struct fio_file *f)
        dprint(FD_FILE, "fio %p created %s\n", g->fs, f->file_name);
        f->fd = -1;
        f->shadow_fd = -1;
-
+       td->o.open_files ++;
        return ret;
 }
 
 int fio_gf_close_file(struct thread_data *td, struct fio_file *f)
 {
        int ret = 0;
-       struct gf_data *g = td->io_ops->data;
+       struct gf_data *g = td->io_ops_data;
 
        dprint(FD_FILE, "fd close %s\n", f->file_name);
 
        if (g) {
                if (g->fd && glfs_close(g->fd) < 0)
                        ret = errno;
+               g->fd = NULL;
+       }
+
+       return ret;
+}
+
+int fio_gf_unlink_file(struct thread_data *td, struct fio_file *f)
+{
+       int ret = 0;
+       struct gf_data *g = td->io_ops_data;
+
+       dprint(FD_FILE, "fd unlink %s\n", f->file_name);
+
+       if (g) {
+               if (g->fd && glfs_close(g->fd) < 0)
+                       ret = errno;
+
+               glfs_unlink(g->fs, f->file_name);
 
                if (g->fs)
                        glfs_fini(g->fs);
@@ -281,8 +300,7 @@ int fio_gf_close_file(struct thread_data *td, struct fio_file *f)
                g->fd = NULL;
                free(g);
        }
-       td->io_ops->data = NULL;
-       f->engine_data = 0;
+       td->io_ops_data = NULL;
 
        return ret;
 }