Commit Graph
1145 Commits
Author SHA1 Message Date
Vitaliy Filippov 52bc3261e9 Do not attempt to free outbound ops in clear_immediate_ops (fix #88) 2025-09-17 12:22:48 +03:00
Vitaliy Filippov 2d42f29385 Add vitastor-disk prepare --dry-run option 2025-09-05 23:34:11 +00:00
Vitaliy Filippov 9e627a4414 Log has_invalid objects 2025-09-05 02:14:03 +03:00
Vitaliy Filippov 90b1019636 Do not warn on incomplete+has_invalid PG states as unexpected 2025-09-05 02:10:57 +03:00
Vitaliy Filippov 47c7aa62de Remove unused SUBMIT_SCRUB_READ 2025-08-30 16:30:52 +03:00
Vitaliy Filippov 9f2dc48d0f Fix OSD assertion failed: n_subops != sent when all object copies are corrupted 2025-08-30 16:30:47 +03:00
Vitaliy Filippov 552f28cb3e Fix #86 - base64_decode on arm64 O_o 2025-08-30 02:27:05 +03:00
Vitaliy Filippov 0c89886374 Release 2.3.0
New features:

- Add a new kernel device mounting method: [ublk](https://vitastor.io/docs/usage/ublk.html).
  It's the fastest method for random IOPS, and it's on par with VDUSE for linear MB/s.
- Disable io_uring waits being reported as iowait on kernels which support it (6.15+)
- Allow to enforce permissions at the VitastorFS NFS server side
- Add qemu_file_mirror_path option to the config to allow to trick Veeam and make it work
- Speed up CRC32C calculation in OSD by fixing a bug and enabling AVX512 version
- Support QEMU 10
- Support Debian 13 Trixie and Proxmox 9.0
- Remove the dependency on system liburing in package builds (build it statically)

Bug fixes:

- Fix checksums NEVER BEING ENABLED in vitastor-disk prepare, even when explicitly requested :-D
- Use default uid and gid from NFS AUTH_SYS when creating files
- Fix object bitmaps supposedly & possibly being corrupted in some rare cases with EC N+2+
- Avoid multiple inflight overwrites to meta blocks - fixes possible data corruption with
  one specific SSD model: Memblaze PBlaze5 910 (github #79)
- Fix a bug in antietcd which was leading to leases sometimes not expiring correctly
- Fix a bug in NFS where ".." entry had its `cookie` equal to 0 instead of 1 (github #78)
- Fix snapshots not being deleted during VM deletion in Proxmox plugin (github #85)
- Fix monitor not filtering OSDs by block size correctly
2025-08-25 21:39:19 +03:00
Vitaliy Filippov ad76f84e1c Fix compat.h for even older kernel headers 2025-08-25 21:38:04 +03:00
Vitaliy Filippov 31b7021330 Implement Vitastor ublk server 2025-08-24 16:55:58 +03:00
Vitaliy Filippov 2ebe3a468c Mark all symbols hidden by default, export only required ones 2025-08-24 16:55:58 +03:00
Vitaliy Filippov 9892fccfb0 Disable io_uring waits being reported as iowait 2025-08-24 16:55:58 +03:00
Vitaliy Filippov 0be86a306d Remove old liburing version support as it's now included 2025-08-24 16:55:58 +03:00
Vitaliy Filippov d77a775948 Fix liburing include/compat for older kernels 2025-08-24 16:55:58 +03:00
Vitaliy Filippov 8cc82bab39 Include liburing in static build 2025-08-24 16:55:58 +03:00
Vitaliy Filippov fbf14fb0cb Allow to enforce permissions at the server side 2025-08-24 16:20:19 +03:00
Vitaliy Filippov fb1c3e00f4 Use default uid and gid from NFS AUTH_SYS when creating files 2025-08-24 16:03:40 +03:00
ston3luandVitaliy Filippov d8332171e9 According to the NFSv3 protocol: Directory traversal should start with cookie '0' - "." entry as the first entry, cookie should be '0' - '.." entry as the second entry, cookie should be '1' 2025-08-24 14:44:48 +03:00
Vitaliy Filippov 9f57c75acf unordered_map flush_versions 2025-08-23 17:45:56 +03:00
Vitaliy Filippov 53b12641d1 Fix the fix :) 2025-08-23 17:45:56 +03:00
flynn.yangandVitaliy Filippov 5c5c8825dc Avoid multiple inflight overwrites to meta blocks
https://github.com/vitalif/vitastor/pull/83

By https://github.com/Flynn049

By submitting this pull request, I accept Vitastor CLA
2025-08-23 17:45:03 +03:00
Vitaliy Filippov 3a261ac3fc Support QEMU 10 2025-08-18 10:51:04 +03:00
Vitaliy Filippov 04514435de Fix checking config in qemu driver 2025-08-12 01:16:57 +03:00
Vitaliy Filippov 07303020fc Fix enabling checksums in blockstore-disk O_o 2025-08-10 18:04:52 +03:00
Vitaliy Filippov feaf7a15cf Use CRC32C implementation from ISA-L when available - enables VPCLMULQDQ version with AVX512 which is ~2x faster 2025-08-10 18:03:47 +03:00
Vitaliy Filippov 29dda5066f Stop doing cpuid repeatedly in runtime 2025-08-10 18:03:22 +03:00
Vitaliy Filippov 1de53ef7e6 Move crc32c_pad to util/crc32c.c 2025-08-10 18:03:17 +03:00
Vitaliy Filippov 4793dbe9c3 Use set_immediate() in osd_flush to prevent stack overflows on repeated errors 2025-08-10 17:58:01 +03:00
Vitaliy Filippov 918ea34af2 Remove "Only allow to overwrite part of the bitmap" blockstore API feature 2025-08-10 17:57:04 +03:00
Vitaliy Filippov 2db8184cd8 Fix bitmap calculation for EC N+1 & the new store and EC N+2+ for the old store 2025-08-10 17:57:04 +03:00
Vitaliy Filippov 1b9296ff6c Add qemu_file_mirror_path option to the config to allow to trick Veeam
When qemu_file_mirror_path is set to "/dir/" in /etc/vitastor/vitastor.conf, QEMU driver
returns "/dir/image_name" as the filename in qemu-img info and in QAPI to trick software
like Veeam which expects file-based access. After that, vitastor-nfs can be mounted to that
directory to make backups work :-)
2025-08-06 01:15:54 +03:00
Vitaliy Filippov b529f77264 Release 2.2.3
- Support Ubuntu 24.04 Noble
- Fix clients hanging on online PG count change with in-flight operations
- Fix volume_size_info in PVE VitastorPlugin
- Implement bdrv_refresh_filename for the QEMU driver
- Fix RDMA-CM broken in 2.2.0
- Fix possible "invalid %N$ use detected" OSD crashes
- Fix vitastor-nfs build without RDMA
- Fix docker build by adding the forgotten apt/preferences
- Fix libfio_blockstore.so
- Fix "trigger event loop automatically" API version check in the QEMU driver
- Add Content-Type header for prometheus metrics
- Add a patch for libvirt 11.5
2025-07-30 10:50:02 +03:00
Vitaliy FilippovandVitaliy Filippov 265127c1a7 Fix vitastor-nfs build without RDMA 2025-07-30 02:38:52 +03:00
Vitaliy Filippov 625552c441 Fix RDMA-CM broken in 2.2.0 2025-07-29 00:14:05 +03:00
Vitaliy Filippov 78c95c94f6 Use uint8_t* for BS buffers in OSD 2025-07-26 14:13:12 +03:00
Vitaliy Filippov 488e20bf55 Remove BS_OP_SYNC_STAB_ALL from OSD 2025-07-26 14:13:12 +03:00
Vitaliy Filippov 25d6281b3e Remove BS_OP_SYNC_STAB_ALL 2025-07-26 14:13:11 +03:00
Vitaliy Filippov 1676e50b3a Fix debug trace for fio_bs 2025-07-26 14:12:48 +03:00
Vitaliy Filippov 8049e3c14a Use OP_WRITE_STABLE in bs_fio 2025-07-26 14:12:48 +03:00
Vitaliy Filippov 93a30efd86 Do not use numbered printf args 2025-07-26 14:11:15 +03:00
Vitaliy Filippov 83fb121f36 Fix "Trigger event loop automatically" API version check 2025-07-20 17:14:22 +03:00
Vitaliy Filippov afc97b757b Implement bdrv_refresh_filename 2025-07-20 16:30:01 +03:00
Vitaliy Filippov 68905cbf41 Fix online PG count change, add a test for it 2025-07-15 02:33:28 +03:00
Vitaliy Filippov 97bb809b54 Release 2.2.2
- Fix a bug introduced in 2.2.0 - pg_locks weren't disabled for pools without local_reads
  correctly which could lead to inactive pools during various operations
- Fix an old bug where OSDs could send sub-operations to incorrect peer OSDs when their
  connections were stopped and reestablished quickly, in 2.2.0 it was usually leading
  to "sequencing broken" messages in OSD logs
- Fix debug use_sync_send_recv mode
2025-06-07 12:56:48 +03:00
Vitaliy Filippov 6022a61329 Decouple break_pg_locks from outbound OSD disconnections 2025-06-05 02:48:54 +03:00
Vitaliy Filippov a3c1996101 Do not accidentally clear incorrect osd_peer_fds entries 2025-06-05 02:22:13 +03:00
Vitaliy Filippov 8d2a1f0297 Fix PG lock auto-enabling/auto-disabling in the default configuration 2025-06-05 02:22:01 +03:00
Vitaliy Filippov 91cbc313c2 Change "on osd -123" logging to "on peer 123" for unknown connections 2025-06-05 02:22:01 +03:00
Vitaliy Filippov f0a025428e Postpone read/write handlers using timerfd in the debug use_sync_send_recv mode 2025-06-05 02:22:01 +03:00
Vitaliy Filippov 67071158bd Cancel outbound operations only in the osd_client_t destructor
This is required to prevent disconnected peers from sometimes receiving messages
suited for other peers - stop_client was freeing the operations even though they
were still references in the io_uring requests in progress. This was leading to
OSDs sometimes receiving garbage and "broken sequencing" errors in logs as the
memory was usually already reallocated for other operations
2025-06-05 02:09:41 +03:00