#include "arch/arch.h"
#include "os/os.h"
#include "mutex.h"
+#include "log.h"
+#include "debug.h"
#ifdef FIO_HAVE_GUASI
#include <guasi.h>
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 */
};
/*
unsigned long long io_skip_bytes;
unsigned long long this_io_bytes[2];
unsigned long long zone_bytes;
- struct fio_sem *mutex;
+ struct fio_mutex *mutex;
/*
* State for random io, a bitmap of blocks done vs not done
extern int shm_id;
extern int groupid;
extern int terse_output;
-extern FILE *f_out;
-extern FILE *f_err;
extern int temp_stall_ts;
extern unsigned long long mlock_size;
extern unsigned long page_mask, page_size;
}
#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))
* File setup/shutdown
*/
extern void close_files(struct thread_data *);
+extern void close_and_free_files(struct thread_data *);
extern int __must_check setup_files(struct thread_data *);
extern int __must_check open_files(struct thread_data *);
extern int __must_check file_invalidate_cache(struct thread_data *, struct fio_file *);
extern int load_blktrace(struct thread_data *, const char *);
#endif
-/*
- * If logging output to a file, stderr should go to both stderr and f_err
- */
-#define log_err(args...) do { \
- fprintf(f_err, ##args); \
- if (f_err != stderr) \
- fprintf(stderr, ##args); \
- } while (0)
-
-#define log_info(args...) fprintf(f_out, ##args)
-
-FILE *get_f_out(void);
-FILE *get_f_err(void);
-
struct ioengine_ops {
struct list_head list;
char name[16];
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;
}
}
#else
-#define dprint(type, str, args...)
#define dprint_io_u(io_u, p)
#endif