1 \documentclass[12pt,a4paper]{article}
2 \usepackage[utf8x]{inputenc}
8 linkcolor={red!50!black},
9 citecolor={blue!50!black},
10 urlcolor={blue!80!black}
12 %\usepackage{abstract}
13 %\usepackage{graphicx}
14 %\DeclareGraphicsExtensions{.pdf,.png,.jpg}
23 \title{Summary of changes in NBD-related projects since mid 2016}
28 \section{NBD protocol}
29 \url{https://github.com/NetworkBlockDevice/nbd/blob/master/doc/proto.md}
36 \verb|NBD_OPT_INFO| and \verb|NBD_OPT_GO| (finalized)
38 TLS support (finalized)
40 \verb|NBD_OPT_BLOCK_SIZE|
42 \verb|NBD_FLAG_CAN_MULTI_CONN|
46 \verb|STRUCTURED_REPLY| merged
50 \verb|NBD_CMD_BLOCK_STATUS|, metadata contexts, \verb|base:|
51 namespace, etc. merged
53 Preferred block size specified as 512 bytes. Document maximum
60 \verb|NBD_CMD_FLAG_FAST_ZERO|
62 Recommend use of \verb|TCP_NODELAY|
70 NBD URI specification was introduced.
71 \url{https://github.com/NetworkBlockDevice/nbd/blob/master/doc/uri.md}
75 \section{qemu client, qemu-nbd}
81 QMP \verb|nbd-server-add|
83 \verb|NBD_CMD_WRITE_ZEROES|
87 Systemd socket activation
95 Interop improvements with nbdkit
97 Various fixes related to request alignment
99 \verb|qemu-nbd --bitmap|
101 \verb|qemu-nbd --list|
103 \verb|qemu-nbd --partition| deprecated
105 \verb|qemu-nbd --tls-authz|
109 \verb|qemu-nbd --pid-file|
111 \item[4.2, later in 2019]
115 \verb|NBD_FLAG_CAN_MULTI_CONN| set automatically in some
118 \verb|NBD_CMD_FLAG_FAST_ZERO|
127 \item[1.4, July 2018]
129 \url{https://www.redhat.com/archives/libguestfs/2018-July/msg00023.html}
131 New plugins: Tcl, ext2, random, zero
133 New filters: blocksize, fua, log, nozero
141 \url{https://www.redhat.com/archives/libguestfs/2018-August/msg00279.html}
143 New plugins: Lua, pattern, data
145 New filters: truncate, error
147 \verb|NBD_OPT_GO| supported
151 \verb|-D| options for debugging
155 \url{https://www.redhat.com/archives/libguestfs/2018-November/msg00111.html}
157 New plugins: sh, iso, floppy, partitioning
161 \item[1.10, Jan 2019]
163 \url{https://www.redhat.com/archives/libguestfs/2019-January/msg00135.html}
167 New filters: cache, delay, xz
175 \item[1.12, Apr 2019]
177 \url{https://www.redhat.com/archives/virt-tools-list/2019-April/msg00045.html}
179 New plugins: ssh, linuxdisk, rust
181 New filters: rate, readahead, noextents
183 \verb|NBD_CMD_BLOCK_STATUS|
185 \item[1.14, Aug 2019]
187 \url{https://www.redhat.com/archives/libguestfs/2019-August/msg00375.html}
189 New filters: stats, nocache, noparallel, cacheextents
191 Many performance improvements
200 Project started last day of April 2019.
206 Most \verb|NBD_CMD_| implemented, and working connection to nbdkit,
207 within first 10 days. Interoperating with qemu-nbd within 2 weeks.
208 TLS implemented and interoperating with qemu-nbd within 16 days.
210 Generated C API, Python 3 bindings and \verb|nbdsh|, OCaml bindings,
211 hierarchical state machine.
215 Subprocess server (\verb|nbd_connect_command|)
219 \verb|NBD_CMD_BLOCK_STATUS| and \verb|base:allocation|
221 Multiple commands ready to issue and in flight
225 ``Internal'' multi-conn support added then removed
229 Some API calls can be handled without taking the lock
231 libnbd $0.1.2$ was released on May $30^{th}$ 2019.
237 \verb|nbdsh -c| parameter
239 \verb|MSG_MORE| optimization
241 Better handling of multiple in-flight commands, a lot of
242 optimization, and finessing of the API.
244 Python bindings custom exception \verb|nbd.Error|
250 Further work on callbacks
252 Optimize command queue to be $O(1)$ instead of $O(n)$
256 libnbd $0.9.6$ was released on Jul $30^{th}$ 2019.
262 Debug output includes function names, parameters, return values
264 Optional function parameters
266 Man pages for every API
270 First stable version $1.0$ was released on August $27^{th}$ 2019.
272 \item[September 2019]
274 Support for \verb|FAST_ZERO|
276 New APIs for testing servers without Structured Replies and explicitly
277 setting handshake flags. New APIs for finding out if TLS was
278 negotiated, and what NBD protocol is being used.
284 Share \verb|nbd-protocol.h| file with nbdkit
288 Systemd socket activation
290 Fuzz testing (discovers one serious CVE)
292 New API to connect directly to socket
294 New \verb|nbdfuse| tool