Update sample atomic write job file
[fio.git] / profile.c
index 3ed9127b9007e6a5978ef8008e90b62bd2bac59c..5d0b866708559c1adb5253306c83fe4fc50e3fd8 100644 (file)
--- a/profile.c
+++ b/profile.c
@@ -30,8 +30,11 @@ int load_profile(const char *profile)
 
        ops = find_profile(profile);
        if (ops) {
-               ops->prep_cmd();
-               add_job_opts(ops->cmdline);
+               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,7 +45,7 @@ int load_profile(const char *profile)
 static int add_profile_options(struct profile_ops *ops)
 {
        struct fio_option *o;
-       
+
        if (!ops->options)
                return 0;
 
@@ -93,6 +96,26 @@ 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)
+{
+       struct prof_io_ops *ops = &td->prof_io_ops;
+
+       if (ops->td_init)
+               return ops->td_init(td);
+
+       return 0;
+}
+
+void profile_td_exit(struct thread_data *td)
+{
+       struct prof_io_ops *ops = &td->prof_io_ops;
+
+       if (ops->td_exit)
+               ops->td_exit(td);
 }