X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.h;h=67f0badf8cb690d0b2940038157d19745b7075f0;hb=062c6022d41233523669188e876e913abd6c4e2e;hp=ca6e2904782000d678d0a7d5482c784e13ab1573;hpb=564ca97254984165e06d5fd4b1270bac95ca55fb;p=fio.git diff --git a/fio.h b/fio.h index ca6e2904..67f0badf 100644 --- a/fio.h +++ b/fio.h @@ -184,7 +184,6 @@ enum { 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 */ }; @@ -393,6 +392,7 @@ struct thread_options { unsigned int iodepth_batch; unsigned long long size; + unsigned int fill_device; unsigned long long file_size_low; unsigned long long file_size_high; unsigned long long start_offset; @@ -681,7 +681,7 @@ static inline void fio_ro_check(struct thread_data *td, struct io_u *io_u) } #define BLOCKS_PER_MAP (8 * sizeof(long)) -#define TO_MAP_BLOCK(td, f, b) ((b) - ((f)->file_offset / (td)->o.rw_min_bs)) +#define TO_MAP_BLOCK(td, f, b) ((b) - ((f)->file_offset / (unsigned long long) (td)->o.rw_min_bs)) #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)) @@ -972,4 +972,50 @@ static inline void clear_error(struct thread_data *td) td->verror[0] = '\0'; } +enum { + FD_PROCESS = 0, + FD_FILE, + FD_IO, + FD_MEM, + FD_BLKTRACE, + FD_VERIFY, + 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