projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of ssh://brick.kernel.dk/data/git/fio
[fio.git]
/
engines
/
sg.c
diff --git
a/engines/sg.c
b/engines/sg.c
index 39f99d8d0922050eb1a3aa3d60305cd865a09113..ac1d999797a2bd1f5bc7622340b2a7773887a004 100644
(file)
--- a/
engines/sg.c
+++ b/
engines/sg.c
@@
-240,11
+240,14
@@
static int fio_sgio_prep(struct thread_data *td, struct io_u *io_u)
static int fio_sgio_queue(struct thread_data *td, struct io_u *io_u)
{
struct sg_io_hdr *hdr = &io_u->hdr;
static int fio_sgio_queue(struct thread_data *td, struct io_u *io_u)
{
struct sg_io_hdr *hdr = &io_u->hdr;
- int ret;
+ int ret
, do_sync = 0
;
fio_ro_check(td, io_u);
fio_ro_check(td, io_u);
- ret = fio_sgio_doio(td, io_u, io_u->ddir == DDIR_SYNC);
+ if (td->o.sync_io || td->o.odirect || ddir_sync(io_u->ddir))
+ do_sync = 1;
+
+ ret = fio_sgio_doio(td, io_u, do_sync);
if (ret < 0)
io_u->error = errno;
if (ret < 0)
io_u->error = errno;
@@
-271,17
+274,16
@@
static struct io_u *fio_sgio_event(struct thread_data *td, int event)
static int fio_sgio_get_bs(struct thread_data *td, unsigned int *bs)
{
struct sgio_data *sd = td->io_ops->data;
static int fio_sgio_get_bs(struct thread_data *td, unsigned int *bs)
{
struct sgio_data *sd = td->io_ops->data;
- struct io_u
*
io_u;
+ struct io_u io_u;
struct sg_io_hdr *hdr;
unsigned char buf[8];
int ret;
struct sg_io_hdr *hdr;
unsigned char buf[8];
int ret;
- io_u = __get_io_u(td);
- io_u->file = td->files[0];
- assert(io_u);
+ memset(&io_u, 0, sizeof(io_u));
+ io_u.file = td->files[0];
- hdr = &io_u
->
hdr;
- sgio_hdr_init(sd, hdr, io_u, 0);
+ hdr = &io_u
.
hdr;
+ sgio_hdr_init(sd, hdr,
&
io_u, 0);
memset(buf, 0, sizeof(buf));
hdr->cmdp[0] = 0x25;
memset(buf, 0, sizeof(buf));
hdr->cmdp[0] = 0x25;
@@
-289,14
+291,11
@@
static int fio_sgio_get_bs(struct thread_data *td, unsigned int *bs)
hdr->dxferp = buf;
hdr->dxfer_len = sizeof(buf);
hdr->dxferp = buf;
hdr->dxfer_len = sizeof(buf);
- ret = fio_sgio_doio(td, io_u, 1);
- if (ret) {
- put_io_u(td, io_u);
+ ret = fio_sgio_doio(td, &io_u, 1);
+ if (ret)
return ret;
return ret;
- }
*bs = (buf[4] << 24) | (buf[5] << 16) | (buf[6] << 8) | buf[7];
*bs = (buf[4] << 24) | (buf[5] << 16) | (buf[6] << 8) | buf[7];
- put_io_u(td, io_u);
return 0;
}
return 0;
}
@@
-417,7
+416,7
@@
static struct ioengine_ops ioengine = {
*/
static int fio_sgio_init(struct thread_data fio_unused *td)
{
*/
static int fio_sgio_init(struct thread_data fio_unused *td)
{
-
fprintf(stderr,
"fio: ioengine sg not available\n");
+
log_err(
"fio: ioengine sg not available\n");
return 1;
}
return 1;
}