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
21 lines
1.0 KiB
CMake
21 lines
1.0 KiB
CMake
cmake_minimum_required(VERSION 2.8.12)
|
|
|
|
project(vitastor)
|
|
|
|
set(VITASTOR_VERSION "3.0.5")
|
|
|
|
include(CTest)
|
|
|
|
add_custom_target(build_tests)
|
|
add_custom_target(test
|
|
COMMAND
|
|
echo leak:tcmalloc > ${CMAKE_CURRENT_BINARY_DIR}/lsan-suppress.txt &&
|
|
env LSAN_OPTIONS=suppressions=${CMAKE_CURRENT_BINARY_DIR}/lsan-suppress.txt ${CMAKE_CTEST_COMMAND}
|
|
)
|
|
# make -j16 -C ../../build test_heap && ../../build/src/test/test_heap
|
|
# make -j16 -C ../../build test_heap && rm -f $(find ../../build -name '*.gcda') && ctest -V -T test -T coverage -R heap --test-dir ../../build && (cd ../../build; gcovr -f ../src --html --html-nested -o coverage/index.html; cd ../src/test)
|
|
# make -j16 -C ../../build test_blockstore && rm -f $(find ../../build -name '*.gcda') && ctest -V -T test -T coverage -R blockstore --test-dir ../../build && (cd ../../build; gcovr -f ../src --html --html-nested -o coverage/index.html; cd ../src/test)
|
|
# kcov --include-path=../../../src ../../kcov ./test_blockstore
|
|
add_dependencies(test build_tests)
|
|
add_subdirectory(src)
|