struct thread_data;
void fio_options_free(struct thread_data *);
char *get_name_idx(char *, int);
-int set_name_idx(char *, char *, int);
+int set_name_idx(char *, size_t, char *, int);
+
+extern char client_sockaddr_str[]; /* used with --client option */
extern struct fio_option fio_options[FIO_MAX_OPTS];
+extern int __fio_option_is_set(struct thread_options *, unsigned int off);
+
+#define fio_option_is_set(__td, name) \
+({ \
+ const unsigned int off = td_var_offset(name); \
+ int __r = __fio_option_is_set((__td), off); \
+ if (__r == -1) { \
+ dprint(FD_PARSE, "option %s/%u not found in map\n", \
+ __fio_stringify(name), off); \
+ __r = 0; \
+ } \
+ __r; \
+})
+
+extern void fio_option_mark_set(struct thread_options *, struct fio_option *);
+
static inline int o_match(struct fio_option *o, const char *opt)
{
if (!strcmp(o->name, opt))
__FIO_OPT_G_ACT,
__FIO_OPT_G_LATPROF,
__FIO_OPT_G_RBD,
+ __FIO_OPT_G_GFAPI,
+ __FIO_OPT_G_MTD,
__FIO_OPT_G_NR,
FIO_OPT_G_RATE = (1U << __FIO_OPT_G_RATE),
FIO_OPT_G_ACT = (1U << __FIO_OPT_G_ACT),
FIO_OPT_G_LATPROF = (1U << __FIO_OPT_G_LATPROF),
FIO_OPT_G_RBD = (1U << __FIO_OPT_G_RBD),
+ FIO_OPT_G_GFAPI = (1U << __FIO_OPT_G_GFAPI),
+ FIO_OPT_G_MTD = (1U << __FIO_OPT_G_MTD),
FIO_OPT_G_INVALID = (1U << __FIO_OPT_G_NR),
};