aboutsummaryrefslogtreecommitdiff
path: root/lib/geom
diff options
context:
space:
mode:
authorMariusz Zaborski <oshogbo@FreeBSD.org>2019-07-31 17:47:12 +0000
committerMariusz Zaborski <oshogbo@FreeBSD.org>2019-07-31 17:47:12 +0000
commit4f80c85519d5957dd3c919b4889585dc92da2a39 (patch)
treea24c2db1366177cdce84a7d3349161048cf912a7 /lib/geom
parentc54ee572e54a6ee705fdd3047aa544e057b87f0f (diff)
downloadsrc-4f80c85519d5957dd3c919b4889585dc92da2a39.tar.gz
src-4f80c85519d5957dd3c919b4889585dc92da2a39.zip
gnop: Introduce requests delay.
This allows to simulated disk that is responding slowly to the IO requests. Reviewed by: markj, bcr, pjd (previous version) Differential Revision: https://reviews.freebsd.org/D21052
Notes
Notes: svn path=/head/; revision=350471
Diffstat (limited to 'lib/geom')
-rw-r--r--lib/geom/nop/geom_nop.c15
-rw-r--r--lib/geom/nop/gnop.815
2 files changed, 25 insertions, 5 deletions
diff --git a/lib/geom/nop/geom_nop.c b/lib/geom/nop/geom_nop.c
index 65dc07cf1a3c..12321d2179f2 100644
--- a/lib/geom/nop/geom_nop.c
+++ b/lib/geom/nop/geom_nop.c
@@ -43,29 +43,36 @@ uint32_t version = G_NOP_VERSION;
struct g_command class_commands[] = {
{ "create", G_FLAG_VERBOSE | G_FLAG_LOADKLD, NULL,
{
+ { 'd', "delaymsec", "-1", G_TYPE_NUMBER },
{ 'e', "error", "-1", G_TYPE_NUMBER },
{ 'o', "offset", "0", G_TYPE_NUMBER },
{ 'p', "stripesize", "0", G_TYPE_NUMBER },
{ 'P', "stripeoffset", "0", G_TYPE_NUMBER },
+ { 'q', "rdelayprob", "-1", G_TYPE_NUMBER },
{ 'r', "rfailprob", "-1", G_TYPE_NUMBER },
{ 's', "size", "0", G_TYPE_NUMBER },
{ 'S', "secsize", "0", G_TYPE_NUMBER },
{ 'w', "wfailprob", "-1", G_TYPE_NUMBER },
+ { 'x', "wdelayprob", "1", G_TYPE_NUMBER },
{ 'z', "physpath", G_NOP_PHYSPATH_PASSTHROUGH, G_TYPE_STRING },
G_OPT_SENTINEL
},
- "[-v] [-e error] [-o offset] [-p stripesize] [-P stripeoffset] "
- "[-r rfailprob] [-s size] [-S secsize] [-w wfailprob] "
- "[-z physpath] dev ..."
+ "[-v] [-d delaymsec] [-e error] [-o offset] [-p stripesize] "
+ "[-P stripeoffset] [-q rdelayprob] [-r rfailprob] [-s size] "
+ "[-S secsize] [-w wfailprob] [-x wdelayprob] [-z physpath] dev ..."
},
{ "configure", G_FLAG_VERBOSE, NULL,
{
+ { 'd', "delaymsec", "-1", G_TYPE_NUMBER },
{ 'e', "error", "-1", G_TYPE_NUMBER },
+ { 'q', "rdelayprob", "-1", G_TYPE_NUMBER },
{ 'r', "rfailprob", "-1", G_TYPE_NUMBER },
{ 'w', "wfailprob", "-1", G_TYPE_NUMBER },
+ { 'x', "wdelayprob", "1", G_TYPE_NUMBER },
G_OPT_SENTINEL
},
- "[-v] [-e error] [-r rfailprob] [-w wfailprob] prov ..."
+ "[-v] [-d delaymsec] [-e error] [-q rdelayprob] [-r rfailprob] "
+ "[-w wfailprob] [-x wdelayprob] prov ..."
},
{ "destroy", G_FLAG_VERBOSE, NULL,
{
diff --git a/lib/geom/nop/gnop.8 b/lib/geom/nop/gnop.8
index f9b3dc2c440e..ef6c44bc5297 100644
--- a/lib/geom/nop/gnop.8
+++ b/lib/geom/nop/gnop.8
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd January 17, 2018
+.Dd July 31, 2019
.Dt GNOP 8
.Os
.Sh NAME
@@ -34,22 +34,28 @@
.Nm
.Cm create
.Op Fl v
+.Op Fl d Ar delaymsec
.Op Fl e Ar error
.Op Fl o Ar offset
.Op Fl p Ar stripesize
.Op Fl P Ar stripeoffset
+.Op Fl q Ar rdelayprob
.Op Fl r Ar rfailprob
.Op Fl s Ar size
.Op Fl S Ar secsize
.Op Fl w Ar wfailprob
+.Op Fl x Ar wdelayprob
.Op Fl z Ar physpath
.Ar dev ...
.Nm
.Cm configure
.Op Fl v
+.Op Fl d Ar delaymsec
.Op Fl e Ar error
+.Op Fl q Ar rdelayprob
.Op Fl r Ar rfailprob
.Op Fl w Ar wfailprob
+.Op Fl x Ar wdelayprob
.Ar prov ...
.Nm
.Cm destroy
@@ -113,6 +119,9 @@ See
.Pp
Additional options:
.Bl -tag -width ".Fl r Ar rfailprob"
+.It Fl d Ar delaymsec
+Specifies the delay of the requests in milliseconds.
+Note that requests will be delayed before they are sent to the backing device.
.It Fl e Ar error
Specifies the error number to return on failure.
.It Fl f
@@ -123,6 +132,8 @@ Where to begin on the original provider.
Value of the stripesize property of the transparent provider.
.It Fl P Ar stripeoffset
Value of the stripeoffset property of the transparent provider.
+.It Fl q Ar rdelayprob
+Specifies read delay probability in percent.
.It Fl r Ar rfailprob
Specifies read failure probability in percent.
.It Fl s Ar size
@@ -133,6 +144,8 @@ Sector size of the transparent provider.
Specifies write failure probability in percent.
.It Fl v
Be more verbose.
+.It Fl x Ar wdelayprob
+Specifies write delay probability in percent.
.It Fl z Ar physpath
Physical path of the transparent provider.
.El