Commit Graph
121 Commits
Author SHA1 Message Date
Vitaliy Filippov 04514435de Fix checking config in qemu driver 2025-08-12 01:16:57 +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 Filippov 625552c441 Fix RDMA-CM broken in 2.2.0 2025-07-29 00:14:05 +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 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
Vitaliy Filippov cd028612c8 Use a separate osd_client_t::in_osd_num for inbound OSD connections 2025-06-05 02:09:41 +03:00
Vitaliy Filippov f390e73dae Log broken sequence numbers in "sequencing" errors 2025-06-05 02:09:41 +03:00
Vitaliy Filippov 957a4fce7e Release 2.2.1
- Fix vitastor-disk purge broken after adding the "OSD is still running" check
- Fix iothreads hanging after adding zero-copy send support
- Fix enabling localized reads online (without restarting OSDs) in the default PG lock mode
2025-05-25 01:04:48 +03:00
Vitaliy Filippov 4afb617f59 Also zero-init sqe 2025-05-23 21:18:37 +03:00
Vitaliy Filippov 2b0a802ea1 Fix iothreads sometimes hanging after adding zerocopy support 2025-05-23 20:54:03 +03:00
Vitaliy Filippov 95ec750b8c Release 2.2.0
New features:

- [Localized read support](https://vitastor.io/docs/config/pool.html#local_reads) for multi-datacenter setups.
- io_uring-based [zero-copy send support](https://vitastor.io/docs/config/network.html#min_zerocopy_send_size) -
  read the instruction carefully for optimal performance!
- Improve and speedup data distribution, especially in cases of very large hosts (100 OSD+).
  Previously, PG optimization speed depended on the number of OSDs, now it only depends on
  the number of failure domains. Distribution over specific OSDs is now also more even and
  becomes strictly more even when you increase the number of PGs.
- Add a [very interesting instruction](https://vitastor.io/en/docs/usage/nfs.html#linux-nfs-write-size) to change NFS_MAX_FILE_IO_SIZE
- Check operation sequencing and stop connections when it breaks - should help catch some
  very rare RDMA packet loss problems.
- `vitastor-cli rm-osd` now refuses to remove OSDs which are still up and suggests to use `vitastor-disk purge`.
- Allow removal of direntries referring non-existent in VitastorFS.
- Change default vitastor-etcd data dir to /var/lib/etcd/vitastor.

Bug fixes:

- Fix compatibility with ISA-L 2.31+. ⚠️Very important: please upgrade Vitastor before upgrading ISA-L to 2.31+.
- Fix in-memory state cleanup for incomplete PGs.
- Fix monitor crash with non-existent node_placement nodes.
- Slightly speedup `vitastor-kv dump` command by adding output buffering.
- Fix theoretically possible slowdowns in OSD sub-operation failure handling code.
- Fix very rare stack overflows in vitastor-kv.
- Fix a possible crash in VitastorFS during handling of file creation race condition.
- Fix modify-pool -s PG_SIZE which didn't work without --pg_minsize.
- Fix marking peer OSDs as alive on receiving data from them via RDMA - in theory,
  the bug could result in instability with RDMA under high load with slow disks.
- Fix a rare OSD crash due to double handle_primary_subop() call.
- Fix latency aggregation in global stats (/vitastor/stats in etcd) - do not sum it.
- Hide "Ran out of journal space" log messages by default.
- Wait for RDMA-CM EVENT_ESTABLISHED after rdma_accept(), handle rdma_accept() before acking the event.
- Fix VitastorFS total & free numbers multiplied by extra 2.
- Fix systemd unit name in make-etcd.
- Do not allow reweight > 1 in vitastor-cli modify-osd.
- Fix docker build.
2025-05-11 00:26:08 +03:00
Vitaliy Filippov 90b1de307b Support local reads in client 2025-05-10 16:42:02 +03:00
Vitaliy Filippov b2416afb28 Lock PGs on secondary OSDs to allow local reads and guarantee splitbrain prevention 2025-05-10 15:18:00 +03:00
Vitaliy Filippov b7322a405a Move gethostname_str to utils 2025-05-05 02:16:06 +03:00
Vitaliy Filippov 5692630005 Move check_sequencing indication into config response features subkey 2025-05-05 02:07:50 +03:00
Vitaliy Filippov 2d07449e74 Postpone cb() to set_immediate() to prevent stack overflows in kv_db 2025-05-03 15:06:59 +03:00
Vitaliy Filippov 2ab0ae3bc9 Check operation sequencing and stop clients when it breaks 2025-05-02 17:01:50 +03:00
Vitaliy Filippov 05e59c1b4f Fix MSG_WAITALL assertion added in the zero-copy patch 2025-05-02 17:01:43 +03:00
Vitaliy Filippov 9556eeae45 Implement io_uring zero-copy send support 2025-05-01 18:47:10 +03:00
Vitaliy Filippov 9fa8ae5384 Reset OSD ping state on receiving data from it via RDMA 2025-04-26 14:17:09 +03:00
Vitaliy Filippov df2847df2d Wait for RDMA-CM EVENT_ESTABLISHED after rdma_accept(), handle rdma_accept() before acking the event 2025-04-15 15:19:36 +03:00
Vitaliy Filippov 80e5f8ba76 Add missing WITH_RDMACM defines 2025-04-12 19:06:27 +03:00
Vitaliy Filippov 013f688ffe Run check_peer_config on RDMA-CM connections too 2025-04-02 01:32:28 +03:00
Vitaliy Filippov 891b2811c7 Release 2.1.0
New features:

- Support separate OSD cluster network - [osd_cluster_network](https://vitastor.io/docs/config/network.html#osd_cluster_network)
  and, in general, multiple OSD networks, including RDMA
- Add an alternative RDMA implementation via RDMA-CM - [use_rdmacm](https://vitastor.io/docs/config/network.html#use_rdmacm),
  required for iWARP and, maybe, for some IB setups (but not for RoCE)
- Change default PG behaviour to wait for all "up" OSDs to be connected before starting it.
  The old behaviour may be returned by enabling a new [allow_net_split](https://vitastor.io/docs/config/osd.html#allow_net_split)
  option.
- Add a patch for QEMU 9.2

Bug fixes:

- Fix incorrect "has_xxx" PG state names in ls-pgs
- Fix possible QEMU crashes after detaching of Vitastor disks (and update all QEMU builds in Vitastor repos)
- Fix clients sometimes spamming OSDs with infinite reconnections when some PGs are offline
- Fall back to TCP on RDMA connection failures
- Add missing logging of RDMA ibv_modify_qp() errors
- Add a minimum interval for etcd_state_client to reload state
2025-04-01 20:16:27 +03:00
Vitaliy Filippov 3e5f0be52c Use separate port numbers for RDMA-CM 2025-04-01 16:16:03 +03:00
Vitaliy Filippov 8508e78288 Add an alternative RDMA implementation via RDMA-CM
Required for non-RoCE cards: iWARP and, possibly, Infiniband
2025-03-31 21:01:25 +03:00
Vitaliy Filippov f32dea02bf Support multiple RDMA networks 2025-03-31 21:01:25 +03:00
Vitaliy Filippov a103065d12 Support multiple OSD networks and separate OSD cluster network 2025-03-31 21:01:15 +03:00
Vitaliy Filippov ccc32b9e68 Use TCP on RDMA connection failure 2025-03-23 12:04:23 +03:00
Vitaliy Filippov ebaf3fee79 Add an assertion to prevent sending message to TCP channel when switched to RDMA 2025-03-23 12:04:09 +03:00
Vitaliy Filippov 8b0389b4e8 Log RDMA ibv_modify_qp() errors 2025-03-22 15:58:13 +03:00
Vitaliy Filippov f544c350ba %l* -> %j* 2025-03-22 15:32:07 +03:00
Vitaliy Filippov 5030396f71 Clear QEMU eventfd handler on vitastor block driver destruction 2025-03-21 20:47:17 +03:00
Vitaliy Filippov be22c363ca Do not skip client_retry_interval on reconnecting OSDs to prevent OSD spam 2025-03-20 00:12:38 +03:00
Vitaliy Filippov 0f80c87b43 Add a minimum interval for etcd_state_client to reload state
(To prevent excessive load on etcd during outages)
2025-03-19 02:36:09 +03:00
Vitaliy Filippov 48c026bfa0 Release 2.0.0
No breaking features, it's 2.0.0 just because it includes S3 and because
there are already too many 1.x releases :).

New features:

- S3 is finally available: https://vitastor.io/docs/installation/s3.html
- node.js addon is now packaged as a Debian package
- Support listing PGs by OSDs in `vitastor-cli ls-pgs`
- Implement offline TRIM support: [vitastor-disk trim](https://vitastor.io/docs/usage/disk.html#trim),
  [discard_on_start](https://vitastor.io/docs/config/osd.html#discard_on_start)
- Change used_for_fs pool option to used_for_app

Bug fixes:

- Fix several bugs in the node.js addon (a memory leak, an incorrectly triggered event loop)
- Fix a client crash (vitastor-cli rm) during deletion when writeback is enabled
- Fix PG object count statistics on deletion of non-existing objects
- Fix vitastor-nbd crash when mapping by ID instead of inode name
- Fix a client memory leak with enabled immediate_commit and write-back cache
- Add seccomp=unconfined for vitastor docker OSDs to not break io_uring
- Add udev and systemd to vitastor docker image
- Fix upgrading from pre-0.7.1 (very old) systemd units O_o
- Fix total object count calculation in rm_data
2025-03-16 14:34:31 +03:00
Vitaliy Filippov 21066a095b Fix a memory leak with enabled immediate_commit and write-back cache
Remove dirty buffers after writing when immediate_commit is on instead
of saving them for repeating later
2025-03-11 00:40:18 +03:00
Vitaliy Filippov 35d4047f46 Fix vitastor-nbd crash when mapping by ID instead of inode name 2025-03-08 15:52:57 +03:00
Vitaliy Filippov 819f1125ae Support used_for_app instead of used_for_fs 2025-03-07 01:03:43 +03:00
Vitaliy Filippov d32edf6cdf Fix deletion writeback 2025-03-04 00:40:35 +03:00
Vitaliy Filippov dca436d7e6 Trigger event loop automatically in libvitastor_c 2025-03-03 00:57:09 +03:00
Vitaliy Filippov 69cbe7bbb2 Release 1.11.0
New features:

- Support containerized Vitastor installations: http://vitastor.io/docs/installation/docker.html
- Add new functions to the node.js binding: delete(), get_immediate_commit(), on_ready(),
  get_min_io_size(), get_max_atomic_write_size()
- S3 (Zenko Cloudserver with Vitastor support) is coming shortly and will be released separately

Bug fixes:

- Use IP-derived etcd node names in make-etcd
- Set short name of the OSD process to display in `top`
- Fix snap-create without pool_id failing when there are multiple pools
- Several bugs are fixed in the write-back cache, it should now be stable:
  - Fix incorrect snapshot reads from dirty write-back cache
  - Do not try to repeat pending writebacks on OSD reconnections
  - Fix client hangs with multiple SYNCs in the writeback queue
  - Fix client hangs do to incorrect calculation of the writeback queue size
- Several improvements for NBD mapping/unmapping:
  - Add a workaround for race condition in the Linux kernel NBD driver leading
    to vitastor-nbd sometimes breaking a previously mapped device instead of
    setting up a new one
  - Check if the device is actually mapped in vitastor-nbd unmap
  - Fix device name/number validation in vitastor-nbd
- Fix OSD crashes after starting with corrupted metadata - from now it will skip
  corrupted metadata entries and heal itself
- Fix scrubbing of misplaced objects and object state recalculation after
  vitastor-cli fix - previously, an OSD restart could be required to fix object states
- Make primary OSD distribution more stable by using murmur3 hash instead of the old pseudo-rng
- Fix monitor sometimes racing with itself - do not touch /pool/stats from stats
  aggregation if PG recheck is active
- Sort vitastor-cli ls output by name by default
- Update antietcd to 1.1.2
2025-03-01 13:39:42 +03:00
Vitaliy Filippov 4950a1636c Allow "infinite" startup for clients if explicitly requested 2025-03-01 13:39:42 +03:00