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}
87 \url{https://www.redhat.com/archives/libguestfs/2018-July/msg00023.html}
89 New plugins: Tcl, ext2, random, zero
91 New filters: blocksize, fua, log, nozero
99 \url{https://www.redhat.com/archives/libguestfs/2018-August/msg00279.html}
101 New plugins: Lua, pattern, data
103 New filters: truncate, error
105 \verb|NBD_OPT_GO| supported
109 \verb|-D| options for debugging
113 \url{https://www.redhat.com/archives/libguestfs/2018-November/msg00111.html}
115 New plugins: sh, iso, floppy, partitioning
119 \item[1.10, Jan 2019]
121 \url{https://www.redhat.com/archives/libguestfs/2019-January/msg00135.html}
125 New filters: cache, delay, xz
133 \item[1.12, Apr 2019]
135 \url{https://www.redhat.com/archives/virt-tools-list/2019-April/msg00045.html}
137 New plugins: ssh, linuxdisk, rust
139 New filters: rate, readahead, noextents
141 \verb|NBD_CMD_BLOCK_STATUS|
143 \item[1.14, Aug 2019]
145 \url{https://www.redhat.com/archives/libguestfs/2019-August/msg00375.html}
147 New filters: stats, nocache, noparallel, cacheextents
149 Many performance improvements
158 Project started last day of April 2019.
164 Most \verb|NBD_CMD_| implemented, and working connection to nbdkit,
165 within first 10 days. Interoperating with qemu-nbd within 2 weeks.
166 TLS implemented and interoperating with qemu-nbd within 16 days.
168 Generated C API, Python 3 bindings and \verb|nbdsh|, OCaml bindings,
169 hierarchical state machine.
173 Subprocess server (\verb|nbd_connect_command|)
177 \verb|NBD_CMD_BLOCK_STATUS| and \verb|base:allocation|
179 Multiple commands ready to issue and in flight
183 ``Internal'' multi-conn support added then removed
187 Some API calls can be handled without taking the lock
189 libnbd $0.1.2$ was released on May $30^{th}$ 2019.
195 \verb|nbdsh -c| parameter
197 \verb|MSG_MORE| optimization
199 Better handling of multiple in-flight commands, a lot of
200 optimization, and finessing of the API.
202 Python bindings custom exception \verb|nbd.Error|
208 Further work on callbacks
210 Optimize command queue to be $O(1)$ instead of $O(n)$
214 libnbd $0.9.6$ was released on Jul $30^{th}$ 2019.
220 Debug output includes function names, parameters, return values
222 Optional function parameters
224 Man pages for every API
228 First stable version $1.0$ was released on August $27^{th}$ 2019.
230 \item[September 2019]
232 Support for \verb|FAST_ZERO|
234 New APIs for testing servers without Structured Replies and explicitly
235 setting handshake flags. New APIs for finding out if TLS was
236 negotiated, and what NBD protocol is being used.
242 Share \verb|nbd-protocol.h| file with nbdkit
246 Systemd socket activation
248 Fuzz testing (discovers one serious CVE)
250 New API to connect directly to socket
252 New \verb|nbdfuse| tool