Downloads¶
Packages and source tarballs of every release, built by CI and published on GitHub Releases.
v0.2.12¶
Released 2026-10-03. Release page
Assets¶
Source tarball¶
Debian/Ubuntu packages¶
- librawstor-dbgsym_0.2.12_amd64.ddeb
- librawstor-dev_0.2.12_amd64.deb
- librawstor_0.2.12_amd64.deb
- python3.12-rawstor-dbgsym_0.2.12_amd64.ddeb
- python3.12-rawstor_0.2.12_amd64.deb
- python3.14-rawstor-dbgsym_0.2.12_amd64.ddeb
- python3.14-rawstor_0.2.12_amd64.deb
- rawstor-ost-dbgsym_0.2.12_amd64.ddeb
- rawstor-ost_0.2.12_amd64.deb
- rawstor-vduse-dbgsym_0.2.12_amd64.ddeb
- rawstor-vduse_0.2.12_amd64.deb
- rawstor-vhost-dbgsym_0.2.12_amd64.ddeb
- rawstor-vhost_0.2.12_amd64.deb
RPM packages¶
- librawstor-0.2.12-0.x86_64.rpm
- librawstor-debuginfo-0.2.12-0.x86_64.rpm
- librawstor-debugsource-0.2.12-0.x86_64.rpm
- librawstor-devel-0.2.12-0.x86_64.rpm
- python3.12-rawstor-0.2.12-0.x86_64.rpm
- python3.12-rawstor-debuginfo-0.2.12-0.x86_64.rpm
- python3.12-rawstor-debugsource-0.2.12-0.x86_64.rpm
- python3.9-rawstor-0.2.12-0.x86_64.rpm
- python3.9-rawstor-debuginfo-0.2.12-0.x86_64.rpm
- python3.9-rawstor-debugsource-0.2.12-0.x86_64.rpm
- rawstor-ost-0.2.12-0.x86_64.rpm
- rawstor-ost-debuginfo-0.2.12-0.x86_64.rpm
- rawstor-vduse-0.2.12-0.x86_64.rpm
- rawstor-vduse-debuginfo-0.2.12-0.x86_64.rpm
- rawstor-vhost-0.2.12-0.x86_64.rpm
- rawstor-vhost-debuginfo-0.2.12-0.x86_64.rpm
Python package¶
Changelog¶
Fixed¶
rawstor infoagainst afile://location reportedtotalas the whole filesystem's capacity (statvfs'sf_blocks * f_frsize) rather than space accounted for by rawstor, soavailable(derived astotal - used) could include space taken by unrelated data on the same filesystem.totalis nowused(rawstor's own files) plus the filesystem's actually-free space (f_bavail * f_frsize), matching thelvm:///zfs://backends'total = used + availablesemantics.- The
rawstor-vdusedeb/rpm packages (present since 0.2.10) were never actually built or published: CI's packaging jobs never copied its install scriptlets into place, so its.deb/.rpmwere silently absent from every release despiterawstor-vdusebeing a real, working binary.
v0.2.11¶
Released 2026-10-03. Release page
Assets¶
Source tarball¶
Debian/Ubuntu packages¶
- librawstor-dbgsym_0.2.11_amd64.ddeb
- librawstor-dev_0.2.11_amd64.deb
- librawstor_0.2.11_amd64.deb
- python3.12-rawstor-dbgsym_0.2.11_amd64.ddeb
- python3.12-rawstor_0.2.11_amd64.deb
- python3.14-rawstor-dbgsym_0.2.11_amd64.ddeb
- python3.14-rawstor_0.2.11_amd64.deb
- rawstor-ost-dbgsym_0.2.11_amd64.ddeb
- rawstor-ost_0.2.11_amd64.deb
- rawstor-vhost-dbgsym_0.2.11_amd64.ddeb
- rawstor-vhost_0.2.11_amd64.deb
RPM packages¶
- librawstor-0.2.11-0.x86_64.rpm
- librawstor-debuginfo-0.2.11-0.x86_64.rpm
- librawstor-debugsource-0.2.11-0.x86_64.rpm
- librawstor-devel-0.2.11-0.x86_64.rpm
- python3.12-rawstor-0.2.11-0.x86_64.rpm
- python3.12-rawstor-debuginfo-0.2.11-0.x86_64.rpm
- python3.12-rawstor-debugsource-0.2.11-0.x86_64.rpm
- python3.9-rawstor-0.2.11-0.x86_64.rpm
- python3.9-rawstor-debuginfo-0.2.11-0.x86_64.rpm
- python3.9-rawstor-debugsource-0.2.11-0.x86_64.rpm
- rawstor-ost-0.2.11-0.x86_64.rpm
- rawstor-ost-debuginfo-0.2.11-0.x86_64.rpm
- rawstor-vduse-0.2.11-0.x86_64.rpm
- rawstor-vduse-debuginfo-0.2.11-0.x86_64.rpm
- rawstor-vhost-0.2.11-0.x86_64.rpm
- rawstor-vhost-debuginfo-0.2.11-0.x86_64.rpm
Python package¶
Changelog¶
Added¶
- Vendored nlohmann/json (single-header, MIT) for parsing command output in the new storage backends below.
- New
lvm://storage backend: objects are LVM Logical Volumes, provisioned vialvcreate/lvremove. A new object is fully zeroed before it becomes visible (LVM itself only zeroes the first 4KiB of a new LV), so it never exposes another object's leftover data; any staging LV left behind by a process that crashed mid-create is swept and removed on the nextcreate()against that VG. - New
zfs://storage backend: objects are ZFS zvols, provisioned viazfs create/zfs destroy. - Consistent startup/connection INFO logging across
rawstor-ost,rawstor-vhost,rawstor-vhost-qemuandrawstor-vduse: version at startup, waiting for a connection, client connected, client disconnected. rawio::Queue::timeout_multishot()(and itsrawio_timeout_multishot()C API counterpart): the multishot counterpart oftimeout(), firing once every given number of microseconds until canceled instead of resolving once.
Changed¶
- The packaged
rawstor-ost.servicesystemd unit's backing store is now configurable via aLOCATIONenvironment variable (defaultfile:///var/lib/rawstor, unchanged) instead of being hardcoded inExecStart— set it in/etc/rawstor-ost.conf, same as the unit's other overridable settings.
Fixed¶
rawstor create/list/remove/show/infoagainst a multi-backendLOCATION/TARGET(comma-separated URIs) could intermittently fail with "No buffer space available": the CLI's internal I/O queue was sized for a single backend at a time.- The same "No buffer space available" (
ENOBUFS) failure could also surface under a small enough--queue-size(io_uring builds only): the submission ring is now flushed and retried instead of failing outright when it's full of not-yet-submitted entries. Object::flush()could report success (and durability) before a write it was still waiting on had actually completed, if a later write happened to finish first -- affectsost://, where responses are matched by request id and can legitimately arrive out of order.- Building with GCC 15.2.0 could hit an internal compiler error in
Connection::_with_retry()'s coroutine code.
v0.2.10¶
Released 2026-10-03. Release page
Assets¶
Source tarball¶
Debian/Ubuntu packages¶
- librawstor-dbgsym_0.2.10_amd64.ddeb
- librawstor-dev_0.2.10_amd64.deb
- librawstor_0.2.10_amd64.deb
- python3.12-rawstor-dbgsym_0.2.10_amd64.ddeb
- python3.12-rawstor_0.2.10_amd64.deb
- python3.14-rawstor-dbgsym_0.2.10_amd64.ddeb
- python3.14-rawstor_0.2.10_amd64.deb
- rawstor-ost-dbgsym_0.2.10_amd64.ddeb
- rawstor-ost_0.2.10_amd64.deb
- rawstor-vhost-dbgsym_0.2.10_amd64.ddeb
- rawstor-vhost_0.2.10_amd64.deb
RPM packages¶
- librawstor-0.2.10-0.x86_64.rpm
- librawstor-debuginfo-0.2.10-0.x86_64.rpm
- librawstor-debugsource-0.2.10-0.x86_64.rpm
- librawstor-devel-0.2.10-0.x86_64.rpm
- python3.12-rawstor-0.2.10-0.x86_64.rpm
- python3.12-rawstor-debuginfo-0.2.10-0.x86_64.rpm
- python3.12-rawstor-debugsource-0.2.10-0.x86_64.rpm
- python3.9-rawstor-0.2.10-0.x86_64.rpm
- python3.9-rawstor-debuginfo-0.2.10-0.x86_64.rpm
- python3.9-rawstor-debugsource-0.2.10-0.x86_64.rpm
- rawstor-ost-0.2.10-0.x86_64.rpm
- rawstor-ost-debuginfo-0.2.10-0.x86_64.rpm
- rawstor-vduse-0.2.10-0.x86_64.rpm
- rawstor-vduse-debuginfo-0.2.10-0.x86_64.rpm
- rawstor-vhost-0.2.10-0.x86_64.rpm
- rawstor-vhost-debuginfo-0.2.10-0.x86_64.rpm
Python package¶
Changelog¶
Added¶
rawio::Queue::timeout()(and itsrawio_timeout()C API counterpart): a standalone async timer op, co_await-able and cancellable exactly like every otherrawio::Queueoperation, resolving successfully once a given number of microseconds have elapsed.-w/--workers Nforrawstor-ost: runsNworker threads (default12), each with its own I/O queue and client connections, all accepting on the same listening socket.--num-queues Nforrawstor-vhost(default4): advertisesNvirtqueues overVIRTIO_BLK_F_MQ, each serviced by its own thread and its own connection toTARGET, so I/O on different queues now makes progress in parallel instead of funneling through one shared reactor.- Discard and write-zeroes support end to end: new
rawstor_object_discard()/rawstor_object_write_zeroes()client API, aWRITE_ZEROESOST wire command (DISCARDalready existed but was unimplemented),file://'s backend now actually punches holes/zeroes ranges viafallocate(), andrawstor-vhost/rawstor-vhost-qemuadvertiseVIRTIO_BLK_F_DISCARD/VIRTIO_BLK_F_WRITE_ZEROESto the guest. rawstor-vduse: a new virtio-blk backend using the VDUSE (vDPA Device in Userspace) kernel protocol, alongsiderawstor-vhost. Implements the protocol natively (no vendored third-party library, same approach asvhost/), in its own deb/rpm package with arawstor-vduse@.servicesystemd template unit and udev rule. AdvertisesVIRTIO_BLK_F_MQ/VIRTIO_BLK_F_DISCARD/VIRTIO_BLK_F_WRITE_ZEROESand services_DISCARD/_WRITE_ZEROESrequests, and (--num-queues, default16) services that many virtqueues in parallel, each on its own thread and its own connection toTARGET. Linux-only. See the top-level README's "rawstor-vduse" section.Connection::_with_retry()now waits out an exponential backoff with jitter (tunable via the newRAWSTOR_OPTS_IO_RETRY_BACKOFF_BASE/_MAX/_JITTER) instead of retrying immediately, and reconnects before every retry regardless of what failed, bounded byRAWSTOR_OPTS_IO_ATTEMPTS-- skipped entirely for a rejection retrying can never fix, e.g.ENOENT. See README.md's "Environment Variables" section.
Fixed¶
file://'sSession::create()onlyftruncate()d a new object to its full size, leaving it sparse; a write into never-touched territory then depends on the filesystem's own delayed allocation, which underdata=orderedjournaling must land before the next journal commit -- on an ext4 mount with an unusually longcommit=interval, many concurrent writes into a still-sparse object could each back up behind that interval, measured as tens of seconds ofrawstor-vhost/OST session round-trip latency under sustained load.create()now preallocates the object's real blocks up front (fallocate()on Linux,fcntl(F_PREALLOCATE)on macOS), removing that dependency entirely.rawstor-ostnow reliably stops on the firstSIGINT/SIGTERMinstead of occasionally needing a second signal to unblock its I/O wait.
v0.2.9¶
Released 2026-08-26. Release page
Assets¶
Source tarball¶
Debian/Ubuntu packages¶
- librawstor-dbgsym_0.2.9_amd64.ddeb
- librawstor-dev_0.2.9_amd64.deb
- librawstor_0.2.9_amd64.deb
- python3.12-rawstor-dbgsym_0.2.9_amd64.ddeb
- python3.12-rawstor_0.2.9_amd64.deb
- python3.14-rawstor-dbgsym_0.2.9_amd64.ddeb
- python3.14-rawstor_0.2.9_amd64.deb
- rawstor-ost-dbgsym_0.2.9_amd64.ddeb
- rawstor-ost_0.2.9_amd64.deb
- rawstor-vhost-dbgsym_0.2.9_amd64.ddeb
- rawstor-vhost_0.2.9_amd64.deb
RPM packages¶
- librawstor-0.2.9-0.x86_64.rpm
- librawstor-debuginfo-0.2.9-0.x86_64.rpm
- librawstor-debugsource-0.2.9-0.x86_64.rpm
- librawstor-devel-0.2.9-0.x86_64.rpm
- python3.12-rawstor-0.2.9-0.x86_64.rpm
- python3.12-rawstor-debuginfo-0.2.9-0.x86_64.rpm
- python3.12-rawstor-debugsource-0.2.9-0.x86_64.rpm
- python3.9-rawstor-0.2.9-0.x86_64.rpm
- python3.9-rawstor-debuginfo-0.2.9-0.x86_64.rpm
- python3.9-rawstor-debugsource-0.2.9-0.x86_64.rpm
- rawstor-ost-0.2.9-0.x86_64.rpm
- rawstor-ost-debuginfo-0.2.9-0.x86_64.rpm
- rawstor-vhost-0.2.9-0.x86_64.rpm
- rawstor-vhost-debuginfo-0.2.9-0.x86_64.rpm
Python package¶
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 collapsedssize_tresult callback, ahead of the breaking rename in 0.3.0.- New async
rawstor_target_spec()/_create()/_remove()/_open()/_id()/_location()andrawstor_location_list()/_create()API (<rawstor/target.h>,<rawstor/location.h>), plus async completion forrawstor_object_close(); the existing synchronousrawstor_object_*()API keeps working unchanged. rawstor infogained-l/--logical, additionally reporting the sum of every object's own declared size alongside the location's actual physical usage.
Changed¶
librawioandlibrawstor'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 fromrawstor-ostitself intolibrawstor's ownfile://write path, so it now applies to any writer against afile://location, not justrawstor-ost.rawstor-ost --write-throttle-limit/--write-backlog-capacityare gone; tune the same caps via theRAWSTOR_OPTS_WRITE_THROTTLE_LIMIT/RAWSTOR_OPTS_WRITE_BACKLOG_CAPACITYenvironment variables instead (same defaults, 128 and 256MiB) —rawstor-ost.serviceno longer warns on startup if the limit sits too close to--queue-size.
Fixed¶
rawstor_object_flush()could report success while apwrite()/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-ostand the client's own OST session each registered a 32MiBrecv_multishotbuffer pool, undersized forrawstor-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.
v0.2.8¶
Released 2026-08-14. Release page
Assets¶
Source tarball¶
Debian/Ubuntu packages¶
- librawstor-dbgsym_0.2.8_amd64.ddeb
- librawstor-dev_0.2.8_amd64.deb
- librawstor_0.2.8_amd64.deb
- python3.12-rawstor-dbgsym_0.2.8_amd64.ddeb
- python3.12-rawstor_0.2.8_amd64.deb
- python3.14-rawstor-dbgsym_0.2.8_amd64.ddeb
- python3.14-rawstor_0.2.8_amd64.deb
- rawstor-ost-dbgsym_0.2.8_amd64.ddeb
- rawstor-ost_0.2.8_amd64.deb
- rawstor-vhost-dbgsym_0.2.8_amd64.ddeb
- rawstor-vhost_0.2.8_amd64.deb
RPM packages¶
- librawstor-0.2.8-0.x86_64.rpm
- librawstor-debuginfo-0.2.8-0.x86_64.rpm
- librawstor-debugsource-0.2.8-0.x86_64.rpm
- librawstor-devel-0.2.8-0.x86_64.rpm
- python3.12-rawstor-0.2.8-0.x86_64.rpm
- python3.12-rawstor-debuginfo-0.2.8-0.x86_64.rpm
- python3.12-rawstor-debugsource-0.2.8-0.x86_64.rpm
- python3.9-rawstor-0.2.8-0.x86_64.rpm
- python3.9-rawstor-debuginfo-0.2.8-0.x86_64.rpm
- python3.9-rawstor-debugsource-0.2.8-0.x86_64.rpm
- rawstor-ost-0.2.8-0.x86_64.rpm
- rawstor-ost-debuginfo-0.2.8-0.x86_64.rpm
- rawstor-vhost-0.2.8-0.x86_64.rpm
- rawstor-vhost-debuginfo-0.2.8-0.x86_64.rpm
Python package¶
Changelog¶
Changed¶
rawstor-ost --queue-size's default raised from 256 to 4096, now that per-session write concurrency is bounded (see Fixed below) and no longer needs a small ring to keep worst-case exposure in check.rawstor-ost.serviceexposes--queue-size/--write-throttle-limit/--write-backlog-capacityas theQUEUE_SIZE/WRITE_THROTTLE_LIMIT/WRITE_BACKLOG_CAPACITYenvironment variables, overridable in/etc/rawstor-ost.conflike the rest of its tuning knobs.
Fixed¶
rawstor-osthad no limit on how many WRITEs a session could have dispatched to storage at once; against a backing store much slower than the incoming write rate, that queue grew without bound instead of applying ordinary backpressure, eventually stalling the session (and, under sustained pressure, the whole process) for an effectively unbounded time. Now capped per session via the new--write-throttle-limit(default 128);rawstor-ostalso now warns on startup if it's set too close to--queue-sizeto leave any real headroom.- Even with
--write-throttle-limitin place, a session facing a backing store slower than its incoming write rate could still queue an unbounded number of already-received writes waiting for a dispatch slot, growing memory use without bound. Now capped in bytes via the new--write-backlog-capacity(default 256MiB); a write that would push the backlog over the cap is rejected withEBUSYinstead of queued.
v0.2.7¶
Released 2026-08-12. Release page
v0.2.6¶
Released 2026-08-10. Release page
v0.2.5¶
Released 2026-08-07. Release page
v0.2.4¶
Released 2026-08-05. Release page
v0.2.3¶
Released 2026-08-04. Release page
v0.2.2¶
Released 2026-08-03. Release page
v0.2.1¶
Released 2026-07-14. Release page
v0.2.0¶
Released 2026-07-03. Release page
v0.1.2¶
Released 2026-07-02. Release page
v0.1.1¶
Released 2026-05-25. Release page
v0.0.2¶
Released 2026-05-25. Release page
v0.1.0¶
Released 2025-12-29. Release page
v0.0.1¶
Released 2025-12-29. Release page
v0.0.0¶
Released 2025-10-26. Release page