Add --max-jobs/-j command line option
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index e5607bc7a7ec9d7b034e9d05d5f51dde3366c02a..fc64e3adf22b3f626f662b260c292934c107548f 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -248,7 +248,7 @@ struct thread_options {
        unsigned int file_service_type;
        unsigned int group_reporting;
        unsigned int fadvise_hint;
-       unsigned int fallocate;
+       enum fio_fallocate_mode fallocate_mode;
        unsigned int zero_buffers;
        unsigned int refill_buffers;
        unsigned int time_based;
@@ -336,6 +336,7 @@ struct thread_data {
        union {
                unsigned int next_file;
                os_random_state_t next_file_state;
+               struct frand_state __next_file_state;
        };
        int error;
        int done;
@@ -359,9 +360,18 @@ struct thread_data {
 
        unsigned long rand_seeds[7];
 
-       os_random_state_t bsrange_state;
-       os_random_state_t verify_state;
-       os_random_state_t trim_state;
+       union {
+               os_random_state_t bsrange_state;
+               struct frand_state __bsrange_state;
+       };
+       union {
+               os_random_state_t verify_state;
+               struct frand_state __verify_state;
+       };
+       union {
+               os_random_state_t trim_state;
+               struct frand_state __trim_state;
+       };
 
        unsigned int verify_batch;
        unsigned int trim_batch;
@@ -417,8 +427,10 @@ struct thread_data {
        /*
         * State for random io, a bitmap of blocks done vs not done
         */
-       os_random_state_t random_state;
-       struct frand_state __random_state;
+       union {
+               os_random_state_t random_state;
+               struct frand_state __random_state;
+       };
 
        struct timeval start;   /* start of this loop */
        struct timeval epoch;   /* time job was started */
@@ -431,7 +443,10 @@ struct thread_data {
        /*
         * read/write mixed workload state
         */
-       os_random_state_t rwmix_state;
+       union {
+               os_random_state_t rwmix_state;
+               struct frand_state __rwmix_state;
+       };
        unsigned long rwmix_issues;
        enum fio_ddir rwmix_ddir;
        unsigned int ddir_seq_nr;
@@ -467,7 +482,10 @@ struct thread_data {
        /*
         * For generating file sizes
         */
-       os_random_state_t file_size_state;
+       union {
+               os_random_state_t file_size_state;
+               struct frand_state __file_size_state;
+       };
 
        /*
         * Error counts
@@ -539,7 +557,7 @@ static inline void fio_ro_check(struct thread_data *td, struct io_u *io_u)
 #define RAND_MAP_IDX(f, b)     (TO_MAP_BLOCK(f, b) / BLOCKS_PER_MAP)
 #define RAND_MAP_BIT(f, b)     (TO_MAP_BLOCK(f, b) & (BLOCKS_PER_MAP - 1))
 
-#define MAX_JOBS       (1024)
+#define REAL_MAX_JOBS          2048
 
 #define td_non_fatal_error(e)  ((e) == EIO || (e) == EILSEQ)
 
@@ -648,7 +666,7 @@ extern int load_blktrace(struct thread_data *, const char *);
        if (!(cond)) {                  \
                int *__foo = NULL;      \
                fprintf(stderr, "file:%s:%d, assert %s failed\n", __FILE__, __LINE__, #cond);   \
-               (td)->runstate = TD_EXITED;     \
+               td_set_runstate((td), TD_EXITED);       \
                (td)->error = EFAULT;           \
                *__foo = 0;                     \
        }       \