projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rand: add rand64_between()
[fio.git]
/
engines
/
windowsaio.c
diff --git
a/engines/windowsaio.c
b/engines/windowsaio.c
index 2b12ddd01f69c85258ee7739ff90ade6c038be91..13d7f19402a1759fa8c28f7e11b6e13686098e93 100644
(file)
--- a/
engines/windowsaio.c
+++ b/
engines/windowsaio.c
@@
-94,15
+94,13
@@
static int fio_windowsaio_init(struct thread_data *td)
if (!rc)
ctx = malloc(sizeof(struct thread_ctx));
if (!rc)
ctx = malloc(sizeof(struct thread_ctx));
- if (!rc && ctx == NULL)
- {
+ if (!rc && ctx == NULL) {
log_err("windowsaio: failed to allocate memory for thread context structure\n");
CloseHandle(hFile);
rc = 1;
}
log_err("windowsaio: failed to allocate memory for thread context structure\n");
CloseHandle(hFile);
rc = 1;
}
- if (!rc)
- {
+ if (!rc) {
DWORD threadid;
ctx->iocp = hFile;
DWORD threadid;
ctx->iocp = hFile;
@@
-146,7
+144,7
@@
static int windowsaio_invalidate_cache(struct fio_file *f)
{
DWORD error;
DWORD isharemode = (FILE_SHARE_DELETE | FILE_SHARE_READ |
{
DWORD error;
DWORD isharemode = (FILE_SHARE_DELETE | FILE_SHARE_READ |
- FILE_SHARE_WRITE);
+
FILE_SHARE_WRITE);
HANDLE ihFile;
int rc = 0;
HANDLE ihFile;
int rc = 0;
@@
-240,9
+238,8
@@
static int fio_windowsaio_open_file(struct thread_data *td, struct fio_file *f)
/* If we're going to use direct I/O, Windows will try and invalidate
* its cache at that point so there's no need to do it here */
/* If we're going to use direct I/O, Windows will try and invalidate
* its cache at that point so there's no need to do it here */
- if (td->o.invalidate_cache && !td->o.odirect)
{
+ if (td->o.invalidate_cache && !td->o.odirect)
windowsaio_invalidate_cache(f);
windowsaio_invalidate_cache(f);
- }
f->hFile = CreateFile(f->file_name, access, sharemode,
NULL, openmode, flags, NULL);
f->hFile = CreateFile(f->file_name, access, sharemode,
NULL, openmode, flags, NULL);
@@
-349,14
+346,16
@@
static int fio_windowsaio_getevents(struct thread_data *td, unsigned int min,
break;
}
break;
}
- if (dequeued >= min || (t != NULL && timeout_expired(start_count, end_count)))
+ if (dequeued >= min ||
+ (t != NULL && timeout_expired(start_count, end_count)))
break;
} while (1);
return dequeued;
}
break;
} while (1);
return dequeued;
}
-static int fio_windowsaio_queue(struct thread_data *td, struct io_u *io_u)
+static enum fio_q_status fio_windowsaio_queue(struct thread_data *td,
+ struct io_u *io_u)
{
struct fio_overlapped *o = io_u->engine_data;
LPOVERLAPPED lpOvl = &o->o;
{
struct fio_overlapped *o = io_u->engine_data;
LPOVERLAPPED lpOvl = &o->o;
@@
-372,10
+371,12
@@
static int fio_windowsaio_queue(struct thread_data *td, struct io_u *io_u)
switch (io_u->ddir) {
case DDIR_WRITE:
switch (io_u->ddir) {
case DDIR_WRITE:
- success = WriteFile(io_u->file->hFile, io_u->xfer_buf, io_u->xfer_buflen, NULL, lpOvl);
+ success = WriteFile(io_u->file->hFile, io_u->xfer_buf,
+ io_u->xfer_buflen, NULL, lpOvl);
break;
case DDIR_READ:
break;
case DDIR_READ:
- success = ReadFile(io_u->file->hFile, io_u->xfer_buf, io_u->xfer_buflen, NULL, lpOvl);
+ success = ReadFile(io_u->file->hFile, io_u->xfer_buf,
+ io_u->xfer_buflen, NULL, lpOvl);
break;
case DDIR_SYNC:
case DDIR_DATASYNC:
break;
case DDIR_SYNC:
case DDIR_DATASYNC:
@@
-387,13
+388,11
@@
static int fio_windowsaio_queue(struct thread_data *td, struct io_u *io_u)
}
return FIO_Q_COMPLETED;
}
return FIO_Q_COMPLETED;
- break;
case DDIR_TRIM:
log_err("windowsaio: manual TRIM isn't supported on Windows\n");
io_u->error = 1;
io_u->resid = io_u->xfer_buflen;
return FIO_Q_COMPLETED;
case DDIR_TRIM:
log_err("windowsaio: manual TRIM isn't supported on Windows\n");
io_u->error = 1;
io_u->resid = io_u->xfer_buflen;
return FIO_Q_COMPLETED;
- break;
default:
assert(0);
break;
default:
assert(0);
break;
@@
-424,7
+423,11
@@
static DWORD WINAPI IoCompletionRoutine(LPVOID lpParameter)
wd = ctx->wd;
do {
wd = ctx->wd;
do {
- if (!GetQueuedCompletionStatus(ctx->iocp, &bytes, &ulKey, &ovl, 250) && ovl == NULL)
+ BOOL ret;
+
+ ret = GetQueuedCompletionStatus(ctx->iocp, &bytes, &ulKey,
+ &ovl, 250);
+ if (!ret && ovl == NULL)
continue;
fov = CONTAINING_RECORD(ovl, struct fio_overlapped, o);
continue;
fov = CONTAINING_RECORD(ovl, struct fio_overlapped, o);