aboutsummaryrefslogtreecommitdiff
path: root/testing
diff options
context:
space:
mode:
authorDouglas Gilbert <dgilbert@interlog.com>2019-06-18 15:53:19 +0000
committerDouglas Gilbert <dgilbert@interlog.com>2019-06-18 15:53:19 +0000
commit9546b77d7682770d4b8b334c2ac737adf5955b1b (patch)
treef6a4ad3120982c41ac71a0e8e23724a75399dad4 /testing
parent3dfb85f55d1cfbff0ae4658395471b9dc3b0a0d4 (diff)
downloadsg3_utils-9546b77d7682770d4b8b334c2ac737adf5955b1b.tar.gz
testing tweaks assocaied with sg v4 driver testing
git-svn-id: https://svn.bingwo.ca/repos/sg3_utils/trunk@826 6180dd3e-e324-4e3e-922d-17de1ae2f315
Diffstat (limited to 'testing')
-rw-r--r--testing/sg_tst_async.cpp17
-rw-r--r--testing/sgh_dd.cpp16
2 files changed, 23 insertions, 10 deletions
diff --git a/testing/sg_tst_async.cpp b/testing/sg_tst_async.cpp
index 150abea9..bfc14eb1 100644
--- a/testing/sg_tst_async.cpp
+++ b/testing/sg_tst_async.cpp
@@ -89,7 +89,7 @@
#include "sg_pt.h"
#include "sg_cmds.h"
-static const char * version_str = "1.35 20190612";
+static const char * version_str = "1.36 20190613";
static const char * util_name = "sg_tst_async";
/* This is a test program for checking the async usage of the Linux sg
@@ -1153,7 +1153,8 @@ work_thread(int id, struct opts_t * op)
}
if (vb && ! once1000 && num_outstanding >= 1000) {
int num_waiting;
- int num_subm = (op->sg_vn_ge_40030) ? num_submitted(sg_fd) : -1;
+ int num_subm = (op->sg_vn_ge_40030) ? num_submitted(sg_fd) :
+ pi2buff.size();
once1000 = true;
if (ioctl(sg_fd, SG_GET_NUM_WAITING, &num_waiting) < 0) {
@@ -1167,7 +1168,8 @@ work_thread(int id, struct opts_t * op)
}
if (vb && ! once5000 && num_outstanding >= 5000) {
int num_waiting;
- int num_subm = (op->sg_vn_ge_40030) ? num_submitted(sg_fd) : -1;
+ int num_subm = (op->sg_vn_ge_40030) ? num_submitted(sg_fd) :
+ pi2buff.size();
once5000 = true;
if (ioctl(sg_fd, SG_GET_NUM_WAITING, &num_waiting) < 0) {
@@ -1180,7 +1182,8 @@ work_thread(int id, struct opts_t * op)
}
if (vb && ! once_7000 && num_outstanding >= 7000) {
int num_waiting;
- int num_subm = (op->sg_vn_ge_40030) ? num_submitted(sg_fd) : -1;
+ int num_subm = (op->sg_vn_ge_40030) ? num_submitted(sg_fd) :
+ pi2buff.size();
once_7000 = true;
if (ioctl(sg_fd, SG_GET_NUM_WAITING, &num_waiting) < 0) {
@@ -1193,7 +1196,8 @@ work_thread(int id, struct opts_t * op)
}
if (vb && ! once10_000 && num_outstanding >= 10000) {
int num_waiting;
- int num_subm = (op->sg_vn_ge_40030) ? num_submitted(sg_fd) : -1;
+ int num_subm = (op->sg_vn_ge_40030) ? num_submitted(sg_fd) :
+ pi2buff.size();
once10_000 = true;
if (ioctl(sg_fd, SG_GET_NUM_WAITING, &num_waiting) < 0) {
@@ -1206,7 +1210,8 @@ work_thread(int id, struct opts_t * op)
}
if (vb && ! once20_000 && num_outstanding >= 20000) {
int num_waiting;
- int num_subm = (op->sg_vn_ge_40030) ? num_submitted(sg_fd) : -1;
+ int num_subm = (op->sg_vn_ge_40030) ? num_submitted(sg_fd) :
+ pi2buff.size();
once20_000 = true;
if (ioctl(sg_fd, SG_GET_NUM_WAITING, &num_waiting) < 0) {
diff --git a/testing/sgh_dd.cpp b/testing/sgh_dd.cpp
index 2de7bbaa..f0669b1a 100644
--- a/testing/sgh_dd.cpp
+++ b/testing/sgh_dd.cpp
@@ -103,7 +103,7 @@
using namespace std;
-static const char * version_str = "1.33 20190612";
+static const char * version_str = "1.34 20190613";
#ifdef __GNUC__
#ifndef __clang__
@@ -309,6 +309,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 sg_version_ge_40030 = false;
static bool shutting_down = false;
static bool do_sync = false;
static bool do_time = true;
@@ -1047,7 +1048,8 @@ read_write_thread(void * v_tip)
if (vb > 4)
pr2serr_lk("thread=%d: Skipping share on both IFILE and OFILE\n",
rep->id);
- } else if ((FT_SG == clp->in_type) && (FT_SG == clp->out_type))
+ } else if (sg_version_ge_40030 && (FT_SG == clp->in_type) &&
+ (FT_SG == clp->out_type))
rep->has_share = sg_share_prepare(rep->outfd, rep->infd, rep->id,
rep->debug > 9);
if (vb > 9)
@@ -2223,6 +2225,8 @@ sg_prepare_resbuf(int fd, int bs, int bpt, bool def_res, int elem_sz,
}
goto fini;
}
+ if (! sg_version_ge_40030)
+ goto bypass;
if (elem_sz >= 4096) {
memset(seip, 0, sizeof(*seip));
seip->sei_rd_mask |= SG_SEIM_SGAT_ELEM_SZ;
@@ -2245,7 +2249,8 @@ sg_prepare_resbuf(int fd, int bs, int bpt, bool def_res, int elem_sz,
pr2serr_lk("sgh_dd: %s: SG_SET_GET_EXTENDED(SGAT_ELEM_SZ) "
"wr error: %s\n", __func__, strerror(errno));
}
- } else if (no_dur || masync) {
+ }
+ if (no_dur || masync) {
memset(seip, 0, sizeof(*seip));
seip->sei_wr_mask |= SG_SEIM_CTL_FLAGS;
if (no_dur) {
@@ -2261,6 +2266,7 @@ sg_prepare_resbuf(int fd, int bs, int bpt, bool def_res, int elem_sz,
pr2serr_lk("sgh_dd: %s: SG_SET_GET_EXTENDED(NO_DURATION) "
"error: %s\n", __func__, strerror(errno));
}
+bypass:
if (! def_res) {
num = bs * bpt;
res = ioctl(fd, SG_SET_RESERVED_SIZE, &num);
@@ -2280,7 +2286,7 @@ sg_prepare_resbuf(int fd, int bs, int bpt, bool def_res, int elem_sz,
res = ioctl(fd, SG_SET_FORCE_PACK_ID, &t);
if (res < 0)
perror("sgh_dd: SG_SET_FORCE_PACK_ID error");
- if (unit_nano) {
+ if (unit_nano && sg_version_ge_40030) {
memset(seip, 0, sizeof(*seip));
seip->sei_wr_mask |= SG_SEIM_CTL_FLAGS;
seip->ctl_flags_wr_mask |= SG_CTL_FLAGM_TIME_IN_NS;
@@ -2495,6 +2501,8 @@ main(int argc, char * argv[])
if (sg_version > 40000) {
clp->in_flags.v4 = true;
clp->out_flags.v4 = true;
+ if (sg_version >= 40030)
+ sg_version_ge_40030 = true;
}
for (k = 1; k < argc; k++) {