Commit Graph
2754 Commits
Author SHA1 Message Date
Vitaliy Filippov cb40ab3dfd Allow 2 and 4 byte per block chain_info (allow more than 255 snapshots with encryption) 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 459a412f91 Implement OSD TLS support 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 2b52769d64 Allow to skip checksums for headers 2026-05-19 17:19:35 +03:00
Vitaliy Filippov ff83e12b79 Implement protocol-level checksums (xxhash3) 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 4340b2b7bc Include xxhash3 x86dispatch 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 6be0be02fa Do not use scrap_buffer in the client (it would block protocol checksum support) 2026-05-19 17:19:35 +03:00
Vitaliy Filippov a31a1c0ab1 Support TLS CN authentication and per-image permissions in vitastor-cli serve 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 1c18daa644 Add VitastorAuthFilter 2026-05-19 17:19:35 +03:00
Vitaliy Filippov b367c81f44 Implement vitastor-cli ls-user, modify-user, remove-user commands 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 197ef6c171 Add image owner/owner_group/reader_group support (for antietcd VitastorAuthFilter) 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 4a907f09df Add security parameter documentation 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 360ccbaa4d Support inline (string PEM) certificates and pkeys 2026-05-19 17:19:35 +03:00
Vitaliy Filippov d960816a9b Show encryption keys (only IDs) in the listing 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 3dabffb1be Support storing image encryption keys in Vault 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 5ba63a2fa5 Prefer local etcd addresses and correctly cycle over them even when they need resolving
Seems slightly overcomplicated...
2026-05-19 17:19:35 +03:00
Vitaliy Filippov 26be916e3f Support DNS resolving via libc-ares 2026-05-19 17:19:35 +03:00
Vitaliy Filippov eb1dbd7459 Batch handle_immediate_ops more 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 13842ecd90 Add vitastor-cli create & modify --enc-key parameter 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 27e2c08e38 Support reading from snapshots encrypted with different keys 2026-05-19 17:19:35 +03:00
Vitaliy Filippov f9975311ea Support decryption with multiple keys 2026-05-19 17:19:35 +03:00
Vitaliy Filippov 652ca3f1c3 Allow to return chain_info in response to reads 2026-05-19 17:19:35 +03:00
Vitaliy Filippov c81cbcf69e Add basic AES-XTS client-side encryption support 2026-05-19 17:19:34 +03:00
Vitaliy Filippov 9e28c4c6e3 Rework msgr send/receive to allow encryption support 2026-05-19 17:19:16 +03:00
Vitaliy Filippov e14be3fdad Move fromhexstr() to str_util 2026-05-19 17:19:16 +03:00
Vitaliy Filippov 2e5d9cb238 Add openapi description 2026-05-19 17:19:16 +03:00
Vitaliy Filippov 376226552a Slightly fix API return and input types 2026-05-19 17:19:16 +03:00
Vitaliy Filippov 6bdd260b50 Implement vitastor-cli serve command to serve simple HTTP API 2026-05-19 17:19:16 +03:00
Vitaliy Filippov b72cfbad66 Implement HTTP server support O_o 2026-05-19 17:19:16 +03:00
Vitaliy Filippov 792efa673e Rename http_response_t to http_message_t 2026-05-19 17:19:16 +03:00
Vitaliy Filippov f3c5c3b776 Extract common HTTP context 2026-05-19 17:19:16 +03:00
Vitaliy Filippov 5e26376f1f Support xxhash 32-bit checksums (data_csum_type=xxh3_32) 2026-05-19 17:19:16 +03:00
Vitaliy Filippov 55047c10fb Detect block checksums using csum_block_size, not data_csum_type 2026-05-19 17:19:16 +03:00
Vitaliy Filippov e13edcdc2f Add client certificate support 2026-05-19 17:19:16 +03:00
Vitaliy Filippov aaf54f264d Do not re-initialize TLS context every connection 2026-05-19 17:19:16 +03:00
Vitaliy Filippov 7e879bea9d Add https support to antietcd 2026-05-19 17:19:16 +03:00
Vitaliy Filippov af34be70ab Implement etcd SSL support via OpenSSL
Maybe I should remove all of this and use libwebsockets :)
2026-05-19 17:19:16 +03:00
Vitaliy Filippov 00517e2bac Fix header checksum after new store write-meta 2026-05-19 12:30:21 +03:00
Vitaliy Filippov e0a2615cbc Fix test build 2026-05-19 02:27:03 +03:00
Vitaliy Filippov 63fe3c323a Release 3.0.12
Important fixes (except the new store):

- Fixed a possible use-after-free in the OSD during error handling of initial
  commit/rollback of objects in EC pools.
- Fixed a possible free of an invalid pointer in the OSD during read errors
  from snapshot/clone chains in EC pools.
- Fixed possibly incorrect handling of commit/rollback operations in EC pools
  during pool PG count changes.
- Fixed the inverted fsync enable parameter in the ublk driver (fsync was not
  enabled on pools without immediate_commit).
