Vitaliy Filippov
2e4d5ae5bb
Return new_lsn from erase and rollback
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
db458fc999
Allow to cancel compaction for unfinished writes
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
574520be0f
Fix space allocation & compaction on start
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
715e7df51f
Use inflight_lsn iterators
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
ea5ee0c46f
Free space on overwrites correctly
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
47bec8af47
Use fsynced_lsn in flusher
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
ec3bf4ae6c
Correctly track fsynced_lsn when fsyncs are enabled
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
cb45b1865d
Extract multilist_alloc_t
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
f656545f4a
Check for overlaps during blockstore loading
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
0241a61412
Fix multilist_alloc_t bug, move verify and print to lib
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
0bc81f5320
Fix pending_ops
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
84961f6d0a
Fix repeating cur_oid
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
cb085f9c8f
Mark overwritten heap_writes as immediately compacted
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
a9773b1908
Move "ack write" debug message
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
11783a2d7a
Fsync data on trim_lsn, not when writing compacted data
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
7915605609
Batch big_write data fsyncs
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
3ba3eed0cf
Use the same "inflight" queue to track compaction
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
5dc0b42146
Use new LSNs on stabilize
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
b44c3a7971
Assign new LSN on stabilize
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
59b7b2e0c3
WIP Only save MVCC copy when overwriting an object
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
7f0c78113b
Do not use wr_offset
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
20bbeb4095
Prevent compaction of incomplete object writes
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
3c687a2993
Experimental INTENT_WRITE write mode with WA=2 instead of 3
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
7530bdbec7
Add test_compact_block
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
c78b4d184d
Remove alloc_buffer_area
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
c7a6b77c21
Two more unordered_maps
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
3cb7ec69bc
Remove sync_to_repeat map and use simpler repeating
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
954e7b658d
Use a sequence of bitmap_allocs for metadata instead of std::sets...
2025-12-02 01:52:12 +03:00
Vitaliy Filippov
2c6ea8a521
It seems tcmalloc is actually slower, disable it
2025-12-02 01:52:11 +03:00
Vitaliy Filippov
bfd5575425
Use single add_used_space call instead of unmark+mark allocated_block
2025-12-02 01:52:11 +03:00
Vitaliy Filippov
85e61c9c31
Remove compact_queue_lsn map
2025-12-02 01:52:11 +03:00
Vitaliy Filippov
f580cee936
Implement a really crazy "multi-linked-list" allocator for buffered data
2025-12-02 01:52:11 +03:00
Vitaliy Filippov
6d0460500a
Use linked list heap in blockstore code
...
WIP, still slower than the old version :-E
2025-12-02 01:52:11 +03:00
Vitaliy Filippov
01ae800d34
Use linked lists in heap to avoid excessive memory copying
2025-12-02 01:52:11 +03:00
Vitaliy Filippov
dbb885a6b1
v1 (old) store fixes for merged version
2025-12-02 01:52:11 +03:00
Vitaliy Filippov
8ff2c268f7
Integrate "heap" metadata storage into blockstore
2025-12-02 01:52:11 +03:00
Vitaliy Filippov
8430104c19
"Heap" metadata storage scheme
2025-12-02 01:52:11 +03:00
Vitaliy Filippov
4c11e3ad3d
Release 2.4.4
...
- Implement `vitastor-kv rescue` command which dumps all readable blocks from the
database regardless of the tree structure and allows to recover a corrupted database.
- Simplify primary OSD selection - use just PG number instead of the hash. This allows
to distribute primary OSDs more evenly and reach better read speeds.
- Fix vitastor-kv-stress hang on parallel list & reopen.
- Fix CAS writes without immediate_commit. Fix is sufficient for vitastor-kv to
operate correctly in non-immediate_commit pools.
- Fix NFS ACCESS calls for broken inodes (allow root access to them).
- Fix broken vitastor-kv-stress --runtime parameter.
- Fix bad vitastor-kv dump output buffering leading to incorrect JSON in dumps.
- Fix writing garbage from uninitialized memory to the empty space in VitastorKV DB.
- Refactor some code in preparation to the release of the new log-structured metadata store.
- Replace assert(done != expected) error message, probably caused by kernel issues with
zero-copy TCP send, with a more concise error description.
2025-12-01 02:22:27 +03:00
Vitaliy Filippov
d88b49872b
Fix vitastor-kv-stress hang on parallel list & reopen
2025-11-30 16:54:23 +03:00
Vitaliy Filippov
ca27b91919
Handle CAS writes with built-in SYNC and without retries in the client
2025-11-30 14:50:50 +03:00
Vitaliy Filippov
94f31b96b8
Cancel block changes on write failures/CAS retries (should fix #115 )
2025-11-30 01:49:49 +03:00
Vitaliy Filippov
76c7c26d32
Fix broken inode removal again (ACCESS will now allow root access to such inodes)
2025-11-29 19:30:20 +03:00
Vitaliy Filippov
8aa2c49202
Use immediate_commit in test_nfs
2025-11-29 19:22:01 +03:00
Vitaliy Filippov
0f330b10f1
Add kv-stress test to CI
2025-11-29 16:48:38 +03:00
Vitaliy Filippov
477b54a0d8
Fix broken vitastor-kv-stress --runtime parameter
2025-11-29 16:47:13 +03:00
Vitaliy Filippov
5823a7de66
Disable K/V DB operation on non-immediate_commit pools (unsafe because of broken CAS)
2025-11-29 16:43:46 +03:00
Vitaliy Filippov
eb0deaa3f5
Implement vitastor-kv rescue command
2025-11-29 16:34:34 +03:00
Vitaliy Filippov
59e6527303
Fix dump buffering, do not write uninitialized memory to the end K/V blocks on serialize
2025-11-29 16:34:34 +03:00
Vitaliy Filippov
67ba9f9b7c
Simplify primary OSD selection - use just PG number instead of the hash
2025-11-28 16:38:55 +03:00
Vitaliy Filippov
3ad83e8d13
Use only space_left, not sqes_left
2025-11-23 15:17:57 +03:00
Vitaliy Filippov
5d3f3f47a7
Move all #defines to internal.h
2025-11-23 14:53:46 +03:00
Vitaliy Filippov
8ee7058ec8
Use an interface instead of explicit blockstore_t wrapper
2025-11-23 01:48:44 +03:00
Vitaliy Filippov
1badc6ad13
Remove include of blockstore_impl.h from disk_tool and osd
2025-11-23 01:48:44 +03:00
Vitaliy Filippov
be1858848e
Remove block_order and replace << >> by / * data_block_size
2025-11-22 18:10:32 +03:00
Vitaliy Filippov
d75b1cb2d2
Refactor some defines
2025-11-22 18:07:44 +03:00
Vitaliy Filippov
a1c17d90a3
Add done != expected send error message
2025-11-18 01:23:52 +03:00
Vitaliy Filippov
f0112050ce
Release 2.4.3
...
- Daemonize before forking in NFS proxy to fix OSD RDMA support (#107 )
- Fix possible PG_INCOMPLETE on node outage when allow_net_split is false
- Fix build under Ubuntu 25.10
- Fix journal_no_same_sector_overwrites mode after optimizing WA (#109 )
2025-11-09 02:18:35 +03:00
Vitaliy Filippov
d6b8d921d6
Daemonize before forking in NFS proxy to fix OSD RDMA support ( fix #107 )
2025-11-09 01:07:11 +03:00
Vitaliy Filippov
65872f5d0e
Remove RDMA context FD handlers during msgr destroy
2025-11-08 14:11:03 +03:00
Vitaliy Filippov
15eef27d44
Fix PG_INCOMPLETE on node outage when allow_net_split is false
2025-11-07 21:56:56 +03:00
Vitaliy Filippov
aa1e51de5f
Add include stdint (fix ubuntu 25.10 build)
2025-11-07 21:56:56 +03:00
Vitaliy Filippov
622631c146
Release 2.4.2
...
A micro-fix to the make-etcd script and a minor fix to vitastor-cli rm
leaving "deleted" flag after itself when using "inverse delete".
2025-11-04 17:51:09 +03:00
Vitaliy Filippov
4ab93d8481
Use tar.xz from bookworm for trixie O_o
2025-11-04 17:51:09 +03:00
Vitaliy Filippov
bd64770317
Use -it in debian build scripts
2025-11-04 16:56:04 +03:00
Vitaliy Filippov
34cb48d553
Support QEMU 10.1
2025-11-04 15:39:10 +03:00
Vitaliy Filippov
724d2ffa04
Do not mark "inverse child" as deleted during rename-delete
2025-11-04 01:30:00 +03:00
Vitaliy Filippov
b6bfe1435d
Followup fix for make-etcd ipv6 support
2025-11-03 16:18:38 +03:00
Vitaliy Filippov
74a23dcb63
Release 2.4.1
...
- Optimize WA - reduce it from 4-5 to 3.x by batching journal writes
- Fix ls-pool showing wrong used % when osds are reweighted (#105 )
- Fix vitastor-cli rm sometimes hanging when PGs are down (#99 )
- Fix vitastor-cli ls displaying raw used space for all inodes when -p is specified (#101 )
- Fix "Cannot set property of undefined" in monitor when deleting pool with live inode op stats (#103 )
- Revert vitastor-kv change from 2.2.0 leading to crashes in vitastor-kv-stress (#100 )
- Add pg_size change check for XOR pools
- Fix root access to VitastorFS files
- Add IPv6 support to make-etcd
- Fix IPv6 etcd address support in OSD & client library
2025-10-29 01:39:33 +03:00
Vitaliy Filippov
eedc700b83
Do not try executing operations on inactive PGs at all
2025-10-28 01:38:54 +03:00
Vitaliy Filippov
c8cc17dbe9
Fix tv_nsec == 1000000000 case in timerfd_manager ( #99 )
2025-10-27 20:57:29 +03:00
Vitaliy Filippov
b55d406386
Fix vitastor-cli ls displaying raw used space for all inodes when -p is specified ( fix #101 )
2025-10-27 20:55:17 +03:00
Vitaliy Filippov
0c46dbd333
Fix "Cannot set property of undefined" in monitor when deleting pool with live inode op stats (should fix #103 )
2025-10-27 20:48:07 +03:00
Vitaliy Filippov
ed94aa52cf
Ensure that the retry timer is set when checking PG retry (for #99 )
2025-10-27 20:19:17 +03:00
Vitaliy Filippov
555ae613c2
Revert commit 2d07449e74 ( fixes #100 )
2025-10-27 20:12:11 +03:00
Vitaliy Filippov
cad6ea0360
Add pg_size change check for XOR pools
2025-10-24 20:53:27 +03:00
Vitaliy Filippov
d60709dce1
Init list_retry_time to 0
2025-10-20 20:32:49 +03:00
Vitaliy Filippov
a03ffd0d73
Fix prefix in openstack doc
2025-10-14 01:47:05 +03:00
Vitaliy Filippov
89b76a87b6
Fix root access to VitastorFS files
2025-10-09 19:24:05 +03:00
Vitaliy Filippov
ceba343ac0
Add [] for ipv6 etcd IPs in make-etcd
2025-10-08 16:39:48 +03:00
Vitaliy Filippov
3bc04d8250
Fix ipv6 parsing in make-etcd
2025-10-08 01:33:11 +03:00
Vitaliy Filippov
d228fbfb68
Fix ipv6 port parsing in addr_util
2025-10-08 01:30:00 +03:00
Vitaliy Filippov
e3c8fd28b4
Allow to test EC writes with fio_blockstore
2025-09-27 14:12:24 +03:00
Vitaliy Filippov
d87e7d1a37
Optimize WA - do not move to the next journal sector until the actual write
2025-09-27 11:23:05 +03:00
Vitaliy Filippov
59f87c3e30
Release 2.4.0
...
New features:
- Support UBLK in CSI and make it the default
- Add image tree output: `vitastor-cli ls --tree`
Bug fixes:
- Fix OSDs crashing on localized reads from snapshotted images
- Several NFS fixes from github PR #95
- Fix snapshotted bitmap reads not working in EC pools (fix #92 )
- Fix UBLK reporting incorrect device size (1/8 of actual size), report logical_block_size=4096
- Do not repeer when stopping PEER_CONNECTING osd_clients (increase PG peering stability on failover)
- Fix marking PGs as incomplete when peers are unavailable
- Fix FS formatter (mkfs and fsck) error handling in CSI (it didn't report mounting errors)
- Fix removal of block PVC devices not working in CSI
- Do not attempt to free outbound ops in clear_immediate_ops (fix #88 )
- Add vitastor-disk prepare --dry-run option
- Add librdmacm-dev to build-deps
- Log has_invalid objects
- Do not warn on incomplete+has_invalid PG states as unexpected
- Fix OSD reweight values between 0 and 1 not working in monitor
- Fix OSD assertion failed: n_subops != sent when all object copies are corrupted
- Install ibverbs-providers in vitastor Docker builds
- Fix #86 - base64_decode on arm64 O_o
- Fix Proxmox 9.0 support (remove some kind of a whitelist added in upstream)
2025-09-24 15:40:41 +03:00
Vitaliy Filippov
eba383f66f
Fix warn_on_unused_result in kv_cli
2025-09-24 15:40:19 +03:00
Vitaliy Filippov
4e5e8822c0
Fix invalid object log
2025-09-24 15:33:21 +03:00
Vitaliy Filippov
60933c1d00
Fix local_reads with chain reads
2025-09-24 15:02:41 +03:00
Vitaliy Filippov
08a3dcd587
Prevent vector out-of-bounds in kv alloc_block (from #95 )
2025-09-24 15:02:41 +03:00
Vitaliy Filippov
3c5b9d2744
Support vitastor-cli ls --tree syntax
2025-09-24 13:09:43 +03:00
Vitaliy Filippov
cff08d2c72
Fix snapshotted bitmap reads not working in EC pools ( fix #92 )
2025-09-24 02:33:04 +03:00
Vitaliy Filippov
1e1f395947
Do not repeer on stopping PEER_CONNECTING osd_clients
2025-09-24 02:17:34 +03:00
Vitaliy Filippov
e6c2628960
Fix marking PGs as incomplete when peers are unavailable
2025-09-24 02:14:47 +03:00
Vitaliy Filippov
887f7c1530
Remove separate close_sync in nbd_proxy, too
2025-09-24 02:11:32 +03:00
Vitaliy Filippov
2c6bddd831
Support UBLK in CSI and make it default
2025-09-24 02:09:39 +03:00
Vitaliy Filippov
e1715c33bb
Fix warn_unused_result on write/read in nbd and ublk
2025-09-24 02:07:58 +03:00
Vitaliy Filippov
2ef80bf0b8
Remove separate close_sync in ublk_proxy, it's already inside cli->flush
2025-09-24 01:54:43 +03:00
Vitaliy Filippov
85ba710718
Add CSI Dockerfile for build with local packages
2025-09-24 01:50:04 +03:00
Vitaliy Filippov
c16b0e7f92
Fix ublk device size & logical_block_size
2025-09-24 01:42:14 +03:00
Vitaliy Filippov
b3d388228a
Fix formatter error handling in CSI
2025-09-23 02:43:21 +03:00
Vitaliy Filippov
bcde9de7da
Fix the removal of block PVC devices not working
2025-09-22 10:29:03 +03:00