Merge branch 'pcpp_epoch_fixing_2' of https://github.com/PCPartPicker/fio
[fio.git] / cconv.c
diff --git a/cconv.c b/cconv.c
index bb1af4970e975850a07c4e2ab57bc879686801d4..341388d4568125c9bfc51bfb384b6e1909fecaf3 100644 (file)
--- a/cconv.c
+++ b/cconv.c
@@ -48,6 +48,9 @@ static void free_thread_options_to_cpu(struct thread_options *o)
        free(o->profile);
        free(o->cgroup);
 
+       free(o->verify_pattern);
+       free(o->buffer_pattern);
+
        for (i = 0; i < DDIR_RWDIR_CNT; i++) {
                free(o->bssplit[i]);
                free(o->zone_split[i]);
@@ -185,6 +188,10 @@ int convert_thread_options_to_cpu(struct thread_options *o,
            thread_options_pack_size(o) > top_sz)
                return -EINVAL;
 
+       o->verify_pattern = realloc(o->verify_pattern,
+                                   o->verify_pattern_bytes);
+       o->buffer_pattern = realloc(o->buffer_pattern,
+                                   o->buffer_pattern_bytes);
        memcpy(o->verify_pattern, top->patterns, o->verify_pattern_bytes);
        memcpy(o->buffer_pattern, &top->patterns[o->verify_pattern_bytes],
               o->buffer_pattern_bytes);
@@ -199,7 +206,6 @@ int convert_thread_options_to_cpu(struct thread_options *o,
        o->do_disk_util = le32_to_cpu(top->do_disk_util);
        o->override_sync = le32_to_cpu(top->override_sync);
        o->rand_repeatable = le32_to_cpu(top->rand_repeatable);
-       o->allrand_repeatable = le32_to_cpu(top->allrand_repeatable);
        o->rand_seed = le64_to_cpu(top->rand_seed);
        o->log_entries = le32_to_cpu(top->log_entries);
        o->log_avg_msec = le32_to_cpu(top->log_avg_msec);
@@ -210,9 +216,9 @@ int convert_thread_options_to_cpu(struct thread_options *o,
        o->log_prio = le32_to_cpu(top->log_prio);
        o->log_gz = le32_to_cpu(top->log_gz);
        o->log_gz_store = le32_to_cpu(top->log_gz_store);
-       o->log_unix_epoch = le32_to_cpu(top->log_unix_epoch);
        o->log_alternate_epoch = le32_to_cpu(top->log_alternate_epoch);
        o->log_alternate_epoch_clock_id = le32_to_cpu(top->log_alternate_epoch_clock_id);
+       o->job_start_clock_id = le32_to_cpu(top->job_start_clock_id);
        o->norandommap = le32_to_cpu(top->norandommap);
        o->softrandommap = le32_to_cpu(top->softrandommap);
        o->bs_unaligned = le32_to_cpu(top->bs_unaligned);
@@ -245,6 +251,7 @@ int convert_thread_options_to_cpu(struct thread_options *o,
        o->ss_ramp_time = le64_to_cpu(top->ss_ramp_time);
        o->ss_state = le32_to_cpu(top->ss_state);
        o->ss_limit.u.f = fio_uint64_to_double(le64_to_cpu(top->ss_limit.u.i));
+       o->ss_check_interval = le64_to_cpu(top->ss_check_interval);
        o->zone_range = le64_to_cpu(top->zone_range);
        o->zone_size = le64_to_cpu(top->zone_size);
        o->zone_capacity = le64_to_cpu(top->zone_capacity);
@@ -274,6 +281,7 @@ int convert_thread_options_to_cpu(struct thread_options *o,
        o->nice = le32_to_cpu(top->nice);
        o->ioprio = le32_to_cpu(top->ioprio);
        o->ioprio_class = le32_to_cpu(top->ioprio_class);
+       o->ioprio_hint = le32_to_cpu(top->ioprio_hint);
        o->file_service_type = le32_to_cpu(top->file_service_type);
        o->group_reporting = le32_to_cpu(top->group_reporting);
        o->stats = le32_to_cpu(top->stats);
@@ -342,6 +350,12 @@ int convert_thread_options_to_cpu(struct thread_options *o,
 
        for (i = 0; i < FIO_IO_U_LIST_MAX_LEN; i++)
                o->merge_blktrace_iters[i].u.f = fio_uint64_to_double(le64_to_cpu(top->merge_blktrace_iters[i].u.i));
+
+       o->fdp = le32_to_cpu(top->fdp);
+       o->fdp_pli_select = le32_to_cpu(top->fdp_pli_select);
+       o->fdp_nrpli = le32_to_cpu(top->fdp_nrpli);
+       for (i = 0; i < o->fdp_nrpli; i++)
+               o->fdp_plis[i] = le32_to_cpu(top->fdp_plis[i]);
 #if 0
        uint8_t cpumask[FIO_TOP_STR_MAX];
        uint8_t verify_cpumask[FIO_TOP_STR_MAX];
@@ -433,7 +447,6 @@ void convert_thread_options_to_net(struct thread_options_pack *top,
        top->do_disk_util = cpu_to_le32(o->do_disk_util);
        top->override_sync = cpu_to_le32(o->override_sync);
        top->rand_repeatable = cpu_to_le32(o->rand_repeatable);
-       top->allrand_repeatable = cpu_to_le32(o->allrand_repeatable);
        top->rand_seed = __cpu_to_le64(o->rand_seed);
        top->log_entries = cpu_to_le32(o->log_entries);
        top->log_avg_msec = cpu_to_le32(o->log_avg_msec);
@@ -442,9 +455,9 @@ void convert_thread_options_to_net(struct thread_options_pack *top,
        top->log_prio = cpu_to_le32(o->log_prio);
        top->log_gz = cpu_to_le32(o->log_gz);
        top->log_gz_store = cpu_to_le32(o->log_gz_store);
-       top->log_unix_epoch = cpu_to_le32(o->log_unix_epoch);
        top->log_alternate_epoch = cpu_to_le32(o->log_alternate_epoch);
        top->log_alternate_epoch_clock_id = cpu_to_le32(o->log_alternate_epoch_clock_id);
+       top->job_start_clock_id = cpu_to_le32(o->job_start_clock_id);
        top->norandommap = cpu_to_le32(o->norandommap);
        top->softrandommap = cpu_to_le32(o->softrandommap);
        top->bs_unaligned = cpu_to_le32(o->bs_unaligned);
@@ -484,6 +497,7 @@ void convert_thread_options_to_net(struct thread_options_pack *top,
        top->nice = cpu_to_le32(o->nice);
        top->ioprio = cpu_to_le32(o->ioprio);
        top->ioprio_class = cpu_to_le32(o->ioprio_class);
+       top->ioprio_hint = cpu_to_le32(o->ioprio_hint);
        top->file_service_type = cpu_to_le32(o->file_service_type);
        top->group_reporting = cpu_to_le32(o->group_reporting);
        top->stats = cpu_to_le32(o->stats);
@@ -602,6 +616,7 @@ void convert_thread_options_to_net(struct thread_options_pack *top,
        top->ss_ramp_time = __cpu_to_le64(top->ss_ramp_time);
        top->ss_state = cpu_to_le32(top->ss_state);
        top->ss_limit.u.i = __cpu_to_le64(fio_double_to_uint64(o->ss_limit.u.f));
+       top->ss_check_interval = __cpu_to_le64(top->ss_check_interval);
        top->zone_range = __cpu_to_le64(o->zone_range);
        top->zone_size = __cpu_to_le64(o->zone_size);
        top->zone_capacity = __cpu_to_le64(o->zone_capacity);
@@ -631,6 +646,12 @@ void convert_thread_options_to_net(struct thread_options_pack *top,
 
        for (i = 0; i < FIO_IO_U_LIST_MAX_LEN; i++)
                top->merge_blktrace_iters[i].u.i = __cpu_to_le64(fio_double_to_uint64(o->merge_blktrace_iters[i].u.f));
+
+       top->fdp = cpu_to_le32(o->fdp);
+       top->fdp_pli_select = cpu_to_le32(o->fdp_pli_select);
+       top->fdp_nrpli = cpu_to_le32(o->fdp_nrpli);
+       for (i = 0; i < o->fdp_nrpli; i++)
+               top->fdp_plis[i] = cpu_to_le32(o->fdp_plis[i]);
 #if 0
        uint8_t cpumask[FIO_TOP_STR_MAX];
        uint8_t verify_cpumask[FIO_TOP_STR_MAX];
@@ -651,8 +672,10 @@ int fio_test_cconv(struct thread_options *__o)
        int ret;
 
        o1.verify_pattern_bytes = 61;
+       o1.verify_pattern = malloc(o1.verify_pattern_bytes);
        memset(o1.verify_pattern, 'V', o1.verify_pattern_bytes);
        o1.buffer_pattern_bytes = 15;
+       o1.buffer_pattern = malloc(o1.buffer_pattern_bytes);
        memset(o1.buffer_pattern, 'B', o1.buffer_pattern_bytes);
 
        top_sz = thread_options_pack_size(&o1);
@@ -672,5 +695,7 @@ out:
        free_thread_options_to_cpu(&o2);
        free(top2);
        free(top1);
+       free(o1.buffer_pattern);
+       free(o1.verify_pattern);
        return ret;
 }