Vitastor 3.0.16 released
2026-07-19
Quite a bit of fixes, but mostly small. :-)
Most interesting fix affect pools without immediate_commit (for desktop SSDs): fixed corner cases in the commit (sync) operation and CAS write operation (used, for example, in VitastorFS).
Other notable changes: “double-claim” bug is fixed in the new store, and changes are made to reduce etcd load during active PG state switching.
You can read the details below.
New store
- Finally fix the source of ‘double-claim’ errors worked around in 3.0.12 - delete entry removal on restart possibly happening before the removal of the masked big_write
- Fix padded checksum (csum_block_size > 4k) verification during some partial reads
- Fix truncated unstable object list responses in limited listing requests (sent by scrub)
- OSD should now stop with an error on data fsync error during batched big_writes, like on other disk errors
- Add missing disable_meta_fsync check for enabling immediate_commit
Client
- Fix CAS writes skipping their built-in fsync (for pools without immediate_commit)
- Validate show_config, sec_list and sec_read_bmp reply sizes
- Fix show_config reply parsed as a null terminated string without taking length into account
Old store
- Skip too small (corrupted) journal entries
OSD
- Forbid pools with block_size*pg_size larger than UINT32_MAX
- Do not forcibly report OSD statistics after reporting PG states (should reduce etcd load)
- Prevent repeated reporting of PG epoch bump on multiple writes possibly leading to spurious PG state reporting errors, extra PG repeers and increased etcd load
- Fix handling of PGs with pg_size between 32 and 64 (more than 64 is forbidden)
- Add safety checks for ENOENT (missing objects) during read/write operations
- Abort primary writes with a retriable error code when the PG becomes inactive during write instead of trying to finish it cleanly
- Fix sync operation correctness and add tests to verify it:
- Drop dirty PG connections when repeering PG before waiting for actual peering, like in stop
- Complete sync with an error if PGs dirtied by the client become inactive
- Skip inactive PGs during sync (double-check). Without this fix and write error handling changes inflight operation counter could be incremented on offline PGs and lead to use-after-free
- Drop client’s connection instead of returning SYNC error
- Several scrub fixes:
- Check bitmaps when grouping identical EC chunks in scrub
- Fix scrub possibly trying too many combinations in EC pools with large k+n
- Fix reads from degraded objects marked as inconsistent after scrub not taking actual object state into account and possibly returning zeros
- Fix incorrect array indexing in scrub (possibly affecting scrub results)
Links
- Git: https://git.yourcmc.ru/vitalif/vitastor/releases/tag/v3.0.16
- Installation instructions: https://vitastor.io/en/docs/installation/packages.html