1nbdkit-nozero-filter(1) NBDKIT nbdkit-nozero-filter(1)
2
3
4
6 nbdkit-nozero-filter - nbdkit nozero filter
7
9 nbdkit --filter=nozero plugin [plugin-args...] \
10 [zeromode=MODE] [fastzeromode=MODE]
11
13 "nbdkit-nozero-filter" is a filter that intentionally disables
14 efficient handling of sparse file holes (ranges of all-zero bytes)
15 across the NBD protocol. It is mainly useful for evaluating timing
16 differences between naive vs. sparse-aware connections, and for testing
17 client or server fallbacks.
18
20 The parameters "zeromode" and "fastzeromode" are optional and control
21 which mode the filter will use.
22
23 zeromode=none
24 Zero support is not advertised to the client; clients must
25 explicitly write any regions of zero like any other normal write.
26
27 This is the default if the "zeromode" parameter is not specified.
28
29 zeromode=emulate
30 Zero support is advertised, but emulated by the filter by using the
31 plugin's "pwrite" callback, regardless of whether the plugin itself
32 has a more efficient C"zero" callback.
33
34 zeromode=notrim
35 (nbdkit ≥ 1.14)
36
37 Zero requests are forwarded on to the plugin, except that the
38 plugin will never see the "NBDKIT_MAY_TRIM" flag. This can help
39 determine if the client permitting trimming during zero operations
40 makes a difference. It is an error to request this mode if the
41 plugin lacks the "zero" callback.
42
43 zeromode=plugin
44 (nbdkit ≥ 1.16)
45
46 Zero requests are forwarded on to the plugin, unchanged by the
47 filter; this mode is helpful when experimenting with the
48 "fastzeromode" parameter. It is an error to request this mode if
49 the plugin lacks the "zero" callback.
50
51 fastzeromode=none
52 (nbdkit ≥ 1.16)
53
54 Support for fast zeroing is not advertised to the client.
55
56 fastzeromode=slow
57 (nbdkit ≥ 1.16)
58
59 Fast zero support is advertised to the client, but all fast zero
60 requests result in an immediate "ENOTSUP" failure rather than
61 performing any fallback attempts.
62
63 fastzeromode=ignore
64 (nbdkit ≥ 1.16)
65
66 This mode is unsafe: Fast zero support is advertised to the client,
67 but all fast zero requests behave as if the fast zero flag had not
68 been included. This behavior is typically contrary to the NBD
69 specification, but can be useful for comparison against the actual
70 fast zero implementation to see if fast zeroes make a difference.
71
72 fastzeromode=default
73 (nbdkit ≥ 1.16)
74
75 This mode is the default. When paired with "zeromode=emulate",
76 fast zeroes are advertised but fast zero requests always fail
77 (similar to "slow"); when paired with "zeromode=notrim" or
78 "zeromode=plugin", fast zero support is left to the plugin
79 (although in the latter case, the nozero filter could be omitted
80 for the same behavior).
81
83 Serve the file disk.img, but force the client to write zeroes
84 explicitly rather than with "NBD_CMD_WRITE_ZEROES":
85
86 nbdkit --filter=nozero file disk.img
87
88 Serve the file disk.img, allowing the client to take advantage of less
89 network traffic via "NBD_CMD_WRITE_ZEROES", but fail any fast zero
90 requests up front and force all other zero requests to write data
91 explicitly rather than punching any holes:
92
93 nbdkit --filter=nozero file zeromode=emulate disk.img
94
95 Serve the file disk.img, but do not advertise fast zero support to the
96 client even if the plugin supports it:
97
98 nbdkit --filter=nozero file zeromode=plugin fastzeromode=none disk.img
99
101 $filterdir/nbdkit-nozero-filter.so
102 The filter.
103
104 Use "nbdkit --dump-config" to find the location of $filterdir.
105
107 "nbdkit-nozero-filter" first appeared in nbdkit 1.4.
108
110 nbdkit(1), nbdkit-file-plugin(1), nbdkit-filter(3),
111 nbdkit-fua-filter(1), nbdkit-nocache-filter(1),
112 nbdkit-noparallel-filter(1), nbdkit-noextents-filter(1).
113
115 Eric Blake
116
118 Copyright (C) 2018-2020 Red Hat Inc.
119
121 Redistribution and use in source and binary forms, with or without
122 modification, are permitted provided that the following conditions are
123 met:
124
125 · Redistributions of source code must retain the above copyright
126 notice, this list of conditions and the following disclaimer.
127
128 · Redistributions in binary form must reproduce the above copyright
129 notice, this list of conditions and the following disclaimer in the
130 documentation and/or other materials provided with the
131 distribution.
132
133 · Neither the name of Red Hat nor the names of its contributors may
134 be used to endorse or promote products derived from this software
135 without specific prior written permission.
136
137 THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ANY
138 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
139 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
140 PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR CONTRIBUTORS BE
141 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
142 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
143 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
144 BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
145 WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
146 OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
147 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
148
149
150
151nbdkit-1.24.2 2021-03-02 nbdkit-nozero-filter(1)