X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.h;h=7f11861d074bb6855d6690fc4c0a8b1f765ea7e9;hb=0950e832e5f2ef92fbfad92c8a9d20480e3b13f9;hp=4b3c63b7271b115c2ed927dac102186294b8416a;hpb=d79db1222039e906dd49ae290daa59701f4e2385;p=fio.git diff --git a/fio.h b/fio.h index 4b3c63b7..7f11861d 100644 --- a/fio.h +++ b/fio.h @@ -344,15 +344,32 @@ static inline void fio_ro_check(struct thread_data *td, struct io_u *io_u) #define REAL_MAX_JOBS 2048 -#define td_non_fatal_error(e) ((e) == EIO || (e) == EILSEQ) - static inline enum error_type td_error_type(enum fio_ddir ddir, int err) { if (err == EILSEQ) - return ERROR_TYPE_VERIFY; + return ERROR_TYPE_VERIFY_BIT; if (ddir == DDIR_READ) - return ERROR_TYPE_READ; - return ERROR_TYPE_WRITE; + return ERROR_TYPE_READ_BIT; + return ERROR_TYPE_WRITE_BIT; +} + +static int __NON_FATAL_ERR[] = {EIO, EILSEQ}; +static inline int td_non_fatal_error(struct thread_data *td, + enum error_type_bit etype, int err) +{ + int i; + if (!td->o.ignore_error[etype]) { + td->o.ignore_error[etype] = __NON_FATAL_ERR; + td->o.ignore_error_nr[etype] = sizeof(__NON_FATAL_ERR) + / sizeof(int); + } + + if (!(td->o.continue_on_error & (1 << etype))) + return 0; + for (i = 0; i < td->o.ignore_error_nr[etype]; i++) + if (td->o.ignore_error[etype][i] == err) + return 1; + return 0; } static inline void update_error_count(struct thread_data *td, int err)