.\" Automatically generated by Podwrapper::Man 1.32.5 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "nbdkit-delay-filter 1" .TH nbdkit-delay-filter 1 "2023-01-04" "nbdkit-1.32.5" "NBDKIT" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" nbdkit\-delay\-filter \- nbdkit delay filter .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& nbdkit \-\-filter=delay plugin rdelay=SECS wdelay=SECS [plugin\-args...] .Ve .PP .Vb 1 \& nbdkit \-\-filter=delay plugin rdelay=NNms wdelay=NNms [plugin\-args...] .Ve .PP .Vb 10 \& nbdkit \-\-filter=delay plugin [plugin\-args ...] \& delay\-read=(SECS|NNms) \& delay\-write=(SECS|NNms) \& delay\-zero=(SECS|NNms) \& delay\-trim=(SECS|NNms) \& delay\-extents=(SECS|NNms) \& delay\-cache=(SECS|NNms) \& delay\-fast\-zero=BOOL \& delay\-open=(SECS|NNms) \& delay\-close=(SECS|NNms) .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\f(CW\*(C`nbdkit\-delay\-filter\*(C'\fR is a filter that delays read and write requests by some seconds or milliseconds. This is used to simulate a slow or remote server, or to test certain kinds of race conditions in Linux. To limit server bandwidth use \fBnbdkit\-rate\-filter\fR\|(1) instead. .SH "EXAMPLES" .IX Header "EXAMPLES" Delays reads and writes by 100ms: .PP .Vb 1 \& nbdkit \-\-filter=delay file disk.img rdelay=100ms wdelay=100ms .Ve .PP Delay only zero operations by 1 second, nothing else is affected: .PP .Vb 1 \& nbdkit \-\-filter=delay file disk.img delay\-zero=1 .Ve .SH "PARAMETERS" .IX Header "PARAMETERS" .IP "\fBrdelay=\fR\s-1SECS\s0" 4 .IX Item "rdelay=SECS" .PD 0 .IP "\fBrdelay=\fR\s-1NN\s0\fBms\fR" 4 .IX Item "rdelay=NNms" .IP "\fBdelay\-read=\fR\s-1SECS\s0" 4 .IX Item "delay-read=SECS" .IP "\fBdelay\-read=\fR\s-1NN\s0\fBms\fR" 4 .IX Item "delay-read=NNms" .PD Delay read operations by \f(CW\*(C`SECS\*(C'\fR seconds or \f(CW\*(C`NN\*(C'\fR milliseconds. .Sp The two forms \f(CW\*(C`rdelay\*(C'\fR and \f(CW\*(C`delay\-read\*(C'\fR work identically. .IP "\fBdelay\-write=\fR\s-1SECS\s0" 4 .IX Item "delay-write=SECS" .PD 0 .IP "\fBdelay\-write=\fR\s-1NN\s0\fBms\fR" 4 .IX Item "delay-write=NNms" .PD Delay write operations by \f(CW\*(C`SECS\*(C'\fR seconds or \f(CW\*(C`NN\*(C'\fR milliseconds. .IP "\fBdelay\-zero=\fR\s-1SECS\s0" 4 .IX Item "delay-zero=SECS" .PD 0 .IP "\fBdelay\-zero=\fR\s-1NN\s0\fBms\fR" 4 .IX Item "delay-zero=NNms" .PD (nbdkit ≥ 1.10) .Sp Delay zero operations by \f(CW\*(C`SECS\*(C'\fR seconds or \f(CW\*(C`NN\*(C'\fR milliseconds. See also \fBdelay-fast-zero\fR. .IP "\fBdelay\-trim=\fR\s-1SECS\s0" 4 .IX Item "delay-trim=SECS" .PD 0 .IP "\fBdelay\-trim=\fR\s-1NN\s0\fBms\fR" 4 .IX Item "delay-trim=NNms" .PD (nbdkit ≥ 1.10) .Sp Delay trim/discard operations by \f(CW\*(C`SECS\*(C'\fR seconds or \f(CW\*(C`NN\*(C'\fR milliseconds. .IP "\fBdelay\-extents=\fR\s-1SECS\s0" 4 .IX Item "delay-extents=SECS" .PD 0 .IP "\fBdelay\-extents=\fR\s-1NN\s0\fBms\fR" 4 .IX Item "delay-extents=NNms" .PD (nbdkit ≥ 1.12) .Sp Delay block status (extents) operations by \f(CW\*(C`SECS\*(C'\fR seconds or \f(CW\*(C`NN\*(C'\fR milliseconds. .IP "\fBdelay\-cache=\fR\s-1SECS\s0" 4 .IX Item "delay-cache=SECS" .PD 0 .IP "\fBdelay\-cache=\fR\s-1NN\s0\fBms\fR" 4 .IX Item "delay-cache=NNms" .PD (nbdkit ≥ 1.14) .Sp Delay advisory cache operations by \f(CW\*(C`SECS\*(C'\fR seconds or \f(CW\*(C`NN\*(C'\fR milliseconds. .IP "\fBwdelay=\fR\s-1SECS\s0" 4 .IX Item "wdelay=SECS" .PD 0 .IP "\fBwdelay=\fR\s-1NN\s0\fBms\fR" 4 .IX Item "wdelay=NNms" .PD Delay write, zero and trim operations by \f(CW\*(C`SECS\*(C'\fR seconds or \f(CW\*(C`NN\*(C'\fR milliseconds. .IP "\fBdelay\-fast\-zero=\fR\s-1BOOL\s0" 4 .IX Item "delay-fast-zero=BOOL" (nbdkit ≥ 1.16) .Sp The \s-1NBD\s0 specification documents an extension called fast zero, in which the client may request that a server should reply with \&\f(CW\*(C`ENOTSUP\*(C'\fR as soon as possible if the zero operation offers no real speedup over a corresponding write. By default, this parameter is true, and fast zero requests are serviced by the plugin after the same delay as any other zero request; but setting this parameter to false instantly fails a fast zero response without waiting for or consulting the plugin. .IP "\fBdelay\-open=\fR\s-1SECS\s0" 4 .IX Item "delay-open=SECS" .PD 0 .IP "\fBdelay\-open=\fR\s-1NN\s0\fBms\fR" 4 .IX Item "delay-open=NNms" .PD (nbdkit ≥ 1.28) .Sp Delay open (client connection) by \f(CW\*(C`SECS\*(C'\fR seconds or \f(CW\*(C`NN\*(C'\fR milliseconds. .IP "\fBdelay\-close=\fR\s-1SECS\s0" 4 .IX Item "delay-close=SECS" .PD 0 .IP "\fBdelay\-close=\fR\s-1NN\s0\fBms\fR" 4 .IX Item "delay-close=NNms" .PD (nbdkit ≥ 1.28) .Sp Delay close (client disconnection) by \f(CW\*(C`SECS\*(C'\fR seconds or \f(CW\*(C`NN\*(C'\fR milliseconds. This can also cause server shutdown to be delayed if clients are connected at the time. This only affects clients that gracefully disconnect (using \f(CW\*(C`NBD_CMD_DISC\*(C'\fR / libnbd function \&\fBnbd_shutdown\fR\|(3)). Clients that abruptly disconnect from the server cannot be delayed. .SH "FILES" .IX Header "FILES" .IP "\fI\f(CI$filterdir\fI/nbdkit\-delay\-filter.so\fR" 4 .IX Item "$filterdir/nbdkit-delay-filter.so" The filter. .Sp Use \f(CW\*(C`nbdkit \-\-dump\-config\*(C'\fR to find the location of \f(CW$filterdir\fR. .SH "VERSION" .IX Header "VERSION" \&\f(CW\*(C`nbdkit\-delay\-filter\*(C'\fR first appeared in nbdkit 1.2, based on earlier \&\f(CW\*(C`rdelay\*(C'\fR and \f(CW\*(C`wdelay\*(C'\fR options in \fBnbdkit\-file\-plugin\fR\|(1). .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBnbdkit\fR\|(1), \&\fBnbdkit\-filter\fR\|(3), \&\fBnbdkit\-pause\-filter\fR\|(1), \&\fBnbdkit\-rate\-filter\fR\|(1). .SH "AUTHORS" .IX Header "AUTHORS" Richard W.M. Jones .SH "COPYRIGHT" .IX Header "COPYRIGHT" Copyright (C) 2018\-2021 Red Hat Inc. .SH "LICENSE" .IX Header "LICENSE" Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: .IP "\(bu" 4 Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. .IP "\(bu" 4 Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. .IP "\(bu" 4 Neither the name of Red Hat nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. .PP \&\s-1THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS\s0 ''\s-1AS IS\s0'' \s-1AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\s0 (\s-1INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES\s0; \s-1LOSS OF USE, DATA, OR PROFITS\s0; \s-1OR BUSINESS INTERRUPTION\s0) \s-1HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\s0 (\s-1INCLUDING NEGLIGENCE OR OTHERWISE\s0) \s-1ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\s0