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 Project started last day of April 2019.
93 Most \verb|NBD_CMD_| implemented, and working connection to nbdkit,
94 within first 10 days. Interoperating with qemu-nbd within 2 weeks.
95 TLS implemented and interoperating with qemu-nbd within 16 days.
97 Generated C API, Python 3 bindings and \verb|nbdsh|, OCaml bindings,
98 hierarchical state machine.
102 Subprocess server (\verb|nbd_connect_command|)
106 \verb|NBD_CMD_BLOCK_STATUS| and \verb|base:allocation|
108 Multiple commands ready to issue and in flight
112 ``Internal'' multi-conn support added then removed
116 Some API calls can be handled without taking the lock
118 libnbd $0.1.2$ was released on May $30^{th}$ 2019.
124 \verb|nbdsh -c| parameter
126 \verb|MSG_MORE| optimization
128 Better handling of multiple in-flight commands, a lot of
129 optimization, and finessing of the API.
131 Python bindings custom exception \verb|nbd.Error|
137 Further work on callbacks
139 Optimize command queue to be $O(1)$ instead of $O(n)$
143 libnbd $0.9.6$ was released on Jul $30^{th}$ 2019.
149 Debug output includes function names, parameters, return values
151 Optional function parameters
153 Man pages for every API
157 First stable version $1.0$ was released on August $27^{th}$ 2019.
159 \item[September 2019]
161 Support for \verb|FAST_ZERO|
163 New APIs for testing servers without Structured Replies and explicitly
164 setting handshake flags. New APIs for finding out if TLS was
165 negotiated, and what NBD protocol is being used.
171 Share \verb|nbd-protocol.h| file with nbdkit
175 Systemd socket activation
177 Fuzz testing (discovers one serious CVE)
179 New API to connect directly to socket
181 New \verb|nbdfuse| tool