projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'atomic-writes'
[fio.git]
/
fio.h
diff --git
a/fio.h
b/fio.h
index 6b841e9c263bf1b1960d00b551d78e7ebb986467..4bb6cfa7f39e0b1152cd62bbadd03d3e4744f62c 100644
(file)
--- a/
fio.h
+++ b/
fio.h
@@
-71,6
+71,16
@@
struct fio_sem;
struct fio_sem;
+#define MAX_TRIM_RANGE 256
+
+/*
+ * Range for trim command
+ */
+struct trim_range {
+ unsigned long long start;
+ unsigned long long len;
+};
+
/*
* offset generator types
*/
/*
* offset generator types
*/
@@
-144,6
+154,7
@@
enum {
FIO_RAND_POISSON3_OFF,
FIO_RAND_PRIO_CMDS,
FIO_RAND_DEDUPE_WORKING_SET_IX,
FIO_RAND_POISSON3_OFF,
FIO_RAND_PRIO_CMDS,
FIO_RAND_DEDUPE_WORKING_SET_IX,
+ FIO_RAND_FDP_OFF,
FIO_RAND_NR_OFFS,
};
FIO_RAND_NR_OFFS,
};
@@
-247,8
+258,9
@@
struct thread_data {
size_t orig_buffer_size;
volatile int runstate;
volatile bool terminate;
size_t orig_buffer_size;
volatile int runstate;
volatile bool terminate;
- bool last_was_sync;
- enum fio_ddir last_ddir;
+
+ enum fio_ddir last_ddir_completed;
+ enum fio_ddir last_ddir_issued;
int mmapfd;
int mmapfd;
@@
-262,6
+274,7
@@
struct thread_data {
struct frand_state verify_state_last_do_io;
struct frand_state trim_state;
struct frand_state delay_state;
struct frand_state verify_state_last_do_io;
struct frand_state trim_state;
struct frand_state delay_state;
+ struct frand_state fdp_state;
struct frand_state buf_state;
struct frand_state buf_state_prev;
struct frand_state buf_state;
struct frand_state buf_state_prev;
@@
-275,7
+288,7
@@
struct thread_data {
unsigned long long num_unique_pages;
struct zone_split_index **zone_state_index;
unsigned long long num_unique_pages;
struct zone_split_index **zone_state_index;
- unsigned int num_
open
_zones;
+ unsigned int num_
write
_zones;
unsigned int verify_batch;
unsigned int trim_batch;
unsigned int verify_batch;
unsigned int trim_batch;
@@
-386,7
+399,8
@@
struct thread_data {
struct timespec start; /* start of this loop */
struct timespec epoch; /* time job was started */
struct timespec start; /* start of this loop */
struct timespec epoch; /* time job was started */
- unsigned long long alternate_epoch; /* Time job was started, clock_gettime's clock_id epoch based. */
+ unsigned long long alternate_epoch; /* Time job was started, as clock_gettime(log_alternate_epoch_clock_id) */
+ unsigned long long job_start; /* Time job was started, as clock_gettime(job_start_clock_id) */
struct timespec last_issue;
long time_offset;
struct timespec ts_cache;
struct timespec last_issue;
long time_offset;
struct timespec ts_cache;
@@
-606,9
+620,17
@@
static inline void fio_ro_check(const struct thread_data *td, struct io_u *io_u)
!(io_u->ddir == DDIR_TRIM && !td_trim(td)));
}
!(io_u->ddir == DDIR_TRIM && !td_trim(td)));
}
+static inline bool multi_range_trim(struct thread_data *td, struct io_u *io_u)
+{
+ if (io_u->ddir == DDIR_TRIM && td->o.num_range > 1)
+ return true;
+
+ return false;
+}
+
static inline bool should_fsync(struct thread_data *td)
{
static inline bool should_fsync(struct thread_data *td)
{
- if (
td->last_was_sync
)
+ if (
ddir_sync(td->last_ddir_issued)
)
return false;
if (td_write(td) || td->o.override_sync)
return true;
return false;
if (td_write(td) || td->o.override_sync)
return true;
@@
-638,7
+660,6
@@
extern void fio_options_dup_and_init(struct option *);
extern char *fio_option_dup_subs(const char *);
extern void fio_options_mem_dupe(struct thread_data *);
extern void td_fill_rand_seeds(struct thread_data *);
extern char *fio_option_dup_subs(const char *);
extern void fio_options_mem_dupe(struct thread_data *);
extern void td_fill_rand_seeds(struct thread_data *);
-extern void td_fill_verify_state_seed(struct thread_data *);
extern void add_job_opts(const char **, int);
extern int ioengine_load(struct thread_data *);
extern bool parse_dryrun(void);
extern void add_job_opts(const char **, int);
extern int ioengine_load(struct thread_data *);
extern bool parse_dryrun(void);
@@
-686,8
+707,8
@@
enum {
TD_NR,
};
TD_NR,
};
-#define TD_ENG_FLAG_SHIFT
18
-#define TD_ENG_FLAG_MASK ((1ULL <<
18
) - 1)
+#define TD_ENG_FLAG_SHIFT
(__TD_F_LAST)
+#define TD_ENG_FLAG_MASK ((1ULL <<
(__TD_F_LAST)
) - 1)
static inline void td_set_ioengine_flags(struct thread_data *td)
{
static inline void td_set_ioengine_flags(struct thread_data *td)
{