Allow randommap allocation to fail
[fio.git] / fio.h
diff --git a/fio.h b/fio.h
index e7e32cc75a48652286b45c7eb0207eb902a1baf6..55717c798a08c9192bb8eae8533a97d92d7122dd 100644 (file)
--- a/fio.h
+++ b/fio.h
@@ -691,6 +691,7 @@ extern struct thread_data *threads;
 #define td_write(td)           ((td)->o.td_ddir & TD_DDIR_WRITE)
 #define td_rw(td)              (((td)->o.td_ddir & TD_DDIR_RW) == TD_DDIR_RW)
 #define td_random(td)          ((td)->o.td_ddir & TD_DDIR_RAND)
+#define file_randommap(td, f)  (!(td)->o.norandommap && (f)->file_map)
 
 static inline void fio_ro_check(struct thread_data *td, struct io_u *io_u)
 {
@@ -755,6 +756,7 @@ enum file_log_act {
        FIO_LOG_ADD_FILE,
        FIO_LOG_OPEN_FILE,
        FIO_LOG_CLOSE_FILE,
+       FIO_LOG_UNLINK_FILE,
 };
 
 extern int __must_check read_iolog_get(struct thread_data *, struct io_u *);
@@ -762,6 +764,7 @@ extern void log_io_u(struct thread_data *, struct io_u *);
 extern void log_file(struct thread_data *, struct fio_file *, enum file_log_act);
 extern int __must_check init_iolog(struct thread_data *td);
 extern void log_io_piece(struct thread_data *, struct io_u *);
+extern void queue_io_piece(struct thread_data *, struct io_piece *);
 extern void prune_io_piece_log(struct thread_data *);
 extern void write_iolog_close(struct thread_data *);
 
@@ -961,7 +964,10 @@ extern void close_ioengine(struct thread_data *);
 #define for_each_td(td, i)     \
        for ((i) = 0, (td) = &threads[0]; (i) < (int) thread_number; (i)++, (td)++)
 #define for_each_file(td, f, i)        \
-       for ((i) = 0, (f) = (td)->files[0]; (i) < (td)->o.nr_files; (i)++, (f) = (td)->files[i])
+       if ((td)->files_index)                                          \
+               for ((i) = 0, (f) = (td)->files[0];                     \
+                (i) < (td)->o.nr_files && ((f) = (td)->files[i]) != NULL; \
+                (i)++)
 
 #define fio_assert(td, cond)   do {    \
        if (!(cond)) {                  \