- Added the raw-ls command for debugging purposes to find object versions in
  the cluster using listing operations.

New store fixes:

- Improved startup speed by using LSN-based sorting only for objects with a
  large number of intermediate versions.
- Added skip_double_claim option as a temporary workaround to fix the rare OSD
  startup error with the "double claimed block" message, observed by several
  users. This option does not affect data integrity.
- Fixed incorrect rechecking of small writes during startup, which in theory
  could lead to duplicate small write object entries on the OSD.
- Fixed fsync operation for disks with a writeback cache (without capacitors):
  - Fixed incorrect semantics of consecutive fsyncs (next fsync was not blocked
    by the previous one).
  - Added fsync when copying small writes from the buffer to the data device
    (somehow forgotten during initial development).
  - Added fsync after the initial garbage collection during OSD startup.
  - Fixed incorrect cast of LSN from uint64 to uint32, breaking fsync when
    reaching LSN 2^32.
- Added missing verification of the metadata header checksum during startup.
- Fixed incorrect updating of object checksums in perfect_csum_update=true mode.
- Fixed a possible OSD crash with "assertion failed" when processing a malformed
  EC STABILIZE operation.
- Fixed the accounting of active compactor coroutines.
- Removed broken and untested new->old store conversion support.

Minor issues fixed:

- Incorrect accounting of OSD local operation statistics in replicated pools.
- Missing non-zero exitcodes on vitastor-disk resize command errors.
- Missing reset of the list of inconsistent objects during PG restarts.
- Theoretically possible hangs of various OSD operations when working with
  completely corrupted objects (without a single available copy), and possibly
  in some other very rare situations.
- Incorrect fsyncs when deleting objects from pools without immediate_commit
  (on disks with a writeback cache), which previously could leave garbage when
  deleting misplaced objects.
- Possible crash/memory corruption of the NFS server during a targeted attack
  on NFS-RDMA.
- Possibly incorrect handling of ENOSPC/EIO write errors in replicated pools,
  leading to inability to retry the write later.
- Possible crash instead of a clean error exit when starting an OSD with the
  old storage engine on a disk with corrupted journal data.
- Shallow copying of PG configuration in the monitor, however, not related to
  actual bugs.
- Incorrect checking of allocated blocks in the QEMU driver in an unused code
  branch (without the BDRV_WANT_ZERO flag).
- Possible memory leak on read errors of corrupted objects.
- Possible incorrect PG states when corrupted objects are detected.
- Possible failure to mark all "bad" copies of an object during scrubs without
  checksums and with a large number of replicas (> 4).
- Incorrect checksum calculation in the old storage engine when
  bitmap_granularity < 4096 (a practically unused configuration).
- Theoretically possible OSD crash in rare cases during a scrub and simultaneous
  object recovery.
- Theoretically possible OSD crash when handling PING operation errors.
- Slightly suboptimal logic for reusing the RDMA send buffer.
- Possible memory leak when canceling an already running scrub via no_scrub.
- Possible memory corruption when a client (e.g., QEMU code) passes invalid
  buffers and the writeback cache is enabled.
- Potentially incorrect search for corrupted parts of EC objects (inability
  to find a "good" combination) during a scrub with checksums disabled.
- Possible additional memory usage on the OSD side when handling failed reads
  from snapshots (not a leak however - the memory was freed upon client
  disconnection).
- Potential sudden write slowdown at certain pg epoch values due to incorrect
  epoch update logic in etcd.
v3.0.12
2026-05-18 02:24:22 +03:00
Vitaliy Filippov a88465df05 Fix build under older gcc 2026-05-18 01:17:56 +03:00
Vitaliy Filippov ad24be717a Wrap delete rdma_conn into destroy_rdma_conn 2026-05-18 01:17:56 +03:00
Vitaliy Filippov 648e3b12f0 Replace public/protected ifdef with a friend class 2026-05-18 01:17:56 +03:00
Vitaliy Filippov a675993c74 Remove unused osd_test.cpp and mock/ringloop.h, move epmgr out of osd_t 2026-05-18 01:17:56 +03:00
Vitaliy Filippov c9dfd0f67d Fix possible buffer overflow in NFS-RDMA 2026-05-18 01:17:56 +03:00
Vitaliy Filippov 84919a10a9 Extract msgr_iothread to separate .{cpp,h} 2026-05-18 01:17:56 +03:00
Vitaliy Filippov 51ae4d6e24 Remove extra assert in heap after reworking recheck 2026-05-18 01:17:56 +03:00
Vitaliy Filippov 572b20fedc Fix mark_partial_write for replicas (TODO: try to write an OSD unit test for it) 2026-05-18 01:17:56 +03:00
Vitaliy Filippov 4e2724b28f Remove duplicate subop submit/fail code 2026-05-18 01:17:56 +03:00
Vitaliy Filippov 768b1675f8 Do not use ISA-L in test_crc32c 2026-05-18 01:17:56 +03:00
Vitaliy Filippov 38fa722725 Remove the rest of tcmalloc from build 2026-05-18 01:17:56 +03:00