• Release 3.0.10
    Some checks failed
    Test / build (push) Blocked by required conditions
    Test / make_test (push) Blocked by required conditions
    Test / npm_lint (push) Blocked by required conditions
    Test / test_add_osd (push) Blocked by required conditions
    Test / test_cas (push) Blocked by required conditions
    Test / test_change_pg_count (push) Blocked by required conditions
    Test / test_change_pg_count_ec (push) Blocked by required conditions
    Test / test_change_pg_count_online (push) Blocked by required conditions
    Test / test_change_pg_size (push) Blocked by required conditions
    Test / test_create_nomaxid (push) Blocked by required conditions
    Test / test_etcd_fail (push) Blocked by required conditions
    Test / test_etcd_fail_antietcd (push) Blocked by required conditions
    Test / test_interrupted_rebalance (push) Blocked by required conditions
    Test / test_interrupted_rebalance_imm (push) Blocked by required conditions
    Test / test_interrupted_rebalance_ec (push) Blocked by required conditions
    Test / test_interrupted_rebalance_ec_imm (push) Blocked by required conditions
    Test / test_old_interrupted_rebalance (push) Blocked by required conditions
    Test / test_old_interrupted_rebalance_imm (push) Blocked by required conditions
    Test / test_old_interrupted_rebalance_ec (push) Blocked by required conditions
    Test / test_old_interrupted_rebalance_ec_imm (push) Blocked by required conditions
    Test / test_create_halfhost (push) Blocked by required conditions
    Test / test_failure_domain (push) Blocked by required conditions
    Test / test_level_placement (push) Blocked by required conditions
    Test / test_snapshot (push) Blocked by required conditions
    Test / test_snapshot_ec (push) Blocked by required conditions
    Test / test_old_snapshot (push) Blocked by required conditions
    Test / test_old_snapshot_ec (push) Blocked by required conditions
    Test / test_minsize_1 (push) Blocked by required conditions
    Test / test_move_reappear (push) Blocked by required conditions
    Test / test_old_move_reappear (push) Blocked by required conditions
    Test / test_degraded (push) Blocked by required conditions
    Test / test_rm (push) Blocked by required conditions
    Test / test_rm_degraded (push) Blocked by required conditions
    Test / test_snapshot_chain (push) Blocked by required conditions
    Test / test_snapshot_chain_ec (push) Blocked by required conditions
    Test / test_old_snapshot_chain (push) Blocked by required conditions
    Test / test_old_snapshot_chain_ec (push) Blocked by required conditions
    Test / test_snapshot_down (push) Blocked by required conditions
    Test / test_snapshot_down_ec (push) Blocked by required conditions
    Test / test_old_snapshot_down (push) Blocked by required conditions
    Test / test_old_snapshot_down_ec (push) Blocked by required conditions
    Test / test_kv_stress (push) Blocked by required conditions
    Test / test_kv_stress_imm (push) Blocked by required conditions
    Test / test_splitbrain (push) Blocked by required conditions
    Test / test_rebalance_verify (push) Blocked by required conditions
    Test / test_rebalance_verify_imm (push) Blocked by required conditions
    Test / test_rebalance_verify_ec (push) Blocked by required conditions
    Test / test_rebalance_verify_ec_imm (push) Blocked by required conditions
    Test / test_old_rebalance_verify (push) Blocked by required conditions
    Test / test_old_rebalance_verify_imm (push) Blocked by required conditions
    Test / test_old_rebalance_verify_ec (push) Blocked by required conditions
    Test / test_old_rebalance_verify_ec_imm (push) Blocked by required conditions
    Test / test_dd (push) Blocked by required conditions
    Test / test_root_node (push) Blocked by required conditions
    Test / test_switch_primary (push) Blocked by required conditions
    Test / test_write (push) Blocked by required conditions
    Test / test_write_xor (push) Blocked by required conditions
    Test / test_write_iothreads (push) Blocked by required conditions
    Test / test_old_write (push) Blocked by required conditions
    Test / test_old_write_xor (push) Blocked by required conditions
    Test / test_write_old_iothreads (push) Blocked by required conditions
    Test / test_old_write_no_same (push) Blocked by required conditions
    Test / test_heal_pg_size_2 (push) Blocked by required conditions
    Test / test_heal_local_read (push) Blocked by required conditions
    Test / test_heal_ec (push) Blocked by required conditions
    Test / test_heal_antietcd (push) Blocked by required conditions
    Test / test_checksum (push) Blocked by required conditions
    Test / test_old_checksum (push) Blocked by required conditions
    Test / test_corrupt_all (push) Blocked by required conditions
    Test / test_old_corrupt_all (push) Blocked by required conditions
    Test / test_reweight_half (push) Blocked by required conditions
    Test / test_snapshot_pool2 (push) Blocked by required conditions
    Test / test_snapshot_read_bitmap (push) Blocked by required conditions
    Test / test_heal_csum_32k_dmj (push) Blocked by required conditions
    Test / test_heal_csum_32k_dj (push) Blocked by required conditions
    Test / test_heal_csum_32k (push) Blocked by required conditions
    Test / test_heal_csum_4k_dmj (push) Blocked by required conditions
    Test / test_heal_csum_4k_dj (push) Blocked by required conditions
    Test / test_heal_csum_4k (push) Blocked by required conditions
    Test / test_resize (push) Blocked by required conditions
    Test / test_resize_auto (push) Blocked by required conditions
    Test / test_old_resize (push) Blocked by required conditions
    Test / test_old_resize_auto (push) Blocked by required conditions
    Test / test_osd_tags (push) Blocked by required conditions
    Test / test_enospc (push) Blocked by required conditions
    Test / test_enospc_xor (push) Blocked by required conditions
    Test / test_enospc_imm (push) Blocked by required conditions
    Test / test_enospc_imm_xor (push) Blocked by required conditions
    Test / test_old_enospc (push) Blocked by required conditions
    Test / test_old_enospc_xor (push) Blocked by required conditions
    Test / test_old_enospc_imm (push) Blocked by required conditions
    Test / test_old_enospc_imm_xor (push) Blocked by required conditions
    Test / test_scrub (push) Blocked by required conditions
    Test / test_scrub_zero_osd_2 (push) Blocked by required conditions
    Test / test_scrub_xor (push) Blocked by required conditions
    Test / test_scrub_pg_size_3 (push) Blocked by required conditions
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Blocked by required conditions
    Test / test_scrub_ec (push) Blocked by required conditions
    Test / test_old_scrub (push) Blocked by required conditions
    Test / test_old_scrub_zero_osd_2 (push) Blocked by required conditions
    Test / test_old_scrub_xor (push) Blocked by required conditions
    Test / test_old_scrub_pg_size_3 (push) Blocked by required conditions
    Test / test_old_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Blocked by required conditions
    Test / test_old_scrub_ec (push) Blocked by required conditions
    Test / test_old_partwr_csum (push) Blocked by required conditions
    Test / test_heal_old_csum_32k_dmj (push) Blocked by required conditions
    Test / test_heal_old_csum_32k_dj (push) Blocked by required conditions
    Test / test_heal_old_csum_32k (push) Blocked by required conditions
    Test / test_heal_old_csum_4k_dmj (push) Blocked by required conditions
    Test / test_heal_old_csum_4k_dj (push) Blocked by required conditions
    Test / test_heal_old_csum_4k (push) Blocked by required conditions
    Test / test_nfs (push) Blocked by required conditions
    Test / test_nfs_unaligned_append (push) Blocked by required conditions
    Test / buildenv (push) Has been cancelled
    Stable

    vitalif released this 2026-04-27 13:53:48 +03:00 | 558 commits to master since this release

    Important bug fixes (new store):

    • Fix OSDs possibly refusing to start with "write metadata failed at offset xxx: Invalid argument"
      (fix buffer alignment during initial garbage collection)
    • Rollback change from 3.0.4 - on-disk garbage entries are not skipped on start again. This change
      doesn't have any impact normally, but OSDs originally running 3.0.0-3.0.2 and then upgraded
      to 3.0.9 may hit a bug where 3.0.9 refuses to start due to entries marked as garbage too
      early and flushed to disk in 3.0.0-3.0.2.

    Other changes:

    • Auto-select the only RDMA device/port if there is only one
    • Rollback one 3.0.9 change - there was no actual use-after-free :)
      (the problem was only relevant to an unstable development version)
    • Fix vitastor-nfs --trace option
    • Fix an unintended 1 second sleep in vitastor-cli rm-data
    • Fix inode statistics not being cleared for a deleted pool
    • Fix print to stdout in client
    Downloads
  • v3.0.9 dd5941b9a4

    Release 3.0.9 Stable

    vitalif released this 2026-04-04 18:38:40 +03:00 | 567 commits to master since this release

    • Fix broken garbage collection in the new store leading to very high memory usage
    • Make the new store do full garbage collection on OSD startup by default (can be turned off with a new gc_on_start parameter)
    • Make startup logging with the new store more informative, allow to log amount of garbage with log_level > 1
    • Fix clients reading from snapshots incorrectly on retries (for example when OSDs were restarted during read)
    • Fix a possible "send-after-free" in OSD which could probably also affect snapshot reads
    • Fix OSD crashing when handling a read_bitmap operation from a deleted object with the new store
    Downloads
  • v3.0.8 b30635b932

    Release 3.0.8
    All checks were successful
    Test / buildenv (push) Successful in 12s
    Test / build (push) Successful in 4m49s
    Test / npm_lint (push) Successful in 14s
    Test / test_cas (push) Successful in 13s
    Test / test_change_pg_count (push) Successful in 35s
    Test / test_change_pg_count_ec (push) Successful in 33s
    Test / test_add_osd (push) Successful in 57s
    Test / test_change_pg_size (push) Successful in 10s
    Test / test_create_nomaxid (push) Successful in 7s
    Test / make_test (push) Successful in 1m39s
    Test / test_etcd_fail (push) Successful in 46s
    Test / test_etcd_fail_antietcd (push) Successful in 46s
    Test / test_change_pg_count_online (push) Successful in 1m12s
    Test / test_interrupted_rebalance (push) Successful in 49s
    Test / test_interrupted_rebalance_imm (push) Successful in 49s
    Test / test_interrupted_rebalance_ec (push) Successful in 53s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 52s
    Test / test_old_interrupted_rebalance (push) Successful in 48s
    Test / test_create_halfhost (push) Successful in 13s
    Test / test_old_interrupted_rebalance_imm (push) Successful in 51s
    Test / test_old_interrupted_rebalance_ec (push) Successful in 50s
    Test / test_level_placement (push) Successful in 11s
    Test / test_failure_domain (push) Successful in 14s
    Test / test_old_interrupted_rebalance_ec_imm (push) Successful in 48s
    Test / test_snapshot (push) Successful in 15s
    Test / test_old_snapshot (push) Successful in 14s
    Test / test_snapshot_ec (push) Successful in 17s
    Test / test_old_snapshot_ec (push) Successful in 16s
    Test / test_minsize_1 (push) Successful in 16s
    Test / test_move_reappear (push) Successful in 19s
    Test / test_old_move_reappear (push) Successful in 20s
    Test / test_rm (push) Successful in 11s
    Test / test_degraded (push) Successful in 25s
    Test / test_snapshot_chain (push) Successful in 29s
    Test / test_old_snapshot_chain (push) Successful in 26s
    Test / test_snapshot_chain_ec (push) Successful in 36s
    Test / test_snapshot_down (push) Successful in 12s
    Test / test_rm_degraded (push) Successful in 50s
    Test / test_snapshot_down_ec (push) Successful in 13s
    Test / test_old_snapshot_down (push) Successful in 20s
    Test / test_old_snapshot_down_ec (push) Successful in 20s
    Test / test_old_snapshot_chain_ec (push) Successful in 46s
    Test / test_splitbrain (push) Successful in 15s
    Test / test_kv_stress (push) Successful in 41s
    Test / test_kv_stress_imm (push) Successful in 41s
    Test / test_rebalance_verify (push) Successful in 1m39s
    Test / test_rebalance_verify_imm (push) Successful in 1m44s
    Test / test_rebalance_verify_ec (push) Successful in 1m54s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m51s
    Test / test_old_rebalance_verify (push) Successful in 1m45s
    Test / test_old_rebalance_verify_imm (push) Successful in 1m39s
    Test / test_dd (push) Successful in 14s
    Test / test_root_node (push) Successful in 11s
    Test / test_old_rebalance_verify_ec (push) Successful in 1m56s
    Test / test_switch_primary (push) Successful in 33s
    Test / test_write (push) Successful in 37s
    Test / test_old_rebalance_verify_ec_imm (push) Successful in 1m56s
    Test / test_write_xor (push) Successful in 38s
    Test / test_write_iothreads (push) Successful in 38s
    Test / test_old_write (push) Successful in 36s
    Test / test_old_write_xor (push) Successful in 36s
    Test / test_old_write_no_same (push) Successful in 11s
    Test / test_write_old_iothreads (push) Successful in 38s
    Test / test_heal_pg_size_2 (push) Successful in 2m20s
    Test / test_heal_local_read (push) Successful in 2m20s
    Test / test_heal_ec (push) Successful in 2m21s
    Test / test_checksum (push) Successful in 11s
    Test / test_old_checksum (push) Successful in 12s
    Test / test_corrupt_all (push) Successful in 13s
    Test / test_old_corrupt_all (push) Successful in 12s
    Test / test_heal_antietcd (push) Successful in 2m19s
    Test / test_reweight_half (push) Successful in 11s
    Test / test_snapshot_pool2 (push) Successful in 16s
    Test / test_snapshot_read_bitmap (push) Successful in 12s
    Test / test_heal_csum_32k_dj (push) Successful in 2m18s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m23s
    Test / test_heal_csum_32k (push) Successful in 2m20s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m20s
    Test / test_resize_auto (push) Successful in 11s
    Test / test_resize (push) Successful in 16s
    Test / test_old_resize_auto (push) Successful in 14s
    Test / test_old_resize (push) Successful in 26s
    Test / test_osd_tags (push) Successful in 13s
    Test / test_enospc (push) Successful in 13s
    Test / test_enospc_xor (push) Successful in 17s
    Test / test_enospc_imm (push) Successful in 14s
    Test / test_old_enospc (push) Successful in 13s
    Test / test_enospc_imm_xor (push) Successful in 19s
    Test / test_old_enospc_imm (push) Successful in 14s
    Test / test_old_enospc_xor (push) Successful in 17s
    Test / test_old_enospc_imm_xor (push) Successful in 14s
    Test / test_scrub (push) Successful in 16s
    Test / test_heal_csum_4k_dj (push) Successful in 2m23s
    Test / test_scrub_zero_osd_2 (push) Successful in 18s
    Test / test_scrub_xor (push) Successful in 20s
    Test / test_heal_csum_4k (push) Successful in 2m32s
    Test / test_scrub_pg_size_3 (push) Successful in 18s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 19s
    Test / test_scrub_ec (push) Successful in 18s
    Test / test_old_scrub (push) Successful in 15s
    Test / test_old_scrub_zero_osd_2 (push) Successful in 19s
    Test / test_old_scrub_xor (push) Successful in 17s
    Test / test_old_scrub_pg_size_3 (push) Successful in 17s
    Test / test_old_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 19s
    Test / test_old_partwr_csum (push) Successful in 13s
    Test / test_old_scrub_ec (push) Successful in 19s
    Test / test_heal_old_csum_32k_dmj (push) Successful in 2m18s
    Test / test_heal_old_csum_32k_dj (push) Successful in 2m20s
    Test / test_heal_old_csum_32k (push) Successful in 2m22s
    Test / test_heal_old_csum_4k_dmj (push) Successful in 2m19s
    Test / test_nfs (push) Successful in 14s
    Test / test_nfs_unaligned_append (push) Successful in 13s
    Test / test_heal_old_csum_4k_dj (push) Successful in 2m20s
    Test / test_heal_old_csum_4k (push) Successful in 2m18s
    Stable

    vitalif released this 2026-03-30 02:09:02 +03:00 | 578 commits to master since this release

    • Surrogate increment-only peer IDs are now used instead of file descriptor numbers,
      and client cleanup sequence is reworked in another attempt to fix a possible PG hang
      in 'peering' states. The history of this bug is still unclear and it still hasn't been
      reproduced in tests, but several users have reported it since 3.0.4 (only with enabled RDMA).
    • Fix a minor bug where an OSD could skip reporting misplaced PG state when moving
      an object in non-immediate_commit mode.
    • Add Ubuntu 26.04 (Resolute Raccoon) support and patches for qemu 10.2 and libvirt 12.0
    Downloads
  • v3.0.6 538620b400

    Release 3.0.6
    All checks were successful
    Test / buildenv (push) Successful in 13s
    Test / build (push) Successful in 4m54s
    Test / npm_lint (push) Successful in 12s
    Test / test_cas (push) Successful in 12s
    Test / test_change_pg_count_ec (push) Successful in 34s
    Test / test_change_pg_count (push) Successful in 38s
    Test / test_add_osd (push) Successful in 54s
    Test / test_change_pg_size (push) Successful in 8s
    Test / test_create_nomaxid (push) Successful in 8s
    Test / make_test (push) Successful in 1m25s
    Test / test_etcd_fail (push) Successful in 41s
    Test / test_etcd_fail_antietcd (push) Successful in 42s
    Test / test_change_pg_count_online (push) Successful in 1m10s
    Test / test_interrupted_rebalance (push) Successful in 47s
    Test / test_interrupted_rebalance_imm (push) Successful in 45s
    Test / test_interrupted_rebalance_ec (push) Successful in 46s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 46s
    Test / test_old_interrupted_rebalance (push) Successful in 47s
    Test / test_create_halfhost (push) Successful in 5s
    Test / test_failure_domain (push) Successful in 10s
    Test / test_old_interrupted_rebalance_imm (push) Successful in 47s
    Test / test_old_interrupted_rebalance_ec (push) Successful in 46s
    Test / test_level_placement (push) Successful in 10s
    Test / test_snapshot (push) Successful in 13s
    Test / test_old_interrupted_rebalance_ec_imm (push) Successful in 46s
    Test / test_snapshot_ec (push) Successful in 15s
    Test / test_old_snapshot (push) Successful in 13s
    Test / test_old_snapshot_ec (push) Successful in 15s
    Test / test_minsize_1 (push) Successful in 13s
    Test / test_move_reappear (push) Successful in 17s
    Test / test_old_move_reappear (push) Successful in 17s
    Test / test_rm (push) Successful in 9s
    Test / test_degraded (push) Successful in 23s
    Test / test_snapshot_chain (push) Successful in 34s
    Test / test_old_snapshot_chain (push) Successful in 30s
    Test / test_snapshot_chain_ec (push) Successful in 40s
    Test / test_rm_degraded (push) Successful in 49s
    Test / test_snapshot_down (push) Successful in 14s
    Test / test_snapshot_down_ec (push) Successful in 14s
    Test / test_old_snapshot_down (push) Successful in 11s
    Test / test_old_snapshot_down_ec (push) Successful in 13s
    Test / test_old_snapshot_chain_ec (push) Successful in 35s
    Test / test_splitbrain (push) Successful in 13s
    Test / test_kv_stress (push) Successful in 37s
    Test / test_kv_stress_imm (push) Successful in 38s
    Test / test_rebalance_verify (push) Successful in 1m49s
    Test / test_rebalance_verify_imm (push) Successful in 1m53s
    Test / test_rebalance_verify_ec (push) Successful in 2m6s
    Test / test_rebalance_verify_ec_imm (push) Successful in 2m6s
    Test / test_old_rebalance_verify (push) Successful in 1m55s
    Test / test_dd (push) Successful in 12s
    Test / test_old_rebalance_verify_imm (push) Successful in 1m54s
    Test / test_root_node (push) Successful in 10s
    Test / test_old_rebalance_verify_ec (push) Successful in 2m0s
    Test / test_old_rebalance_verify_ec_imm (push) Successful in 1m59s
    Test / test_switch_primary (push) Successful in 34s
    Test / test_write (push) Successful in 33s
    Test / test_write_iothreads (push) Successful in 34s
    Test / test_write_xor (push) Successful in 36s
    Test / test_old_write (push) Successful in 33s
    Test / test_old_write_xor (push) Successful in 37s
    Test / test_old_write_no_same (push) Successful in 9s
    Test / test_write_old_iothreads (push) Successful in 38s
    Test / test_heal_pg_size_2 (push) Successful in 2m15s
    Test / test_heal_local_read (push) Successful in 2m19s
    Test / test_heal_ec (push) Successful in 2m18s
    Test / test_checksum (push) Successful in 13s
    Test / test_old_checksum (push) Successful in 12s
    Test / test_corrupt_all (push) Successful in 14s
    Test / test_old_corrupt_all (push) Successful in 14s
    Test / test_reweight_half (push) Successful in 11s
    Test / test_heal_antietcd (push) Successful in 2m18s
    Test / test_snapshot_pool2 (push) Successful in 14s
    Test / test_snapshot_read_bitmap (push) Successful in 12s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m18s
    Test / test_heal_csum_32k_dj (push) Successful in 2m18s
    Test / test_heal_csum_32k (push) Successful in 2m19s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m19s
    Test / test_resize_auto (push) Successful in 10s
    Test / test_resize (push) Successful in 16s
    Test / test_old_resize_auto (push) Successful in 8s
    Test / test_old_resize (push) Successful in 17s
    Test / test_osd_tags (push) Successful in 8s
    Test / test_enospc (push) Successful in 11s
    Test / test_enospc_xor (push) Successful in 14s
    Test / test_enospc_imm (push) Successful in 12s
    Test / test_enospc_imm_xor (push) Successful in 15s
    Test / test_old_enospc (push) Successful in 11s
    Test / test_old_enospc_imm (push) Successful in 10s
    Test / test_old_enospc_xor (push) Successful in 14s
    Test / test_old_enospc_imm_xor (push) Successful in 14s
    Test / test_scrub (push) Successful in 14s
    Test / test_scrub_zero_osd_2 (push) Successful in 16s
    Test / test_scrub_xor (push) Successful in 18s
    Test / test_heal_csum_4k_dj (push) Successful in 2m16s
    Test / test_scrub_pg_size_3 (push) Successful in 16s
    Test / test_heal_csum_4k (push) Successful in 2m14s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 18s
    Test / test_old_scrub (push) Successful in 14s
    Test / test_scrub_ec (push) Successful in 18s
    Test / test_old_scrub_zero_osd_2 (push) Successful in 16s
    Test / test_old_scrub_xor (push) Successful in 17s
    Test / test_old_scrub_pg_size_3 (push) Successful in 17s
    Test / test_old_partwr_csum (push) Successful in 10s
    Test / test_old_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 19s
    Test / test_old_scrub_ec (push) Successful in 18s
    Test / test_heal_old_csum_32k_dmj (push) Successful in 2m17s
    Test / test_heal_old_csum_32k_dj (push) Successful in 2m18s
    Test / test_heal_old_csum_4k_dmj (push) Successful in 2m19s
    Test / test_heal_old_csum_32k (push) Successful in 2m26s
    Test / test_nfs (push) Successful in 13s
    Test / test_nfs_unaligned_append (push) Successful in 12s
    Test / test_heal_old_csum_4k (push) Successful in 2m16s
    Test / test_heal_old_csum_4k_dj (push) Successful in 2m19s
    Stable

    vitalif released this 2026-03-22 22:49:51 +03:00 | 589 commits to master since this release

    • Fix one more bug in old store checksums O_o - checksum verification wasn't
      working correctly on reads quickly after small initial offsetted writes
      (when a BIG_WRITE was read from the journal).
    • Fix clients possibly not destroyed after being switched to RDMA. Not 100%
      verified, but in theory it could rarely lead to PGs hanging in peering/stopping
      states with RDMA enabled.
    • Use vitastor-cli in the Cinder driver for modifications instead of direct etcd
      interaction.
    • Fix mon_https_ca parsing.
    • Fix Docker install.sh, add instructions for Podman.
    Downloads
  • v3.0.5 cb639a130d

    Release 3.0.5
    All checks were successful
    Test / buildenv (push) Successful in 10s
    Test / build (push) Successful in 5m11s
    Test / npm_lint (push) Successful in 12s
    Test / test_cas (push) Successful in 7s
    Test / test_change_pg_count (push) Successful in 30s
    Test / test_add_osd (push) Successful in 1m1s
    Test / test_change_pg_size (push) Successful in 7s
    Test / test_change_pg_count_ec (push) Successful in 35s
    Test / test_create_nomaxid (push) Successful in 13s
    Test / make_test (push) Successful in 1m27s
    Test / test_change_pg_count_online (push) Successful in 1m7s
    Test / test_etcd_fail (push) Successful in 42s
    Test / test_etcd_fail_antietcd (push) Successful in 42s
    Test / test_interrupted_rebalance (push) Successful in 48s
    Test / test_interrupted_rebalance_imm (push) Successful in 46s
    Test / test_interrupted_rebalance_ec (push) Successful in 47s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 46s
    Test / test_old_interrupted_rebalance (push) Successful in 48s
    Test / test_create_halfhost (push) Successful in 6s
    Test / test_failure_domain (push) Successful in 11s
    Test / test_level_placement (push) Successful in 7s
    Test / test_old_interrupted_rebalance_imm (push) Successful in 47s
    Test / test_old_interrupted_rebalance_ec (push) Successful in 48s
    Test / test_snapshot (push) Successful in 12s
    Test / test_old_interrupted_rebalance_ec_imm (push) Successful in 48s
    Test / test_snapshot_ec (push) Successful in 14s
    Test / test_old_snapshot (push) Successful in 12s
    Test / test_old_snapshot_ec (push) Successful in 11s
    Test / test_minsize_1 (push) Successful in 12s
    Test / test_move_reappear (push) Successful in 16s
    Test / test_rm (push) Successful in 7s
    Test / test_old_move_reappear (push) Successful in 16s
    Test / test_degraded (push) Successful in 24s
    Test / test_snapshot_chain (push) Successful in 27s
    Test / test_snapshot_chain_ec (push) Successful in 33s
    Test / test_old_snapshot_chain (push) Successful in 26s
    Test / test_snapshot_down (push) Successful in 12s
    Test / test_snapshot_down_ec (push) Successful in 12s
    Test / test_rm_degraded (push) Successful in 56s
    Test / test_old_snapshot_chain_ec (push) Successful in 34s
    Test / test_old_snapshot_down (push) Successful in 11s
    Test / test_old_snapshot_down_ec (push) Successful in 10s
    Test / test_splitbrain (push) Successful in 11s
    Test / test_kv_stress (push) Successful in 37s
    Test / test_kv_stress_imm (push) Successful in 39s
    Test / test_rebalance_verify (push) Successful in 1m27s
    Test / test_rebalance_verify_imm (push) Successful in 1m27s
    Test / test_rebalance_verify_ec (push) Successful in 1m35s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m36s
    Test / test_old_rebalance_verify (push) Successful in 1m28s
    Test / test_old_rebalance_verify_imm (push) Successful in 1m29s
    Test / test_dd (push) Successful in 11s
    Test / test_root_node (push) Successful in 8s
    Test / test_old_rebalance_verify_ec (push) Successful in 1m35s
    Test / test_switch_primary (push) Successful in 31s
    Test / test_old_rebalance_verify_ec_imm (push) Successful in 1m34s
    Test / test_write (push) Successful in 33s
    Test / test_write_xor (push) Successful in 37s
    Test / test_write_iothreads (push) Successful in 37s
    Test / test_old_write (push) Successful in 34s
    Test / test_old_write_xor (push) Successful in 34s
    Test / test_old_write_no_same (push) Successful in 8s
    Test / test_write_old_iothreads (push) Successful in 37s
    Test / test_heal_pg_size_2 (push) Successful in 2m15s
    Test / test_heal_ec (push) Successful in 2m17s
    Test / test_heal_local_read (push) Successful in 2m21s
    Test / test_checksum (push) Successful in 12s
    Test / test_old_checksum (push) Successful in 10s
    Test / test_corrupt_all (push) Successful in 11s
    Test / test_old_corrupt_all (push) Successful in 12s
    Test / test_reweight_half (push) Successful in 8s
    Test / test_heal_antietcd (push) Successful in 2m17s
    Test / test_snapshot_pool2 (push) Successful in 14s
    Test / test_snapshot_read_bitmap (push) Successful in 12s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m17s
    Test / test_heal_csum_32k_dj (push) Successful in 2m18s
    Test / test_heal_csum_32k (push) Successful in 2m32s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m30s
    Test / test_resize_auto (push) Successful in 9s
    Test / test_resize (push) Successful in 14s
    Test / test_old_resize_auto (push) Successful in 8s
    Test / test_old_resize (push) Successful in 18s
    Test / test_osd_tags (push) Successful in 8s
    Test / test_enospc (push) Successful in 11s
    Test / test_enospc_xor (push) Successful in 11s
    Test / test_enospc_imm (push) Successful in 11s
    Test / test_enospc_imm_xor (push) Successful in 15s
    Test / test_old_enospc (push) Successful in 11s
    Test / test_old_enospc_xor (push) Successful in 15s
    Test / test_old_enospc_imm (push) Successful in 11s
    Test / test_old_enospc_imm_xor (push) Successful in 13s
    Test / test_scrub (push) Successful in 15s
    Test / test_scrub_zero_osd_2 (push) Successful in 17s
    Test / test_scrub_xor (push) Successful in 18s
    Test / test_heal_csum_4k_dj (push) Successful in 2m19s
    Test / test_scrub_pg_size_3 (push) Successful in 16s
    Test / test_heal_csum_4k (push) Successful in 2m18s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 17s
    Test / test_scrub_ec (push) Successful in 16s
    Test / test_old_scrub (push) Successful in 13s
    Test / test_old_scrub_zero_osd_2 (push) Successful in 15s
    Test / test_old_scrub_xor (push) Successful in 15s
    Test / test_old_scrub_pg_size_3 (push) Successful in 14s
    Test / test_old_partwr_csum (push) Successful in 10s
    Test / test_old_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 18s
    Test / test_old_scrub_ec (push) Successful in 17s
    Test / test_heal_old_csum_32k_dmj (push) Successful in 2m24s
    Test / test_heal_old_csum_32k_dj (push) Successful in 2m20s
    Test / test_heal_old_csum_32k (push) Successful in 2m21s
    Test / test_heal_old_csum_4k_dmj (push) Successful in 2m21s
    Test / test_nfs (push) Successful in 11s
    Test / test_nfs_unaligned_append (push) Successful in 11s
    Test / test_heal_old_csum_4k_dj (push) Successful in 2m17s
    Test / test_heal_old_csum_4k (push) Successful in 2m19s
    Stable

    vitalif released this 2026-03-07 13:54:44 +03:00 | 596 commits to master since this release

    A single urgent fix for the new store: metadata was written incorrectly when
    filled metadata area exceeded 4 GB due to a simple & stupid 32-bit integer overflow.
    This was leading to OSDs corrupting metadata and being unable to start on the next
    run.

    The bug affected only the new store (meta_format=3) and OSDs with metadata area size
    larger than 4 GB. You can check your OSD metadata area size by checking data_offset
    in vitastor-disk read-sb /dev/vitastor/osdXX-data for single-disk OSDs or
    blockdev --getsize64 /dev/vitastor/osdXX-meta for hybrid OSDs.

    If you're affected, it's highly recommended to:

    • Install updated packages without restarting OSDs
    • Restart OSDs one by one
    • If a restart of an OSD triggers "has_degraded" rebalance - wait for it to finish
      before restarting another OSD
    • If an OSD fails to start with "double-claimed" errors in the log - purge and recreate it,
      and again wait for "has_degraded" rebalance to finish before proceeding to the next OSD
    Downloads
  • v3.0.4 09df74cfac

    Release 3.0.4 Stable

    vitalif released this 2026-03-03 20:12:31 +03:00 | 601 commits to master since this release

    New store bug fixes:

    • Fix very slow OSD startup (hours) possible in unlucky cases
    • Fix incorrect garbage entry validation on start in some cases, preventing OSD startup
    • Fix small_write_throttling not functioning and either hanging or crashing OSDs
    • Fix "different fact_versions returned from subops" error possible with EC in some cases
    • Add a recovery option for the new store: skip_corrupted_meta_entries
    • Disable intent writes (even 4k) for hybrid OSDs by default for better write buffering

    Other changes:

    • Fix chmod/chown of a new empty VitastorFS root directory not working
    • Fix vitastor-dd treating all < 32k reads as always empty
    • Fix vitastor-disk always setting 32k csum_block_size for HDDs when checksums are enabled
    • Fix OSD missing PG state updates and PGs hanging in "starting" in rare cases
    • Fix a possible OSD crash with "map::at" message in rare cases when stopping a client
    • Fix a possible OSD crash on start when RDMA is available but fails to initialize
    • Fix removal and overwriting of totaled objects (objects with all corrupted copies)
    • Do not allow data_block_size < 8*bitmap_granularity
    • Remove RDMA ODP (On-Demand Paging) support
    • Update antietcd to 1.2.4
    • Update Docker build to Debian Trixie
    • Add packages for AlmaLinux 10
    Downloads
  • v3.0.3 facaa2cc6a

    Release 3.0.3 Stable

    vitalif released this 2026-02-08 01:39:57 +03:00 | 628 commits to master since this release

    • Fix csum_block_size > 0 unusable with atomic writes in the new store
      (almost all atomic write requests generated invalid checksums with csum_block_size > 0)
    • Fix monitor sometimes randomly failing to optimize PGs with the "problem is
      infeasible or unbounded" message due to not waiting to read full stdout of lp_solve
    • Remove reshard_abort optimisation to fix chunked resharding introduced in 3.0.2 possibly
      corrupting in-memory OSD state when handling multiple rapid PG count change requests
    • Fix removed inodes not disappearing from OSD statistics in the new store, leading to
      bloating of the statistics with old inodes
    • Increase test coverage for the new store and fix several minor bugs:
      • Enabling/disabling of used_for_app was recalculating inode space statistics incorrectly
      • Fix object metadata validation on OSD startup rejecting some correct sequences of entries,
        possibly leading to OSD being unable to start
      • Fix PG activation with EC failing in rare cases with EBUSY when requesting to commit an
        already committed write
      • Fix a theoretically possible metadata writeback issue on ENOSPC during commit
    • Fix monitor failing to optimize PGs in presence of a host with name convertible to
      js Number (like 04e278988710) :D
    • Fix vitastor-cli dd sometimes (rarely) truncating the image when writing to stdout
    • Fix a theoretically possible client connection object leak when io_uring is full
    • Fix a leak of RDMA-CM connection objects
    • Fix crashes with data_block_size < 32KB (useless setup, but anyway) (#113)
    Downloads
  • v3.0.2 d75334ddf0

    Release 3.0.2
    All checks were successful
    Test / buildenv (push) Successful in 13s
    Test / build (push) Successful in 4m48s
    Test / npm_lint (push) Successful in 13s
    Test / test_cas (push) Successful in 13s
    Test / test_change_pg_count (push) Successful in 33s
    Test / test_add_osd (push) Successful in 1m10s
    Test / make_test (push) Successful in 1m14s
    Test / test_change_pg_count_ec (push) Successful in 34s
    Test / test_change_pg_size (push) Successful in 9s
    Test / test_create_nomaxid (push) Successful in 11s
    Test / test_change_pg_count_online (push) Successful in 1m9s
    Test / test_etcd_fail (push) Successful in 45s
    Test / test_etcd_fail_antietcd (push) Successful in 47s
    Test / test_interrupted_rebalance (push) Successful in 57s
    Test / test_interrupted_rebalance_imm (push) Successful in 49s
    Test / test_interrupted_rebalance_ec (push) Successful in 48s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 50s
    Test / test_old_interrupted_rebalance (push) Successful in 48s
    Test / test_old_interrupted_rebalance_imm (push) Successful in 48s
    Test / test_old_interrupted_rebalance_ec (push) Successful in 48s
    Test / test_create_halfhost (push) Successful in 11s
    Test / test_old_interrupted_rebalance_ec_imm (push) Successful in 50s
    Test / test_level_placement (push) Successful in 12s
    Test / test_failure_domain (push) Successful in 15s
    Test / test_snapshot (push) Successful in 17s
    Test / test_snapshot_ec (push) Successful in 18s
    Test / test_old_snapshot (push) Successful in 17s
    Test / test_old_snapshot_ec (push) Successful in 18s
    Test / test_minsize_1 (push) Successful in 15s
    Test / test_move_reappear (push) Successful in 19s
    Test / test_rm (push) Successful in 11s
    Test / test_old_move_reappear (push) Successful in 18s
    Test / test_degraded (push) Successful in 26s
    Test / test_snapshot_chain (push) Successful in 30s
    Test / test_snapshot_chain_ec (push) Successful in 35s
    Test / test_snapshot_down (push) Successful in 19s
    Test / test_rm_degraded (push) Successful in 1m4s
    Test / test_old_snapshot_chain (push) Successful in 39s
    Test / test_snapshot_down_ec (push) Successful in 15s
    Test / test_old_snapshot_chain_ec (push) Successful in 45s
    Test / test_old_snapshot_down (push) Successful in 16s
    Test / test_old_snapshot_down_ec (push) Successful in 17s
    Test / test_splitbrain (push) Successful in 17s
    Test / test_kv_stress (push) Successful in 41s
    Test / test_kv_stress_imm (push) Successful in 41s
    Test / test_rebalance_verify (push) Successful in 1m41s
    Test / test_rebalance_verify_imm (push) Successful in 1m38s
    Test / test_rebalance_verify_ec (push) Successful in 1m45s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m45s
    Test / test_old_rebalance_verify (push) Successful in 1m48s
    Test / test_old_rebalance_verify_imm (push) Successful in 1m47s
    Test / test_dd (push) Successful in 17s
    Test / test_root_node (push) Successful in 11s
    Test / test_old_rebalance_verify_ec (push) Successful in 1m55s
    Test / test_old_rebalance_verify_ec_imm (push) Successful in 1m54s
    Test / test_write (push) Successful in 33s
    Test / test_switch_primary (push) Successful in 35s
    Test / test_write_xor (push) Successful in 37s
    Test / test_write_iothreads (push) Successful in 38s
    Test / test_old_write_no_same (push) Successful in 10s
    Test / test_old_write (push) Successful in 41s
    Test / test_old_write_xor (push) Successful in 41s
    Test / test_write_old_iothreads (push) Successful in 43s
    Test / test_heal_pg_size_2 (push) Successful in 2m27s
    Test / test_heal_local_read (push) Successful in 2m22s
    Test / test_heal_ec (push) Successful in 2m23s
    Test / test_reweight_half (push) Successful in 13s
    Test / test_heal_antietcd (push) Successful in 2m25s
    Test / test_snapshot_read_bitmap (push) Successful in 15s
    Test / test_snapshot_pool2 (push) Successful in 18s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m18s
    Test / test_heal_csum_32k_dj (push) Successful in 2m20s
    Test / test_heal_csum_32k (push) Successful in 2m16s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m16s
    Test / test_resize_auto (push) Successful in 11s
    Test / test_resize (push) Successful in 17s
    Test / test_old_resize_auto (push) Successful in 11s
    Test / test_old_resize (push) Successful in 21s
    Test / test_osd_tags (push) Successful in 11s
    Test / test_enospc (push) Successful in 14s
    Test / test_enospc_xor (push) Successful in 14s
    Test / test_enospc_imm (push) Successful in 12s
    Test / test_old_enospc (push) Successful in 14s
    Test / test_enospc_imm_xor (push) Successful in 16s
    Test / test_old_enospc_imm (push) Successful in 12s
    Test / test_old_enospc_xor (push) Successful in 14s
    Test / test_old_enospc_imm_xor (push) Successful in 15s
    Test / test_heal_csum_4k (push) Successful in 2m13s
    Test / test_scrub (push) Successful in 16s
    Test / test_heal_csum_4k_dj (push) Successful in 2m18s
    Test / test_scrub_zero_osd_2 (push) Successful in 17s
    Test / test_scrub_xor (push) Successful in 17s
    Test / test_scrub_pg_size_3 (push) Successful in 17s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 20s
    Test / test_old_scrub (push) Successful in 17s
    Test / test_scrub_ec (push) Successful in 20s
    Test / test_old_scrub_zero_osd_2 (push) Successful in 17s
    Test / test_old_scrub_xor (push) Successful in 19s
    Test / test_old_scrub_pg_size_3 (push) Successful in 17s
    Test / test_old_partwr_csum (push) Successful in 12s
    Test / test_old_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 18s
    Test / test_old_scrub_ec (push) Successful in 18s
    Test / test_heal_old_csum_32k_dmj (push) Successful in 2m18s
    Test / test_heal_old_csum_32k_dj (push) Successful in 2m20s
    Test / test_heal_old_csum_4k_dmj (push) Successful in 2m20s
    Test / test_heal_old_csum_32k (push) Successful in 2m23s
    Test / test_nfs (push) Successful in 13s
    Test / test_nfs_unaligned_append (push) Successful in 15s
    Test / test_heal_old_csum_4k_dj (push) Successful in 2m13s
    Test / test_heal_old_csum_4k (push) Successful in 2m17s
    Stable

    vitalif released this 2026-01-25 16:08:02 +03:00 | 655 commits to master since this release

    • Antietcd is now officially safe to use: the release includes a fixed version of antietcd
      which passes Jepsen transaction serializability tests.
    • Fix a huge checksum bug in the old store: incorrect checksums for small initial writes.
      The bug affected writes of exactly csum_block_size (4k by default) into new (unallocated)
      objects and generated invalid checksums in the store for the written 4k block. Moreover,
      generation of these invalid checksums was very slow because it was calculating CRC32
      for 4 GB of zeroes. If the block wasn't then overwritten as a part of a larger write
      request it became unreadable even though the stored data was correct. The bug affected
      all versions since 1.0.0, or since 2.3.0 because vitastor-disk didn't allow to enable
      checksums prior to 2.3.0 because of another bug. O:-)
    • Prevent OSD disconnections due to long blocking of event-loop caused by PG resharding
      (moving objects between old and new PGs in memory) when changing pool PG count or
      just on restart of an OSD with a large database (for example, with a filled 8 TB SSD).
      The issue should now be fixed because OSD now performs resharding in chunks with pauses
      between chunks.
    • Prevent pools stuck in paused state on an aborted PG count change.
    • Fix a possible OSD crash with "division by zero" when trying to handle an operation
      before pool PG count is applied to the in-memory store.
    Downloads
  • v3.0.1 fe83825ead

    Release 3.0.1
    All checks were successful
    Test / buildenv (push) Successful in 11s
    Test / build (push) Successful in 4m57s
    Test / npm_lint (push) Successful in 12s
    Test / test_cas (push) Successful in 12s
    Test / test_change_pg_count_ec (push) Successful in 32s
    Test / test_change_pg_count (push) Successful in 34s
    Test / test_add_osd (push) Successful in 58s
    Test / test_change_pg_size (push) Successful in 10s
    Test / make_test (push) Successful in 1m14s
    Test / test_create_nomaxid (push) Successful in 14s
    Test / test_etcd_fail_antietcd (push) Successful in 39s
    Test / test_etcd_fail (push) Successful in 42s
    Test / test_interrupted_rebalance (push) Successful in 46s
    Test / test_change_pg_count_online (push) Successful in 1m11s
    Test / test_interrupted_rebalance_imm (push) Successful in 46s
    Test / test_interrupted_rebalance_ec (push) Successful in 46s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 46s
    Test / test_old_interrupted_rebalance (push) Successful in 48s
    Test / test_old_interrupted_rebalance_imm (push) Successful in 45s
    Test / test_create_halfhost (push) Successful in 6s
    Test / test_old_interrupted_rebalance_ec (push) Successful in 48s
    Test / test_level_placement (push) Successful in 8s
    Test / test_failure_domain (push) Successful in 12s
    Test / test_old_interrupted_rebalance_ec_imm (push) Successful in 47s
    Test / test_snapshot (push) Successful in 12s
    Test / test_old_snapshot (push) Successful in 13s
    Test / test_snapshot_ec (push) Successful in 15s
    Test / test_old_snapshot_ec (push) Successful in 13s
    Test / test_minsize_1 (push) Successful in 13s
    Test / test_rm (push) Successful in 8s
    Test / test_move_reappear (push) Successful in 17s
    Test / test_old_move_reappear (push) Successful in 18s
    Test / test_degraded (push) Successful in 23s
    Test / test_snapshot_chain (push) Successful in 29s
    Test / test_old_snapshot_chain (push) Successful in 26s
    Test / test_snapshot_chain_ec (push) Successful in 36s
    Test / test_rm_degraded (push) Successful in 47s
    Test / test_snapshot_down (push) Successful in 13s
    Test / test_snapshot_down_ec (push) Successful in 12s
    Test / test_old_snapshot_down (push) Successful in 13s
    Test / test_old_snapshot_down_ec (push) Successful in 12s
    Test / test_old_snapshot_chain_ec (push) Successful in 36s
    Test / test_splitbrain (push) Successful in 13s
    Test / test_kv_stress (push) Successful in 38s
    Test / test_kv_stress_imm (push) Successful in 38s
    Test / test_rebalance_verify (push) Successful in 1m28s
    Test / test_rebalance_verify_imm (push) Successful in 1m28s
    Test / test_rebalance_verify_ec (push) Successful in 1m38s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m43s
    Test / test_old_rebalance_verify (push) Successful in 1m38s
    Test / test_old_rebalance_verify_imm (push) Successful in 1m38s
    Test / test_dd (push) Successful in 11s
    Test / test_root_node (push) Successful in 10s
    Test / test_old_rebalance_verify_ec (push) Successful in 1m46s
    Test / test_write (push) Successful in 31s
    Test / test_old_rebalance_verify_ec_imm (push) Successful in 1m46s
    Test / test_switch_primary (push) Successful in 34s
    Test / test_write_xor (push) Successful in 37s
    Test / test_old_write (push) Successful in 33s
    Test / test_write_iothreads (push) Successful in 36s
    Test / test_old_write_xor (push) Successful in 35s
    Test / test_write_old_iothreads (push) Successful in 34s
    Test / test_old_write_no_same (push) Successful in 11s
    Test / test_heal_pg_size_2 (push) Successful in 2m17s
    Test / test_heal_ec (push) Successful in 2m18s
    Test / test_heal_local_read (push) Successful in 2m21s
    Test / test_heal_antietcd (push) Successful in 2m18s
    Test / test_reweight_half (push) Successful in 12s
    Test / test_snapshot_read_bitmap (push) Successful in 12s
    Test / test_snapshot_pool2 (push) Successful in 17s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m17s
    Test / test_heal_csum_32k_dj (push) Successful in 2m18s
    Test / test_heal_csum_32k (push) Successful in 2m18s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m19s
    Test / test_resize_auto (push) Successful in 11s
    Test / test_resize (push) Successful in 15s
    Test / test_old_resize_auto (push) Successful in 8s
    Test / test_old_resize (push) Successful in 20s
    Test / test_osd_tags (push) Successful in 10s
    Test / test_enospc (push) Successful in 13s
    Test / test_enospc_xor (push) Successful in 14s
    Test / test_enospc_imm (push) Successful in 11s
    Test / test_enospc_imm_xor (push) Successful in 14s
    Test / test_old_enospc (push) Successful in 10s
    Test / test_old_enospc_xor (push) Successful in 13s
    Test / test_old_enospc_imm (push) Successful in 10s
    Test / test_heal_csum_4k_dj (push) Successful in 2m16s
    Test / test_old_enospc_imm_xor (push) Successful in 15s
    Test / test_scrub (push) Successful in 15s
    Test / test_heal_csum_4k (push) Successful in 2m21s
    Test / test_scrub_zero_osd_2 (push) Successful in 16s
    Test / test_scrub_pg_size_3 (push) Successful in 16s
    Test / test_scrub_xor (push) Successful in 19s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 20s
    Test / test_scrub_ec (push) Successful in 17s
    Test / test_old_scrub (push) Successful in 14s
    Test / test_old_scrub_zero_osd_2 (push) Successful in 16s
    Test / test_old_scrub_xor (push) Successful in 17s
    Test / test_old_scrub_pg_size_3 (push) Successful in 17s
    Test / test_old_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 18s
    Test / test_old_scrub_ec (push) Successful in 16s
    Test / test_heal_old_csum_32k_dmj (push) Successful in 2m20s
    Test / test_heal_old_csum_32k_dj (push) Successful in 2m15s
    Test / test_heal_old_csum_32k (push) Successful in 2m19s
    Test / test_heal_old_csum_4k_dmj (push) Successful in 2m20s
    Test / test_nfs (push) Successful in 13s
    Test / test_nfs_unaligned_append (push) Successful in 12s
    Test / test_heal_old_csum_4k_dj (push) Successful in 2m18s
    Test / test_heal_old_csum_4k (push) Successful in 2m15s
    Stable

    vitalif released this 2025-12-22 02:17:43 +03:00 | 668 commits to master since this release

    Important fixes:

    • Disable RWF_ATOMIC by default because Linux incorrectly requires all atomic
      writes to be power-of-2-sized and length-aligned. Details: use_atomic_flag
    • Fix cross-pool snapshots not working at all - always reading old data after taking the snapshot
    • Fix level_placement (broken in 2.2.0)
    • Fix CAS write return values in the client library (broken in 2.4.4), also breaking unaligned writes in VitastorFS
    • Fix VitastorFS possibly losing some of intersecting parallel unaligned writes
    • Prevent possible reads of the old data during unfinished intent writes in the new store
    • Tests added for all of above problems to prevent future regressions

    Other fixes:

    • Allow to specify OSD tags and weights during prepare
    • Only clear the first block instead of whole OSD metadata and journal areas during vitastor-disk
      prepare - OSD anyway clears them on the first run
    • Fix vitastor-cli dd non-seekable detection and error status
    • Do not stop OSD on zero-copy tcp short send errors - these aren't a bug, but just caused
      by TCP client disconnections
    • Fix modify-osd not working after deleting the OSD configuration key from etcd
    • Fix regular antietcd websocket disconnections in OSD due to lack of WS_PONG responses to WS_PING
    • Reduce the number of allocated RDMA memory regions
    • Allow routed RoCE
    Downloads
  • v3.0.0 a67c415e0f

    Release 3.0.0
    Some checks failed
    Test / buildenv (push) Successful in 11s
    Test / build (push) Successful in 4m31s
    Test / npm_lint (push) Successful in 11s
    Test / test_cas (push) Successful in 9s
    Test / test_change_pg_count (push) Successful in 32s
    Test / test_change_pg_count_ec (push) Successful in 31s
    Test / test_add_osd (push) Successful in 56s
    Test / test_change_pg_size (push) Successful in 13s
    Test / test_create_nomaxid (push) Successful in 12s
    Test / make_test (push) Successful in 1m16s
    Test / test_etcd_fail (push) Successful in 40s
    Test / test_etcd_fail_antietcd (push) Successful in 39s
    Test / test_interrupted_rebalance (push) Successful in 48s
    Test / test_change_pg_count_online (push) Successful in 1m9s
    Test / test_interrupted_rebalance_imm (push) Successful in 46s
    Test / test_interrupted_rebalance_ec (push) Successful in 47s
    Test / test_interrupted_rebalance_ec_imm (push) Successful in 47s
    Test / test_old_interrupted_rebalance (push) Successful in 46s
    Test / test_create_halfhost (push) Successful in 5s
    Test / test_old_interrupted_rebalance_imm (push) Successful in 45s
    Test / test_old_interrupted_rebalance_ec (push) Successful in 46s
    Test / test_failure_domain (push) Successful in 12s
    Test / test_snapshot (push) Successful in 13s
    Test / test_snapshot_ec (push) Successful in 13s
    Test / test_old_snapshot (push) Successful in 11s
    Test / test_old_snapshot_ec (push) Successful in 12s
    Test / test_minsize_1 (push) Successful in 12s
    Test / test_old_interrupted_rebalance_ec_imm (push) Successful in 47s
    Test / test_move_reappear (push) Successful in 16s
    Test / test_old_move_reappear (push) Successful in 16s
    Test / test_rm (push) Successful in 8s
    Test / test_degraded (push) Successful in 22s
    Test / test_snapshot_chain (push) Successful in 29s
    Test / test_snapshot_chain_ec (push) Successful in 35s
    Test / test_rm_degraded (push) Successful in 47s
    Test / test_snapshot_down (push) Successful in 11s
    Test / test_snapshot_down_ec (push) Successful in 12s
    Test / test_old_snapshot_chain (push) Successful in 27s
    Test / test_old_snapshot_down (push) Successful in 12s
    Test / test_old_snapshot_down_ec (push) Successful in 12s
    Test / test_old_snapshot_chain_ec (push) Successful in 36s
    Test / test_splitbrain (push) Successful in 12s
    Test / test_kv_stress (push) Successful in 40s
    Test / test_kv_stress_imm (push) Successful in 39s
    Test / test_rebalance_verify (push) Successful in 1m31s
    Test / test_rebalance_verify_imm (push) Successful in 1m32s
    Test / test_rebalance_verify_ec (push) Successful in 1m40s
    Test / test_rebalance_verify_ec_imm (push) Successful in 1m39s
    Test / test_dd (push) Successful in 13s
    Test / test_root_node (push) Successful in 9s
    Test / test_old_rebalance_verify_imm (push) Successful in 1m30s
    Test / test_old_rebalance_verify_ec (push) Successful in 1m37s
    Test / test_switch_primary (push) Successful in 32s
    Test / test_write (push) Successful in 32s
    Test / test_old_rebalance_verify_ec_imm (push) Successful in 1m34s
    Test / test_write_xor (push) Successful in 34s
    Test / test_old_write (push) Successful in 31s
    Test / test_write_iothreads (push) Successful in 37s
    Test / test_old_write_no_same (push) Successful in 9s
    Test / test_old_write_xor (push) Successful in 35s
    Test / test_write_old_iothreads (push) Successful in 37s
    Test / test_heal_pg_size_2 (push) Successful in 2m15s
    Test / test_heal_local_read (push) Successful in 2m16s
    Test / test_reweight_half (push) Successful in 11s
    Test / test_heal_ec (push) Successful in 2m18s
    Test / test_snapshot_read_bitmap (push) Successful in 10s
    Test / test_snapshot_pool2 (push) Successful in 14s
    Test / test_heal_antietcd (push) Successful in 2m16s
    Test / test_heal_csum_32k_dmj (push) Successful in 2m17s
    Test / test_heal_csum_32k_dj (push) Successful in 2m18s
    Test / test_heal_csum_32k (push) Successful in 2m17s
    Test / test_heal_csum_4k_dmj (push) Successful in 2m20s
    Test / test_resize (push) Successful in 14s
    Test / test_resize_auto (push) Successful in 11s
    Test / test_old_resize_auto (push) Successful in 9s
    Test / test_old_resize (push) Successful in 18s
    Test / test_osd_tags (push) Successful in 8s
    Test / test_enospc (push) Successful in 12s
    Test / test_enospc_xor (push) Successful in 15s
    Test / test_enospc_imm (push) Successful in 12s
    Test / test_enospc_imm_xor (push) Successful in 13s
    Test / test_old_enospc (push) Successful in 10s
    Test / test_old_enospc_xor (push) Successful in 13s
    Test / test_old_enospc_imm (push) Successful in 12s
    Test / test_old_enospc_imm_xor (push) Successful in 13s
    Test / test_scrub (push) Successful in 16s
    Test / test_scrub_zero_osd_2 (push) Successful in 15s
    Test / test_heal_csum_4k_dj (push) Successful in 2m19s
    Test / test_heal_csum_4k (push) Successful in 2m18s
    Test / test_scrub_xor (push) Successful in 16s
    Test / test_scrub_pg_size_3 (push) Successful in 14s
    Test / test_scrub_ec (push) Successful in 15s
    Test / test_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 17s
    Test / test_old_scrub (push) Successful in 15s
    Test / test_old_scrub_zero_osd_2 (push) Successful in 14s
    Test / test_old_scrub_pg_size_3 (push) Successful in 15s
    Test / test_old_scrub_xor (push) Successful in 18s
    Test / test_old_scrub_ec (push) Successful in 16s
    Test / test_old_scrub_pg_size_6_pg_minsize_4_osd_count_6_ec (push) Successful in 19s
    Test / test_heal_old_csum_32k_dmj (push) Successful in 2m17s
    Test / test_heal_old_csum_32k_dj (push) Successful in 2m18s
    Test / test_heal_old_csum_32k (push) Successful in 2m20s
    Test / test_heal_old_csum_4k_dmj (push) Successful in 2m19s
    Test / test_nfs (push) Successful in 12s
    Test / test_heal_old_csum_4k_dj (push) Successful in 2m17s
    Test / test_heal_old_csum_4k (push) Successful in 2m19s
    Test / test_old_rebalance_verify (push) Failing after 1s
    Stable

    vitalif released this 2025-12-06 02:12:00 +03:00 | 690 commits to master since this release

    A single new feature: the new log-structured metadata store implementation, described
    in the presentation from Moscow Highload'2025 (check it out here).

    It's now the default store for new OSDs. The support for the old store is also left in place,
    you can still choose it for new OSDs with vitastor-disk prepare --meta_format 2.

    OSDs from previous versions with the old store format will also continue to operate just like before.

    Downloads