X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=2019-kvm-forum%2Fpapers%2FNBD-changes.tex;h=fceae20f4a9ea370e682958103d914fc8d63d038;hb=6f34bcd5178f2622d9a15915ad2ca136525f318a;hp=c588de16a77ad5622c3115a63b1e41d6bd8188ee;hpb=4691b2462b2c469d37c978fd254f12c5218a9f13;p=libguestfs-talks.git diff --git a/2019-kvm-forum/papers/NBD-changes.tex b/2019-kvm-forum/papers/NBD-changes.tex index c588de1..fceae20 100644 --- a/2019-kvm-forum/papers/NBD-changes.tex +++ b/2019-kvm-forum/papers/NBD-changes.tex @@ -71,17 +71,228 @@ NBD URI specification was introduced. \url{https://github.com/NetworkBlockDevice/nbd/blob/master/doc/uri.md} \end{description} - -\section{qemu-nbd} +\section{qemu client, qemu-nbd} + +\begin{description} + +\item[2.8, Dec 2016] + +QMP \verb|nbd-server-add| + +\verb|NBD_CMD_WRITE_ZEROES| + +\item[2.9, Apr 2017] + +Systemd socket activation + +\item[3.0, Aug 2018] + +\item[3.1, Dec 2018] + +\item[4.0, Apr 2019] + +Interop improvements with nbdkit + +Various fixes related to request alignment + +\verb|qemu-nbd --bitmap| +\verb|qemu-nbd --list| +\verb|qemu-nbd --partition| deprecated + +\verb|qemu-nbd --tls-authz| + +\item[4.1, Aug 2019] + +\verb|qemu-nbd --pid-file| + +\item[4.2, later in 2019] + +\verb|NBD_CMD_CACHE| + +\verb|NBD_FLAG_CAN_MULTI_CONN| set automatically in some +circumstances + +\verb|NBD_CMD_FLAG_FAST_ZERO| + +\end{description} \section{nbdkit} +\begin{description} + +\item[1.4, July 2018] + +\url{https://www.redhat.com/archives/libguestfs/2018-July/msg00023.html} + +New plugins: Tcl, ext2, random, zero + +New filters: blocksize, fua, log, nozero + +TLS-PSK + +TRIM support + +\item[1.6, Aug 2018] + +\url{https://www.redhat.com/archives/libguestfs/2018-August/msg00279.html} + +New plugins: Lua, pattern, data + +New filters: truncate, error + +\verb|NBD_OPT_GO| supported + +FreeBSD port + +\verb|-D| options for debugging + +\item[1.8, Nov 2018] + +\url{https://www.redhat.com/archives/libguestfs/2018-November/msg00111.html} + +New plugins: sh, iso, floppy, partitioning + +Haiku port + +\item[1.10, Jan 2019] + +\url{https://www.redhat.com/archives/libguestfs/2019-January/msg00135.html} + +New plugins: full + +New filters: cache, delay, xz + +Multi-conn support + +\verb|NBD_OPT_INFO| + +Fuzz testing + +\item[1.12, Apr 2019] + +\url{https://www.redhat.com/archives/virt-tools-list/2019-April/msg00045.html} + +New plugins: ssh, linuxdisk, rust + +New filters: rate, readahead, noextents + +\verb|NBD_CMD_BLOCK_STATUS| + +\item[1.14, Aug 2019] + +\url{https://www.redhat.com/archives/libguestfs/2019-August/msg00375.html} + +New filters: stats, nocache, noparallel, cacheextents + +Many performance improvements + +\verb|NBD_CMD_CACHE| + +\end{description} \section{libnbd} +Project started last day of April 2019. + +\begin{description} + +\item[May 2019] + +Most \verb|NBD_CMD_| implemented, and working connection to nbdkit, +within first 10 days. Interoperating with qemu-nbd within 2 weeks. +TLS implemented and interoperating with qemu-nbd within 16 days. + +Generated C API, Python 3 bindings and \verb|nbdsh|, OCaml bindings, +hierarchical state machine. + +Export names + +Subprocess server (\verb|nbd_connect_command|) + +Structured replies + +\verb|NBD_CMD_BLOCK_STATUS| and \verb|base:allocation| + +Multiple commands ready to issue and in flight + +Callbacks + +``Internal'' multi-conn support added then removed + +Valgrinding + +Some API calls can be handled without taking the lock + +libnbd $0.1.2$ was released on May $30^{th}$ 2019. + +\item[June 2019] + +NBD URIs supported + +\verb|nbdsh -c| parameter + +\verb|MSG_MORE| optimization + +Better handling of multiple in-flight commands, a lot of +optimization, and finessing of the API. + +Python bindings custom exception \verb|nbd.Error| + +\item[July 2019] + +Port to FreeBSD + +Further work on callbacks + +Optimize command queue to be $O(1)$ instead of $O(n)$ + +Symbol versions + +libnbd $0.9.6$ was released on Jul $30^{th}$ 2019. + +\item[August 2019] + +More tests + +Debug output includes function names, parameters, return values + +Optional function parameters + +Man pages for every API + +Port to RHEL 7 + +First stable version $1.0$ was released on August $27^{th}$ 2019. + +\item[September 2019] + +Support for \verb|FAST_ZERO| + +New APIs for testing servers without Structured Replies and explicitly +setting handshake flags. New APIs for finding out if TLS was +negotiated, and what NBD protocol is being used. + +Reproducible build + +Two CVEs found + +Share \verb|nbd-protocol.h| file with nbdkit + +\item[October 2019] + +Systemd socket activation + +Fuzz testing (discovers one serious CVE) + +New API to connect directly to socket + +New \verb|nbdfuse| tool + +\end{description} + \end{document}