Add support for waiting for other jobs by name
[fio.git] / options.c
index 33cc6fe6c47a69fd21f786e7d1e904f5acd1c25b..49d66002602de97baf7899d643cb755c6ec1b204 100644 (file)
--- a/options.c
+++ b/options.c
@@ -536,6 +536,7 @@ static int str_verify_cpus_allowed_cb(void *data, const char *input)
        return set_cpus_allowed(td, &td->o.verify_cpumask, input);
 }
 
+#ifdef CONFIG_ZLIB
 static int str_log_cpus_allowed_cb(void *data, const char *input)
 {
        struct thread_data *td = data;
@@ -545,8 +546,9 @@ static int str_log_cpus_allowed_cb(void *data, const char *input)
 
        return set_cpus_allowed(td, &td->o.log_gz_cpumask, input);
 }
+#endif /* CONFIG_ZLIB */
 
-#endif
+#endif /* FIO_HAVE_CPU_AFFINITY */
 
 #ifdef CONFIG_LIBNUMA
 static int str_numa_cpunodes_cb(void *data, char *input)
@@ -1073,8 +1075,9 @@ static struct opt_group fio_opt_groups[] = {
        },
 };
 
-static struct opt_group *__opt_group_from_mask(struct opt_group *ogs, unsigned int *mask,
-                                              unsigned int inv_mask)
+static struct opt_group *__opt_group_from_mask(struct opt_group *ogs,
+                                              uint64_t *mask,
+                                              uint64_t inv_mask)
 {
        struct opt_group *og;
        int i;
@@ -1094,7 +1097,7 @@ static struct opt_group *__opt_group_from_mask(struct opt_group *ogs, unsigned i
        return NULL;
 }
 
-struct opt_group *opt_group_from_mask(unsigned int *mask)
+struct opt_group *opt_group_from_mask(uint64_t *mask)
 {
        return __opt_group_from_mask(fio_opt_groups, mask, FIO_OPT_C_INVALID);
 }
@@ -1198,7 +1201,7 @@ static struct opt_group fio_opt_cat_groups[] = {
        }
 };
 
-struct opt_group *opt_group_cat_from_mask(unsigned int *mask)
+struct opt_group *opt_group_cat_from_mask(uint64_t *mask)
 {
        return __opt_group_from_mask(fio_opt_cat_groups, mask, FIO_OPT_G_INVALID);
 }
@@ -1225,6 +1228,15 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .category = FIO_OPT_C_GENERAL,
                .group  = FIO_OPT_G_DESC,
        },
+       {
+               .name   = "wait_for",
+               .lname  = "Waitee name",
+               .type   = FIO_OPT_STR_STORE,
+               .off1   = td_var_offset(wait_for),
+               .help   = "Name of the job this one wants to wait for before starting",
+               .category = FIO_OPT_C_GENERAL,
+               .group  = FIO_OPT_G_DESC,
+       },
        {
                .name   = "filename",
                .lname  = "Filename(s)",
@@ -4348,19 +4360,19 @@ static int opt_is_set(struct thread_options *o, struct fio_option *opt)
        return (o->set_options[index] & ((uint64_t)1 << offset)) != 0;
 }
 
-int __fio_option_is_set(struct thread_options *o, unsigned int off1)
+bool __fio_option_is_set(struct thread_options *o, unsigned int off1)
 {
        struct fio_option *opt, *next;
 
        next = NULL;
        while ((opt = find_next_opt(o, next, off1)) != NULL) {
                if (opt_is_set(o, opt))
-                       return 1;
+                       return true;
 
                next = opt;
        }
 
-       return 0;
+       return false;
 }
 
 void fio_option_mark_set(struct thread_options *o, struct fio_option *opt)