X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=engines%2Fglusterfs.c;h=507cd25dc89d0c638193134d0543b0670da0ed50;hb=936e37bda7eb4796ee0e6d14c91d090742b2296d;hp=a64c687f8264db9c9e470a1779cd18840ce78902;hpb=1a889967f9550baa21da2cc3e849a14b5a3daf7b;p=fio.git diff --git a/engines/glusterfs.c b/engines/glusterfs.c index a64c687f..507cd25d 100644 --- a/engines/glusterfs.c +++ b/engines/glusterfs.c @@ -77,16 +77,12 @@ int fio_gf_setup(struct thread_data *td) } dprint(FD_FILE, "fio setup %p\n", g->fs); td->io_ops->data = g; + return 0; cleanup: - if (r) { - if (g) { - if (g->fs) { - glfs_fini(g->fs); - } - free(g); - td->io_ops->data = NULL; - } - } + if (g->fs) + glfs_fini(g->fs); + free(g); + td->io_ops->data = NULL; return r; } @@ -227,10 +223,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, @@ -264,7 +260,7 @@ 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; } @@ -278,6 +274,24 @@ int fio_gf_close_file(struct thread_data *td, struct fio_file *f) 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); @@ -286,7 +300,6 @@ int fio_gf_close_file(struct thread_data *td, struct fio_file *f) free(g); } td->io_ops->data = NULL; - f->engine_data = 0; return ret; }