projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
options: turn missing options into debug parse messages
[fio.git]
/
engines
/
libaio.c
diff --git
a/engines/libaio.c
b/engines/libaio.c
index d11a262e62cbaf8b0c30bf47e52b9dfaa584ae86..d4f48303becb8af99a63bcc0e1667a030bdd0a66 100644
(file)
--- a/
engines/libaio.c
+++ b/
engines/libaio.c
@@
-13,6
+13,8
@@
#include "../fio.h"
#include "../fio.h"
+static int fio_libaio_commit(struct thread_data *td);
+
struct libaio_data {
io_context_t aio_ctx;
struct io_event *aio_events;
struct libaio_data {
io_context_t aio_ctx;
struct io_event *aio_events;
@@
-35,7
+37,7
@@
struct libaio_data {
};
struct libaio_options {
};
struct libaio_options {
-
struct thread_data *t
d;
+
void *pa
d;
unsigned int userspace_reap;
};
unsigned int userspace_reap;
};
@@
-163,11
+165,12
@@
static int fio_libaio_getevents(struct thread_data *td, unsigned int min,
r = io_getevents(ld->aio_ctx, actual_min,
max, ld->aio_events + events, lt);
}
r = io_getevents(ld->aio_ctx, actual_min,
max, ld->aio_events + events, lt);
}
- if (r >
=
0)
+ if (r > 0)
events += r;
events += r;
- else if (r == -EAGAIN)
+ else if ((min && r == 0) || r == -EAGAIN) {
+ fio_libaio_commit(td);
usleep(100);
usleep(100);
- else if (r != -EINTR)
+
}
else if (r != -EINTR)
break;
} while (events < min);
break;
} while (events < min);
@@
-278,7
+281,7
@@
static int fio_libaio_commit(struct thread_data *td)
}
if (!wait_start) {
fio_gettime(&tv, NULL);
}
if (!wait_start) {
fio_gettime(&tv, NULL);
- wait_start =
0
;
+ wait_start =
1
;
} else if (mtime_since_now(&tv) > 30000) {
log_err("fio: aio appears to be stalled, giving up\n");
break;
} else if (mtime_since_now(&tv) > 30000) {
log_err("fio: aio appears to be stalled, giving up\n");
break;