xNBD Change Log


Table of Contents

0.3.0
Bugfixes
Improvements
0.2.0-rc2
Bugfixes
0.2.0-rc1
Bugfixes
Improvements
Deprecations
Changes relevant to packaging
0.1.0-pre-hg20-e75b93a47722
Bugfixes
Improvements
0.1.0-pre

0.3.0

Bugfixes

  • xnbd-server: Fix --readonly option for the proxy server. Reject write requests from clients, but may update the cache image file.
  • xnbd-server: Fix erroneous assertions caused by xnbd-bgctl (issues #6 and #8).

Improvements

  • xnbd-server: Add --max-queue-size and --max-buf-size parameters that limit memory usage of xnbd-server so that a slow disk and fast network no longer may force the host into swapping
  • xnbd-server: Fix version output by --version
  • xnbd-bgctl: Limit the number of asynchronous requests to avoid huge memory consumption of xnbd-server.
  • xnbd-bgctl: Improve the progress bar to be more accurate. Go forward according to the percentage of actually cached blocks.
  • xnbd-wrapper: Support passing custom --max-(buf|queue)-size to xnbd-server
  • xnbd-register: Add support for wrapper options max_buf_size and max_queue_size
  • xnbd-register: Fix warning on unknown wrapper option keys

0.2.0-rc2

Bugfixes

  • xnbd-register: Fix and improve --help usage output
  • xnbd-wrapper: Fix reporting of disk size 0 for non-empty, non-regular files in target mode (issue #7)

0.2.0-rc1

Bugfixes

  • Fix false positives in network error detection
  • xnbd-server: By default, use syslog in daemon mode for logging, not /tmp/xnbd.log. This fixes the vulnerability to symlink attacks on /tmp/xnbd.log (CVE-2013-0265).
  • xnbd-server: No longer let network errors stop entire proxy server (issue #3)
  • xnbd-server: Make --shutdown work for wrapped servers (issue #5)
  • xnbd-(bgctl|server): Use SIGUSR2 (rather than SIGHUP) for internal (issue #2)
  • xnbd-bgctl: Detect wrapped servers for --cache-all2 (related to issue #4)
  • xnbd-wrapper: Make sure no zombie servers are left behind
  • xnbd-wrapper: Fix race conditions in disk registration
  • xnbd-wrapper: Fix unspecified behavior from calling pthread_detach() twice
  • xnbd-wrapper(-ctl): Add support for filenames containing spaces or newlines
  • xnbd-client: Actually apply retry count from --retry|-r COUNT
  • xnbd-wrapper-ctl: Fix leading whitespace in echoed server output
  • xnbd-wrapper: On missing disk file, error out rather than sending bogus disk size
  • xnbd-wrapper: Fix locating xnbd-server binary
  • xnbd-wrapper: Fix unintended termination when the process is stopped and continued
  • Fix typos in program output and man pages

Improvements

  • xnbd-bgctl: Improve the speed of --cache-all
  • xnbd-bgctl: Add optional progress bar to --cache-all operation
  • xnbd-bgctl: Guard --shutdown/--switch by --force, i.e. prevent premature switching
  • xnbd-bgctl: Make --shutdown/--switch wait for the server to finish
  • xnbd-bgctl: Show caching percentage in --query output communication
  • xnbd-bgctl: Allow reconnecting a proxy to wrapped servers
  • xnbd-client: Add support for symlinks to NBD devices
  • xnbd-client: Mode --check now returns code 2 for a valid, unused NBD device
  • xnbd-register: New tool, integrated from Debian
  • xnbd-register: Exit gracefully if config file missing
  • xnbd-register: Add --config option
  • xnbd-register: Add support for export names
  • xnbd-register: Stop clients before wrapper (since they might be using the wrapper)
  • xnbd-server: Fix broken startup with GLib 2.32 or later
  • xnbd-server: Keep existing bitmap state by default, add option --clear-bitmap
  • xnbd-server: Prevent re-use of bitmap with different disk size
  • xnbd-server: Add support for wrapped remote servers to proxy mode (through option --target-exportname)
  • xnbd-server: Stop writing to failed client connections
  • xnbd-server: Document --connected-fd in man page
  • xnbd-(server|wrapper): Add --syslog parameter
  • xnbd-wrapper: Resolve hard limit to 32 registered disks
  • xnbd-wrapper: Keep disk indices constant during runtime
  • xnbd-wrapper: Document --cow and --readonly in man page
  • xnbd-wrapper: Add --xnbd-bgctl parameter
  • xnbd-wrapper(-ctl): Change default control socket path from /tmp/xnbd_wrapper.ctl to /var/run/xnbd-wrapper.ctl as a measure of precaution
  • xnbd-wrapper(-ctl): Distinct export and file name, support removal by export name or file name, too
  • xnbd-wrapper(-ctl): Add support for proxy mode images through commands --add-proxy, --bgctl-query, --bgctl-cache-all, --bgctl-switch, and --bgctl-reconnect
  • xnbd-wrapper-ctl: Forward error return code from xnbd-wrapper
  • xnbd-wrapper-ctl: Improve reporting on socket opening errors
  • Improve man pages, help output, error reporting

Deprecations

  • xnbd-wrapper: Deprecate --port in favor of --lport
  • xnbd-wrapper: Deprecate --xnbd-binary in favor of --xnbd-server
  • xnbd-wrapper(-ctl): Deprecate --add in favor of --add-target
  • xnbd-wrapper(-ctl): Deprecate --remove in favor of --remove-by-file and --remove-by-exportname
  • xnbd-server: Deprecate --shutdown in favor of --switch
  • xnbd-register: Deprecate config key "server" in favor of "wrapper"

Changes relevant to packaging

  • Build system migrated to GNU autotools (autoconf, automake, libtool)
  • Man pages now shipped pre-built as Troff and HTML, too; no more docbook-to-man
  • Man page compression now left to downstream
  • xnbd-wrapper-ctl now depends on Python 2.6 and argparse

0.1.0-pre-hg20-e75b93a47722

While technically this never was an upstream release, it is the state that people running xNBD on Debian GNU/Linux are familiar with. So we decided to make an artificial cut.

Bugfixes

  • xnbd-server: Fix migration of disks larger than 4GB on a 32bit operating system
  • xnbd-(bgctl|server): Handle memory mapping failure properly
  • Various build system fixes

Improvements

  • xnbd-server: Add --inetd option
  • xnbd-server: Increase proxy read queue size from 10 requests to 32 requests
  • xnbd-wrapper: Add --daemonize, --logpath, --cow, and --readonly
  • xnbd-wrapper: Improve --help output
  • xnbd-wrapper(-ctl): Add --shutdown option
  • xnbd-wrapper-ctl: Rename -d (for delete) to -r (for remove)
  • xnbd-wrapper-ctl: Add long option versions: --list, --add, --remove, --socket
  • Add man pages xnbd-wrapper, xnbd-wrapper-ctl
  • Improve and extend existing man pages

0.1.0-pre

Starting point of the change log.