From b907a5b5c708b2620685a866b3b0bcd0d2657e54 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Tue, 24 Oct 2006 14:46:13 +0200 Subject: [PATCH 1/1] [PATCH] mmap io engine had broken sync It returned from ->queue() too quickly, it still needs to set the last event handler. Signed-off-by: Jens Axboe --- engines/fio-engine-mmap.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/engines/fio-engine-mmap.c b/engines/fio-engine-mmap.c index c85f6617..483a704e 100644 --- a/engines/fio-engine-mmap.c +++ b/engines/fio-engine-mmap.c @@ -50,13 +50,15 @@ static int fio_mmapio_queue(struct thread_data *td, struct io_u *io_u) memcpy(io_u->buf, f->mmap + real_off, io_u->buflen); else if (io_u->ddir == DDIR_WRITE) memcpy(f->mmap + real_off, io_u->buf, io_u->buflen); - else if (io_u->ddir == DDIR_SYNC) - return msync(f->mmap, f->file_size, MS_SYNC); + else if (io_u->ddir == DDIR_SYNC) { + if (msync(f->mmap, f->file_size, MS_SYNC)) + io_u->error = errno; + } /* * not really direct, but should drop the pages from the cache */ - if (td->odirect) { + if (td->odirect && io_u->ddir != DDIR_SYNC) { if (msync(f->mmap + real_off, io_u->buflen, MS_SYNC) < 0) io_u->error = errno; if (madvise(f->mmap + real_off, io_u->buflen, MADV_DONTNEED) < 0) -- 2.25.1