v2 was posted here: https://www.spinics.net/lists/fio/msg07831.html For v3 I changed from creating NBD messages "by hand" to using libnbd which is a C library that we wrote for accessing NBD servers. In this implementation I'm using the library synchronously, which is quite slow because it prevents us from having multiple commands in flight on the same TCP connection. libnbd also supports full asynchronous access. However I couldn't work out how the ->getevents and ->event callbacks are supposed to work in fio engines. If someone could take some time to explain to me how those are supposed to be used then I could get a much higher performance asynch engine working here. Rich.