aboutsummaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
authorDouglas Gilbert <dgilbert@interlog.com>2021-04-08 01:08:07 +0000
committerDouglas Gilbert <dgilbert@interlog.com>2021-04-08 01:08:07 +0000
commit7901cc4a6d580fddd88afccd8096cf292048db0b (patch)
tree6b08eb4d8a2465486aa1b81a34261f8e06f6a998 /testing
parent3eca65ae2a191c8a94138c4dea4286a9a9011ff0 (diff)
downloadsg3_utils-7901cc4a6d580fddd88afccd8096cf292048db0b.tar.gz
tweaking utilities in testing directory
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@894 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'testing')
-rw-r--r--testing/sg_iovec_tst.cpp6
-rw-r--r--testing/sg_mrq_dd.cpp9
-rw-r--r--testing/sg_take_snap.c25
-rw-r--r--testing/sg_tst_ioctl.c6
-rw-r--r--testing/sgh_dd.cpp17
-rw-r--r--testing/sgs_dd.c4
6 files changed, 45 insertions, 22 deletions
diff --git a/testing/sg_iovec_tst.cpp b/testing/sg_iovec_tst.cpp
index 3ee728ac..73c6168c 100644
--- a/testing/sg_iovec_tst.cpp
+++ b/testing/sg_iovec_tst.cpp
@@ -114,7 +114,7 @@ usage(void)
" [--skip=SKIP] [--verbose] [--version] "
"SG_DEV OUT_F\n");
printf("where:\n"
- " --async|-a async sg usage (def: use ioctl(SGIO) )\n");
+ " --async|-a async sg usage (def: use ioctl(SG_IO) )\n");
printf(" --bs=BS|-b BS logical block size of SG_DEV (def: 512 "
"bytes)\n");
printf(" --elem_sz=ES|-e ES iovec element size (def: BS bytes)\n");
@@ -126,9 +126,9 @@ usage(void)
printf(" --help|-h this usage message\n");
printf(" --num=NUM|-n NUM number of blocks to read from SG_DEV\n");
printf(" --sgl=SFN|-S SFN Sgl FileName (SFN) that is written to, "
- "with\n"
+ "with\n"
" addresses and lengths having ES as "
- "their unit\n");
+ "their unit\n");
printf(" --sgv4|-4 use the sg v4 interface (def: v3 "
"interface)\n");
printf(" --skip=SKIP|-s SKIP SKIP blocks before reading S_DEV "
diff --git a/testing/sg_mrq_dd.cpp b/testing/sg_mrq_dd.cpp
index 832a21a1..49f027ae 100644
--- a/testing/sg_mrq_dd.cpp
+++ b/testing/sg_mrq_dd.cpp
@@ -30,7 +30,7 @@
*
*/
-static const char * version_str = "1.25 20210331";
+static const char * version_str = "1.26 20210402";
#define _XOPEN_SOURCE 600
#ifndef _GNU_SOURCE
@@ -879,10 +879,11 @@ usage(int pg_num)
" null,sync]\n"
" count number of blocks to copy (def: device size)\n"
" if file or device to read from (def: stdin)\n"
- " iflag comma separated list from: [coe,dio,"
+ " iflag comma separated list from: [00,coe,dio,"
"direct,dpo,\n"
- " dsync,excl,fua,masync,mmap,nodur,\n"
- " null,order,qtail,serial,wq_excl]\n"
+ " dsync,excl,ff,fua,masync,mmap,nodur,null,"
+ "order,\n"
+ " qhead,qtail,random,serial,wq_excl]\n"
" of file or device to write to (def: /dev/null "
"N.B. different\n"
" from dd it defaults to stdout). If 'of=.' "
diff --git a/testing/sg_take_snap.c b/testing/sg_take_snap.c
index e0459dbc..852d3be6 100644
--- a/testing/sg_take_snap.c
+++ b/testing/sg_take_snap.c
@@ -55,7 +55,7 @@
#define ME "sg_take_snap: "
-static const char * version_str = "1.00.67 20210330";
+static const char * version_str = "1.01 20210403";
#define SG_TAKE_MAX_DEVS 16
@@ -161,6 +161,29 @@ int main(int argc, char * argv[])
sg_fd = -1;
goto fini;
}
+ if (0 == k) {
+ int t;
+
+ res = ioctl(sg_fd, SG_GET_VERSION_NUM, &t);
+ if ((res < 0) || (t < 30000)) {
+ pr2serr("sg driver prior to 3.0.00\n");
+ ret = SG_LIB_FILE_ERROR;
+ goto fini;
+ }
+ if (verbose) {
+ pr2serr("sg driver version: %d.%02d.%02d\n",
+ t / 10000, (t % 10000) / 100, t % 100);
+ }
+ if (t < 40000) {
+ pr2serr("Warning: sg driver prior to 4.0.00\n");
+ ret = SG_LIB_FILE_ERROR;
+ goto fini;
+ } else if (t < 40045) {
+ pr2serr("Warning: sg driver prior to 4.0.45\n");
+ ret = SG_LIB_FILE_ERROR;
+ goto fini;
+ }
+ }
seip = &sei;
memset(seip, 0, sizeof(*seip));
diff --git a/testing/sg_tst_ioctl.c b/testing/sg_tst_ioctl.c
index 0dff9f1a..f7a421e9 100644
--- a/testing/sg_tst_ioctl.c
+++ b/testing/sg_tst_ioctl.c
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018-2020 D. Gilbert
+ * Copyright (C) 2018-2021 D. Gilbert
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
@@ -60,7 +60,7 @@
* later of the Linux sg driver. */
-static const char * version_str = "Version: 1.19 20200825";
+static const char * version_str = "Version: 1.20 20210406";
#define INQ_REPLY_LEN 128
#define INQ_CMD_LEN 6
@@ -1203,7 +1203,7 @@ dname_range_loop:
}
cp = do_fork ? relative_cp : "";
- if (! do_v3_only) {
+ if (! do_v3_only && (sg_drv_ver_num > 40030)) {
if (tst_extended_ioctl(dname, sg_fd, second_fname, sg_fd2, sock,
cp))
goto out;
diff --git a/testing/sgh_dd.cpp b/testing/sgh_dd.cpp
index 1d3bf6fc..7fb4ae06 100644
--- a/testing/sgh_dd.cpp
+++ b/testing/sgh_dd.cpp
@@ -36,7 +36,7 @@
* renamed [20181221]
*/
-static const char * version_str = "2.03 20210331";
+static const char * version_str = "2.04 20210402";
#define _XOPEN_SOURCE 600
#ifndef _GNU_SOURCE
@@ -415,8 +415,7 @@ static const char * my_name = "sgh_dd: ";
static const char * mrq_blk_s = "mrq: ordinary blocking";
static const char * mrq_vb_s = "mrq: variable blocking";
static const char * mrq_svb_s = "mrq: shared variable blocking (svb)";
-static const char * mrq_s_nb_s = "mrq: submit non-blocking";
-static const char * mrq_nw_nb_s = "mrq: waitless non-blocking";
+static const char * mrq_s_nb_s = "mrq: submit of full non-blocking";
#ifdef __GNUC__
@@ -2500,8 +2499,9 @@ fini:
}
#endif
-/* do mrq 'submit (waitless) non-blocking' call. These are restricted to
- * a single file descriptor (i.e. the 'fd' argument). */
+/* do mrq 'full non-blocking' invocation so both submission and completion
+ * is async (i.e. uses SGV4_FLAG_IMMED flag). This type of mrq is
+ * restricted to a single file descriptor (i.e. the 'fd' argument). */
static int
sgh_do_async_mrq(Rq_elem * rep, mrq_arr_t & def_arr, int fd,
struct sg_io_v4 * ctlop, int nrq)
@@ -2520,11 +2520,11 @@ sgh_do_async_mrq(Rq_elem * rep, mrq_arr_t & def_arr, int fd,
a_v4p = def_arr.first.data();
ctlop->flags = SGV4_FLAG_MULTIPLE_REQS;
if (clp->in_flags.hipri || clp->out_flags.hipri) {
- /* hipri non-blocking */
+ /* submit of full non-blocking with HIPRI */
ctlop->flags |= (SGV4_FLAG_IMMED | SGV4_FLAG_HIPRI);
if (!after1 && (clp->verbose > 1)) {
after1 = true;
- pr2serr_lk("%s: %s\n", __func__, mrq_nw_nb_s);
+ pr2serr_lk("%s: %s\n", __func__, mrq_s_nb_s);
}
} else {
ctlop->flags |= SGV4_FLAG_IMMED; /* submit non-blocking */
@@ -2835,8 +2835,7 @@ sgh_do_deferred_mrq(Rq_elem * rep, mrq_arr_t & def_arr)
v4hdr_out_lk("Controlling object before", &ctl_v4, id);
}
if (clp->mrq_async && (! rep->both_sg)) {
- /* do 'submit non-blocking' or 'submit waitless non_blocking'
- * multiple request */
+ /* do 'submit non-blocking' or 'full non-blocking' mrq */
mrq_arr_t fd_def_arr;
mrq_arr_t o_fd_def_arr;
diff --git a/testing/sgs_dd.c b/testing/sgs_dd.c
index 7f567d9f..64ff86cf 100644
--- a/testing/sgs_dd.c
+++ b/testing/sgs_dd.c
@@ -84,7 +84,7 @@
#include "sg_unaligned.h"
-static const char * version_str = "4.18 20210331";
+static const char * version_str = "4.19 20210406";
static const char * my_name = "sgs_dd";
#ifndef SGV4_FLAG_HIPRI
@@ -940,7 +940,7 @@ start_write(Rq_coll * clp)
return blocks;
}
-/* Returns 0 if SGIO/SIGPOLL or (SIGRTMIN + 1) received, else returns negated
+/* Returns 0 if SIGIO/SIGPOLL or (SIGRTMIN + 1) received, else returns negated
* errno value; -EAGAIN for timeout. */
static int
do_sigwait(Rq_coll * clp, bool inc1_clear0)