From: Tomohiro Kusumi Date: Mon, 9 Jan 2017 14:42:02 +0000 (+0900) Subject: Mention sg ioengine requires filename option X-Git-Tag: fio-2.17~12 X-Git-Url: https://git.kernel.dk/?p=fio.git;a=commitdiff_plain;h=30dac1364aaf86bc6566002d48ea010420b2a9b2 Mention sg ioengine requires filename option similar to the way net ioengine documents filename option. Also bring in a file type check from fio_sgio_type_check() to avoid pointless read capacity error against regfiles. Signed-off-by: Tomohiro Kusumi Signed-off-by: Jens Axboe --- diff --git a/HOWTO b/HOWTO index 4cc733f6..33f8718a 100644 --- a/HOWTO +++ b/HOWTO @@ -819,7 +819,8 @@ ioengine=str Defines how the job issues io to the file. The following synchronous using the SG_IO ioctl, or if the target is an sg character device we use read(2) and write(2) for asynchronous - io. + io. Requires filename option to specify either + block or character devices. null Doesn't transfer any data, just pretends to. This is mainly used to exercise fio diff --git a/engines/sg.c b/engines/sg.c index e70803c8..3f7d9110 100644 --- a/engines/sg.c +++ b/engines/sg.c @@ -525,7 +525,7 @@ static int fio_sgio_type_check(struct thread_data *td, struct fio_file *f) } } else { td_verror(td, EINVAL, "wrong file type"); - log_err("ioengine sg only works on block devices\n"); + log_err("ioengine sg only works on block or character devices\n"); return 1; } @@ -789,6 +789,12 @@ static int fio_sgio_get_file_size(struct thread_data *td, struct fio_file *f) if (fio_file_size_known(f)) return 0; + if (f->filetype != FIO_TYPE_BD && f->filetype != FIO_TYPE_CHAR) { + td_verror(td, EINVAL, "wrong file type"); + log_err("ioengine sg only works on block or character devices\n"); + return 1; + } + ret = fio_sgio_read_capacity(td, &bs, &max_lba); if (ret ) { td_verror(td, td->error, "fio_sgio_read_capacity");