X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=iolog.c;h=0f95c6080ea8d49fde24e868af82369d1dc7be2e;hp=bd2a2145c0c6ffad99ae96a438b093ee328e235f;hb=b61a5f46da1283f4544f6ace3f19e64b1cfcc800;hpb=1d73ff2a4a8f02905cf338b2f0286d76d64e7c2a diff --git a/iolog.c b/iolog.c index bd2a2145..0f95c608 100644 --- a/iolog.c +++ b/iolog.c @@ -389,6 +389,7 @@ static bool read_iolog2(struct thread_data *td) char *rfname, *fname, *act; char *str, *p; enum fio_ddir rw; + bool realloc = false; int64_t items_to_fetch = 0; if (td->o.read_iolog_chunked) { @@ -501,8 +502,10 @@ static bool read_iolog2(struct thread_data *td) ipo_bytes_align(td->o.replay_align, ipo); ipo->len = bytes; - if (rw != DDIR_INVAL && bytes > td->o.max_bs[rw]) + if (rw != DDIR_INVAL && bytes > td->o.max_bs[rw]) { + realloc = true; td->o.max_bs[rw] = bytes; + } ipo->fileno = fileno; ipo->file_action = file_action; td->o.size += bytes; @@ -539,6 +542,12 @@ static bool read_iolog2(struct thread_data *td) return false; } td->o.td_ddir = TD_DDIR_RW; + if (realloc && td->orig_buffer) + { + io_u_quiesce(td); + free_io_mem(td); + init_io_u_buffers(td); + } return true; }