aboutsummaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
authorDouglas Gilbert <dgilbert@interlog.com>2019-05-18 15:37:19 +0000
committerDouglas Gilbert <dgilbert@interlog.com>2019-05-18 15:37:19 +0000
commit3e030c2951bee369b5593243bf317bb5a482a35b (patch)
tree0fc4dff2af1d3ff6f635877879b2c8ec8e6eb1f1 /testing
parentc80acc95be9d1463830259db821ac248e7dc7e46 (diff)
downloadsg3_utils-3e030c2951bee369b5593243bf317bb5a482a35b.tar.gz
sg_lib: add sg_f2hex_arr()
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@824 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'testing')
-rw-r--r--testing/sg_tst_ioctl.c32
-rw-r--r--testing/sgh_dd.cpp20
-rw-r--r--testing/sgs_dd.c12
3 files changed, 42 insertions, 22 deletions
diff --git a/testing/sg_tst_ioctl.c b/testing/sg_tst_ioctl.c
index a059643f..8629a684 100644
--- a/testing/sg_tst_ioctl.c
+++ b/testing/sg_tst_ioctl.c
@@ -75,7 +75,7 @@ static const char * version_str = "Version: 1.10 20190506";
#endif
#define DEF_Q_LEN 16 /* max in sg v3 and earlier */
-#define MAX_Q_LEN 256
+#define MAX_Q_LEN 512
#define DEF_RESERVE_BUFF_SZ (256 * 1024)
@@ -89,6 +89,7 @@ static bool mrq_immed = false; /* if set, also sets mrq_iosubmit */
static bool mrq_half_immed = false;
static bool mrq_iosubmit = false;
static bool show_size_value = false;
+static bool do_v3_only = false;
static int childs_pid = 0;
static int sg_drv_ver_num = 0;
@@ -104,8 +105,8 @@ static const char * relative_cp = NULL;
static void
usage(void)
{
- printf("Usage: sg_tst_ioctl [-f] [-h] [-l=Q_LEN] [-m=MRQS[,I|S]] [-M] "
- "[-o]\n"
+ printf("Usage: sg_tst_ioctl [-3] [-f] [-h] [-l=Q_LEN] [-m=MRQS[,I|S]] "
+ "[-M] [-o]\n"
" [-r=SZ] [-s=SEC] [-S] [-t] [-v] [-V] [-w]\n"
" <sg_device> [<sg_device2>]\n"
" where:\n"
@@ -257,8 +258,8 @@ set_more_async(int fd)
}
static int
-tst_ioctl(const char * fnp, int sg_fd, const char * fn2p, int sg_fd2,
- int sock, const char * cp)
+tst_extended_ioctl(const char * fnp, int sg_fd, const char * fn2p, int sg_fd2,
+ int sock, const char * cp)
{
uint32_t cflags;
struct sg_extended_info sei;
@@ -650,7 +651,9 @@ main(int argc, char * argv[])
pr2serr("Warning <<<< sizeof(struct sg_extended_info)=%zu not 96\n",
sizeof(struct sg_extended_info));
for (k = 1; k < argc; ++k) {
- if (0 == memcmp("-f", argv[k], 2))
+ if (0 == memcmp("-3", argv[k], 2))
+ do_v3_only = true;
+ else if (0 == memcmp("-f", argv[k], 2))
do_fork = true;
else if (0 == memcmp("-h", argv[k], 2)) {
file_name = 0;
@@ -811,7 +814,7 @@ main(int argc, char * argv[])
goto out;
}
printf("Linux sg driver version: %d\n", sg_drv_ver_num);
- if (more_async)
+ if (more_async && !do_v3_only)
set_more_async(sg_fd);
if (second_fname) {
@@ -824,11 +827,11 @@ main(int argc, char * argv[])
if (verbose)
fprintf(stderr, "opened second file: %s successfully, fd=%d\n",
second_fname, sg_fd2);
- if (more_async)
+ if (more_async && !do_v3_only)
set_more_async(sg_fd2);
}
- if (num_mrqs > 0) {
+ if ((num_mrqs > 0) && !do_v3_only) {
res = do_mrqs(sg_fd, sg_fd2, num_mrqs);
goto out;
}
@@ -862,15 +865,18 @@ main(int argc, char * argv[])
}
cp = do_fork ? relative_cp : "";
- if (tst_ioctl(file_name, sg_fd, second_fname, sg_fd2, sock, cp))
- goto out;
+ if (! do_v3_only) {
+ if (tst_extended_ioctl(file_name, sg_fd, second_fname, sg_fd2, sock,
+ cp))
+ goto out;
+ }
if (ioctl_only)
goto out;
if (do_fork && !is_parent)
return 0;
- printf("start iosubmit calls\n");
+ printf("start write() calls [submits]\n");
for (k = 0; k < q_len; ++k) {
/* Prepare INQUIRY command */
memset(&io_hdr[k], 0, sizeof(sg_io_hdr_t));
@@ -950,7 +956,7 @@ main(int argc, char * argv[])
else
printf("num_waiting: %d\n", num_waiting);
- printf("\nstart ioreceive() calls\n");
+ printf("\nstart read() calls [io receive]\n");
for (k = 0, done = false; k < q_len; ++k) {
if ((! done) && (k == q_len / 2)) {
done = true;
diff --git a/testing/sgh_dd.cpp b/testing/sgh_dd.cpp
index bde865dc..185044f1 100644
--- a/testing/sgh_dd.cpp
+++ b/testing/sgh_dd.cpp
@@ -103,7 +103,7 @@
using namespace std;
-static const char * version_str = "1.30 20190505";
+static const char * version_str = "1.31 20190515";
#ifdef __GNUC__
#ifndef __clang__
@@ -305,6 +305,7 @@ static pthread_mutex_t strerr_mut = PTHREAD_MUTEX_INITIALIZER;
static bool have_sg_version = false;
static int sg_version = 0;
+static bool sg_version_lt_4 = false;
static bool shutting_down = false;
static bool do_sync = false;
static bool do_time = true;
@@ -1039,7 +1040,7 @@ read_write_thread(void * v_tip)
pr2serr_lk("thread=%d: using global sg OFILE2, fd=%d\n", rep->id,
rep->out2fd);
}
- if (rep->in_flags.noshare || rep->out_flags.noshare) {
+ if (rep->in_flags.noshare || rep->out_flags.noshare || sg_version_lt_4) {
if (vb > 4)
pr2serr_lk("thread=%d: Skipping share on both IFILE and OFILE\n",
rep->id);
@@ -2184,6 +2185,7 @@ static int
sg_prepare_resbuf(int fd, int bs, int bpt, bool def_res, int elem_sz,
bool unit_nano, bool no_dur, bool masync, uint8_t **mmpp)
{
+ static bool done = false;
int res, t, num;
uint8_t *mmp;
struct sg_extended_info sei;
@@ -2192,8 +2194,17 @@ sg_prepare_resbuf(int fd, int bs, int bpt, bool def_res, int elem_sz,
seip = &sei;
res = ioctl(fd, SG_GET_VERSION_NUM, &t);
if ((res < 0) || (t < 40000)) {
- pr2serr_lk("%ssg driver prior to 4.0.00\n", my_name);
- return 0;
+ if (ioctl(fd, SG_GET_RESERVED_SIZE, &num) < 0) {
+ perror("SG_GET_RESERVED_SIZE ioctl failed");
+ return 0;
+ }
+ if (! done) {
+ done = true;
+ sg_version_lt_4 = true;
+ pr2serr_lk("%ssg driver prior to 4.0.00, reduced functionality\n",
+ my_name);
+ }
+ goto fini;
}
if (elem_sz >= 4096) {
memset(seip, 0, sizeof(*seip));
@@ -2263,6 +2274,7 @@ sg_prepare_resbuf(int fd, int bs, int bpt, bool def_res, int elem_sz,
errno, strerror(errno));
}
}
+fini:
return (res < 0) ? 0 : num;
}
diff --git a/testing/sgs_dd.c b/testing/sgs_dd.c
index 991f8011..e0ff7b4b 100644
--- a/testing/sgs_dd.c
+++ b/testing/sgs_dd.c
@@ -78,7 +78,7 @@
#include "sg_unaligned.h"
-static const char * version_str = "4.07 20190503";
+static const char * version_str = "4.08 20190515";
static const char * my_name = "sgs_dd";
#define DEF_BLOCK_SIZE 512
@@ -471,7 +471,7 @@ do_v4:
}
static int
-sz_reserve(int fd, int bs, int bpt, bool rt_sig)
+sz_reserve(int fd, int bs, int bpt, bool rt_sig, bool vb)
{
int res, t, flags;
struct sg_extended_info sei;
@@ -484,7 +484,8 @@ sz_reserve(int fd, int bs, int bpt, bool rt_sig)
return 1;
}
else if (t < 40000) {
- fprintf(stderr, "sgs_dd: warning: sg driver prior to 4.0.00\n");
+ if (vb)
+ fprintf(stderr, "sgs_dd: warning: sg driver prior to 4.0.00\n");
sgs_old_sg_driver = true;
}
res = 0;
@@ -1075,7 +1076,8 @@ main(int argc, char * argv[])
return 1;
}
clp->in_is_sg = true;
- if (sz_reserve(clp->infd, clp->bs, clp->bpt, clp->use_rt_sig))
+ if (sz_reserve(clp->infd, clp->bs, clp->bpt, clp->use_rt_sig,
+ clp->debug))
return 1;
if (sgs_old_sg_driver && (clp->iflag.v4 || clp->oflag.v4)) {
pr2serr("Unable to implement v4 flag because sg driver too "
@@ -1095,7 +1097,7 @@ main(int argc, char * argv[])
else {
clp->out_is_sg = true;
if (sz_reserve(clp->outfd, clp->bs, clp->bpt,
- clp->use_rt_sig))
+ clp->use_rt_sig, clp->debug))
return 1;
if (sgs_old_sg_driver && (clp->iflag.v4 || clp->oflag.v4)) {
pr2serr("Unable to implement v4 flag because sg driver "