Skip to content

v0.2.9

Choose a tag to compare

@github-actions github-actions released this 26 Aug 14:11
· 163 commits to main since this release
v0.2.9

Changelog

Added

  • librawstor's top-10 slowest-requests report now shows each entry's own submission/round-trip/callback latency breakdown, not just its total.
  • rawio_fsync()/_open()/_close()/_poll()/_poll_multishot()/_connect()/_accept()/_accept_multishot() gained _2-suffixed siblings with a single collapsed ssize_t result callback, ahead of the breaking rename in 0.3.0.
  • New async rawstor_target_spec()/_create()/_remove()/_open()/_id()/_location() and rawstor_location_list()/_create() API (<rawstor/target.h>, <rawstor/location.h>), plus async completion for rawstor_object_close(); the existing synchronous rawstor_object_*() API keeps working unchanged.
  • rawstor info gained -l/--logical, additionally reporting the sum of every object's own declared size alongside the location's actual physical usage.

Changed

  • librawio and librawstor's client-side (Session/Connection/Object) internals moved from callback-based async I/O to C++20 coroutines; no public API change.
  • Write-throttling (in-flight cap + backlog cap on writes headed to a file:// backing store) moved from rawstor-ost itself into librawstor's own file:// write path, so it now applies to any writer against a file:// location, not just rawstor-ost. rawstor-ost --write-throttle-limit/--write-backlog-capacity are gone; tune the same caps via the RAWSTOR_OPTS_WRITE_THROTTLE_LIMIT/RAWSTOR_OPTS_WRITE_BACKLOG_CAPACITY environment variables instead (same defaults, 128 and 256MiB) — rawstor-ost.service no longer warns on startup if the limit sits too close to --queue-size.

Fixed

  • rawstor_object_flush() could report success while a pwrite()/pwritev() issued just before it was still outstanding, so its data wasn't actually guaranteed durable yet; flush() now waits for every write issued before it to complete first.
  • rawstor_object_close() didn't actually flush pending writes before completing, despite already being documented to -- it now does, and also waits for any write still in flight rather than racing its connection out from under it.
  • rawstor-ost and the client's own OST session each registered a 32MiB recv_multishot buffer pool, undersized for rawstor-vhost's own healthy worst case (its default write-throttle-limit of 128 concurrent requests at a realistic virtio-blk transfer size); a client pipelining that many requests could overflow it, forcing a reconnect that immediately overflowed again under the same sustained load and exhausted the retry budget for real. Raised to 128MiB on both sides.
  • Telemetry's in-flight-requests count could go negative: an op whose session had already died before it was ever registered still ran through the same completion path as a normal one, decrementing a count it had never gotten to increment.

Assets

Source tarball

Debian/Ubuntu packages

RPM packages

Python package