VERIFY_SHA256, /* sha256 sum data blocks */
VERIFY_SHA512, /* sha512 sum data blocks */
VERIFY_META, /* block_num, timestamp etc. */
- VERIFY_PATTERN, /* verify a specific pattern */
VERIFY_NULL, /* pretend to verify */
};
FIO_NODISKUTIL = 1 << 4, /* diskutil can't handle filename */
FIO_UNIDIR = 1 << 5, /* engine is uni-directional */
FIO_NOIO = 1 << 6, /* thread does only pseudo IO */
+ FIO_SIGQUIT = 1 << 7, /* needs SIGQUIT to exit */
};
enum fio_file_flags {
FIO_FILE_OPEN = 1 << 0, /* file is open */
FIO_FILE_CLOSING = 1 << 1, /* file being closed */
- FIO_FILE_EXISTS = 1 << 2, /* file there */
- FIO_FILE_EXTEND = 1 << 3, /* needs extend */
- FIO_FILE_NOSORT = 1 << 4, /* don't sort verify blocks */
- FIO_FILE_DONE = 1 << 5, /* io completed to this file */
- FIO_SIZE_KNOWN = 1 << 6, /* size has been set */
+ FIO_FILE_EXTEND = 1 << 2, /* needs extend */
+ FIO_FILE_DONE = 1 << 3, /* io completed to this file */
+ FIO_SIZE_KNOWN = 1 << 4, /* size has been set */
};
/*
extern unsigned long page_mask, page_size;
extern int read_only;
extern int eta_print;
+extern char *job_section;
extern struct thread_data *threads;
}
#define BLOCKS_PER_MAP (8 * sizeof(long))
-#define TO_MAP_BLOCK(td, f, b) ((b) - ((f)->file_offset / (unsigned long long) (td)->o.rw_min_bs))
+#define TO_MAP_BLOCK(td, f, b) (b)
#define RAND_MAP_IDX(td, f, b) (TO_MAP_BLOCK(td, f, b) / BLOCKS_PER_MAP)
#define RAND_MAP_BIT(td, f, b) (TO_MAP_BLOCK(td, f, b) & (BLOCKS_PER_MAP - 1))
td->verror[0] = '\0';
}
+enum {
+ FD_PROCESS = 0,
+ FD_FILE,
+ FD_IO,
+ FD_MEM,
+ FD_BLKTRACE,
+ FD_VERIFY,
+ FD_RANDOM,
+ FD_DEBUG_MAX,
+};
+
+#ifdef FIO_INC_DEBUG
+struct debug_level {
+ const char *name;
+ unsigned long shift;
+};
+extern struct debug_level debug_levels[];
+
+extern unsigned long fio_debug;
+
+#define dprint(type, str, args...) \
+ do { \
+ assert(type < FD_DEBUG_MAX); \
+ if ((((1 << type)) & fio_debug) == 0) \
+ break; \
+ log_info("%-8s ", debug_levels[(type)].name); \
+ log_info(str, ##args); \
+ } while (0)
+
+static inline void dprint_io_u(struct io_u *io_u, const char *p)
+{
+ struct fio_file *f = io_u->file;
+
+ dprint(FD_IO, "%s: io_u %p: off=%llu/len=%lu/ddir=%d", p, io_u,
+ io_u->offset, io_u->buflen, io_u->ddir);
+ if (fio_debug & (1 << FD_IO)) {
+ if (f)
+ log_info("/%s", f->file_name);
+
+ log_info("\n");
+ }
+}
+#else
+#define dprint(type, str, args...)
+#define dprint_io_u(io_u, p)
+#endif
+
#endif