output_buffer: only realloc once, and memset just what we need
[fio.git] / profile.c
index c97584372b52c957944a8aac122eba3e5fa183e7..90c9ea8d14eb6c4d52c5a94bef7eab3e32fc0a0e 100644 (file)
--- a/profile.c
+++ b/profile.c
@@ -30,7 +30,10 @@ int load_profile(const char *profile)
 
        ops = find_profile(profile);
        if (ops) {
-               ops->prep_cmd();
+               if (ops->prep_cmd()) {
+                       log_err("fio: profile %s prep failed\n", profile);
+                       return 1;
+               }
                add_job_opts(ops->cmdline, FIO_CLIENT_TYPE_CLI);
                return 0;
        }
@@ -42,13 +45,14 @@ int load_profile(const char *profile)
 static int add_profile_options(struct profile_ops *ops)
 {
        struct fio_option *o;
-       
+
        if (!ops->options)
                return 0;
 
        o = ops->options;
        while (o->name) {
                o->prof_name = ops->name;
+               o->prof_opts = ops->opt_data;
                if (add_option(o))
                        return 1;
                o++;
@@ -93,8 +97,10 @@ void profile_add_hooks(struct thread_data *td)
        if (!ops)
                return;
 
-       if (ops->io_ops)
+       if (ops->io_ops) {
                td->prof_io_ops = *ops->io_ops;
+               td->flags |= TD_F_PROFILE_OPS;
+       }
 }
 
 int profile_td_init(struct thread_data *td)