From bf9a175efcf094460d580c34107b8ffc39a7f702 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Thu, 18 Feb 2021 02:14:09 +0300 Subject: [PATCH] Move C/C++ sources to src subdirectory --- CMakeLists.txt | 185 +---------------- src/CMakeLists.txt | 188 ++++++++++++++++++ allocator.cpp => src/allocator.cpp | 0 allocator.h => src/allocator.h | 0 base64.cpp => src/base64.cpp | 0 base64.h => src/base64.h | 0 blockstore.cpp => src/blockstore.cpp | 0 blockstore.h => src/blockstore.h | 0 .../blockstore_flush.cpp | 0 blockstore_flush.h => src/blockstore_flush.h | 0 .../blockstore_impl.cpp | 0 blockstore_impl.h => src/blockstore_impl.h | 0 .../blockstore_init.cpp | 0 blockstore_init.h => src/blockstore_init.h | 0 .../blockstore_journal.cpp | 0 .../blockstore_journal.h | 0 .../blockstore_open.cpp | 0 .../blockstore_read.cpp | 0 .../blockstore_rollback.cpp | 0 .../blockstore_stable.cpp | 0 .../blockstore_sync.cpp | 0 .../blockstore_write.cpp | 0 cluster_client.cpp => src/cluster_client.cpp | 0 cluster_client.h => src/cluster_client.h | 0 crc32c.c => src/crc32c.c | 0 crc32c.h => src/crc32c.h | 0 dump_journal.cpp => src/dump_journal.cpp | 0 epoll_manager.cpp => src/epoll_manager.cpp | 0 epoll_manager.h => src/epoll_manager.h | 0 .../etcd_state_client.cpp | 0 .../etcd_state_client.h | 0 fio_cluster.cpp => src/fio_cluster.cpp | 0 fio_engine.cpp => src/fio_engine.cpp | 0 fio_headers.h => src/fio_headers.h | 0 fio_sec_osd.cpp => src/fio_sec_osd.cpp | 0 http_client.cpp => src/http_client.cpp | 0 http_client.h => src/http_client.h | 0 malloc_or_die.h => src/malloc_or_die.h | 0 messenger.cpp => src/messenger.cpp | 0 messenger.h => src/messenger.h | 0 msgr_receive.cpp => src/msgr_receive.cpp | 0 msgr_send.cpp => src/msgr_send.cpp | 0 nbd_proxy.cpp => src/nbd_proxy.cpp | 0 object_id.h => src/object_id.h | 0 osd.cpp => src/osd.cpp | 0 osd.h => src/osd.h | 0 osd_cluster.cpp => src/osd_cluster.cpp | 0 osd_flush.cpp => src/osd_flush.cpp | 0 osd_id.h => src/osd_id.h | 0 osd_main.cpp => src/osd_main.cpp | 0 osd_ops.cpp => src/osd_ops.cpp | 0 osd_ops.h => src/osd_ops.h | 0 osd_peering.cpp => src/osd_peering.cpp | 0 osd_peering_pg.cpp => src/osd_peering_pg.cpp | 0 osd_peering_pg.h => src/osd_peering_pg.h | 0 .../osd_peering_pg_test.cpp | 0 osd_primary.cpp => src/osd_primary.cpp | 0 osd_primary.h => src/osd_primary.h | 0 .../osd_primary_subops.cpp | 0 osd_rmw.cpp => src/osd_rmw.cpp | 0 osd_rmw.h => src/osd_rmw.h | 0 osd_rmw_test.cpp => src/osd_rmw_test.cpp | 0 osd_secondary.cpp => src/osd_secondary.cpp | 0 osd_test.cpp => src/osd_test.cpp | 0 pg_states.cpp => src/pg_states.cpp | 0 pg_states.h => src/pg_states.h | 0 qemu_driver.c => src/qemu_driver.c | 0 qemu_proxy.cpp => src/qemu_proxy.cpp | 0 qemu_proxy.h => src/qemu_proxy.h | 0 ringloop.cpp => src/ringloop.cpp | 0 ringloop.h => src/ringloop.h | 0 rm_inode.cpp => src/rm_inode.cpp | 0 rw_blocking.cpp => src/rw_blocking.cpp | 0 rw_blocking.h => src/rw_blocking.h | 0 stub_bench.cpp => src/stub_bench.cpp | 0 stub_osd.cpp => src/stub_osd.cpp | 0 stub_uring_osd.cpp => src/stub_uring_osd.cpp | 0 test_allocator.cpp => src/test_allocator.cpp | 0 .../test_blockstore.cpp | 0 test_pattern.h => src/test_pattern.h | 0 test_shit.cpp => src/test_shit.cpp | 0 .../timerfd_interval.cpp | 0 timerfd_interval.h => src/timerfd_interval.h | 0 .../timerfd_manager.cpp | 0 timerfd_manager.h => src/timerfd_manager.h | 0 xor.h => src/xor.h | 0 tests/test_write.sh | 10 +- 87 files changed, 194 insertions(+), 189 deletions(-) create mode 100644 src/CMakeLists.txt rename allocator.cpp => src/allocator.cpp (100%) rename allocator.h => src/allocator.h (100%) rename base64.cpp => src/base64.cpp (100%) rename base64.h => src/base64.h (100%) rename blockstore.cpp => src/blockstore.cpp (100%) rename blockstore.h => src/blockstore.h (100%) rename blockstore_flush.cpp => src/blockstore_flush.cpp (100%) rename blockstore_flush.h => src/blockstore_flush.h (100%) rename blockstore_impl.cpp => src/blockstore_impl.cpp (100%) rename blockstore_impl.h => src/blockstore_impl.h (100%) rename blockstore_init.cpp => src/blockstore_init.cpp (100%) rename blockstore_init.h => src/blockstore_init.h (100%) rename blockstore_journal.cpp => src/blockstore_journal.cpp (100%) rename blockstore_journal.h => src/blockstore_journal.h (100%) rename blockstore_open.cpp => src/blockstore_open.cpp (100%) rename blockstore_read.cpp => src/blockstore_read.cpp (100%) rename blockstore_rollback.cpp => src/blockstore_rollback.cpp (100%) rename blockstore_stable.cpp => src/blockstore_stable.cpp (100%) rename blockstore_sync.cpp => src/blockstore_sync.cpp (100%) rename blockstore_write.cpp => src/blockstore_write.cpp (100%) rename cluster_client.cpp => src/cluster_client.cpp (100%) rename cluster_client.h => src/cluster_client.h (100%) rename crc32c.c => src/crc32c.c (100%) rename crc32c.h => src/crc32c.h (100%) rename dump_journal.cpp => src/dump_journal.cpp (100%) rename epoll_manager.cpp => src/epoll_manager.cpp (100%) rename epoll_manager.h => src/epoll_manager.h (100%) rename etcd_state_client.cpp => src/etcd_state_client.cpp (100%) rename etcd_state_client.h => src/etcd_state_client.h (100%) rename fio_cluster.cpp => src/fio_cluster.cpp (100%) rename fio_engine.cpp => src/fio_engine.cpp (100%) rename fio_headers.h => src/fio_headers.h (100%) rename fio_sec_osd.cpp => src/fio_sec_osd.cpp (100%) rename http_client.cpp => src/http_client.cpp (100%) rename http_client.h => src/http_client.h (100%) rename malloc_or_die.h => src/malloc_or_die.h (100%) rename messenger.cpp => src/messenger.cpp (100%) rename messenger.h => src/messenger.h (100%) rename msgr_receive.cpp => src/msgr_receive.cpp (100%) rename msgr_send.cpp => src/msgr_send.cpp (100%) rename nbd_proxy.cpp => src/nbd_proxy.cpp (100%) rename object_id.h => src/object_id.h (100%) rename osd.cpp => src/osd.cpp (100%) rename osd.h => src/osd.h (100%) rename osd_cluster.cpp => src/osd_cluster.cpp (100%) rename osd_flush.cpp => src/osd_flush.cpp (100%) rename osd_id.h => src/osd_id.h (100%) rename osd_main.cpp => src/osd_main.cpp (100%) rename osd_ops.cpp => src/osd_ops.cpp (100%) rename osd_ops.h => src/osd_ops.h (100%) rename osd_peering.cpp => src/osd_peering.cpp (100%) rename osd_peering_pg.cpp => src/osd_peering_pg.cpp (100%) rename osd_peering_pg.h => src/osd_peering_pg.h (100%) rename osd_peering_pg_test.cpp => src/osd_peering_pg_test.cpp (100%) rename osd_primary.cpp => src/osd_primary.cpp (100%) rename osd_primary.h => src/osd_primary.h (100%) rename osd_primary_subops.cpp => src/osd_primary_subops.cpp (100%) rename osd_rmw.cpp => src/osd_rmw.cpp (100%) rename osd_rmw.h => src/osd_rmw.h (100%) rename osd_rmw_test.cpp => src/osd_rmw_test.cpp (100%) rename osd_secondary.cpp => src/osd_secondary.cpp (100%) rename osd_test.cpp => src/osd_test.cpp (100%) rename pg_states.cpp => src/pg_states.cpp (100%) rename pg_states.h => src/pg_states.h (100%) rename qemu_driver.c => src/qemu_driver.c (100%) rename qemu_proxy.cpp => src/qemu_proxy.cpp (100%) rename qemu_proxy.h => src/qemu_proxy.h (100%) rename ringloop.cpp => src/ringloop.cpp (100%) rename ringloop.h => src/ringloop.h (100%) rename rm_inode.cpp => src/rm_inode.cpp (100%) rename rw_blocking.cpp => src/rw_blocking.cpp (100%) rename rw_blocking.h => src/rw_blocking.h (100%) rename stub_bench.cpp => src/stub_bench.cpp (100%) rename stub_osd.cpp => src/stub_osd.cpp (100%) rename stub_uring_osd.cpp => src/stub_uring_osd.cpp (100%) rename test_allocator.cpp => src/test_allocator.cpp (100%) rename test_blockstore.cpp => src/test_blockstore.cpp (100%) rename test_pattern.h => src/test_pattern.h (100%) rename test_shit.cpp => src/test_shit.cpp (100%) rename timerfd_interval.cpp => src/timerfd_interval.cpp (100%) rename timerfd_interval.h => src/timerfd_interval.h (100%) rename timerfd_manager.cpp => src/timerfd_manager.cpp (100%) rename timerfd_manager.h => src/timerfd_manager.h (100%) rename xor.h => src/xor.h (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index db3622d00..83014777d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,187 +2,4 @@ cmake_minimum_required(VERSION 2.8) project(vitastor) -include(GNUInstallDirs) - -set(QEMU_PLUGINDIR qemu CACHE STRING "QEMU plugin directory suffix (qemu-kvm on RHEL)") -set(WITH_ASAN false CACHE BOOL "Build with AddressSanitizer") -if("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/local/?$") - if(EXISTS "/etc/debian_version") - set(CMAKE_INSTALL_LIBDIR "lib/${CMAKE_LIBRARY_ARCHITECTURE}") - endif() - set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") -endif() - -add_definitions(-DVERSION="0.6-dev") -add_definitions(-Wall -Wno-sign-compare -Wno-comment -Wno-parentheses -Wno-pointer-arith) -if (${WITH_ASAN}) - add_definitions(-fsanitize=address -fno-omit-frame-pointer) - add_link_options(-fsanitize=address -fno-omit-frame-pointer) -endif (${WITH_ASAN}) - -set(CMAKE_BUILD_TYPE RelWithDebInfo) -string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") -string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") -string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") -string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") -string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") -string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") -string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") -string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") -string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") -string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") -string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") -string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") - -find_package(PkgConfig) -pkg_check_modules(LIBURING REQUIRED liburing) -pkg_check_modules(GLIB REQUIRED glib-2.0) - -include_directories( - src - /usr/include/jerasure - ${LIBURING_INCLUDE_DIRS} -) - -# libvitastor_blk.so -add_library(vitastor_blk SHARED - allocator.cpp blockstore.cpp blockstore_impl.cpp blockstore_init.cpp blockstore_open.cpp blockstore_journal.cpp blockstore_read.cpp - blockstore_write.cpp blockstore_sync.cpp blockstore_stable.cpp blockstore_rollback.cpp blockstore_flush.cpp crc32c.c ringloop.cpp -) -target_link_libraries(vitastor_blk - ${LIBURING_LIBRARIES} - tcmalloc_minimal -) - -# libfio_vitastor_blk.so -add_library(fio_vitastor_blk SHARED - fio_engine.cpp - json11/json11.cpp -) -target_link_libraries(fio_vitastor_blk - vitastor_blk -) - -# vitastor-osd -add_executable(vitastor-osd - osd_main.cpp osd.cpp osd_secondary.cpp msgr_receive.cpp msgr_send.cpp osd_peering.cpp osd_flush.cpp osd_peering_pg.cpp - osd_primary.cpp osd_primary_subops.cpp etcd_state_client.cpp messenger.cpp osd_cluster.cpp http_client.cpp osd_ops.cpp pg_states.cpp - osd_rmw.cpp base64.cpp timerfd_manager.cpp epoll_manager.cpp json11/json11.cpp -) -target_link_libraries(vitastor-osd - vitastor_blk - Jerasure -) - -# libfio_vitastor_sec.so -add_library(fio_vitastor_sec SHARED - fio_sec_osd.cpp - rw_blocking.cpp -) -target_link_libraries(fio_vitastor_sec - tcmalloc_minimal -) - -# libvitastor_client.so -add_library(vitastor_client SHARED - cluster_client.cpp epoll_manager.cpp etcd_state_client.cpp - messenger.cpp msgr_send.cpp msgr_receive.cpp ringloop.cpp json11/json11.cpp - http_client.cpp osd_ops.cpp pg_states.cpp timerfd_manager.cpp base64.cpp -) -target_link_libraries(vitastor_client - tcmalloc_minimal - ${LIBURING_LIBRARIES} -) - -# libfio_vitastor.so -add_library(fio_vitastor SHARED - fio_cluster.cpp -) -target_link_libraries(fio_vitastor - vitastor_client -) - -# vitastor-nbd -add_executable(vitastor-nbd - nbd_proxy.cpp -) -target_link_libraries(vitastor-nbd - vitastor_client -) - -# vitastor-rm -add_executable(vitastor-rm - rm_inode.cpp -) -target_link_libraries(vitastor-rm - vitastor_client -) - -# vitastor-dump-journal -add_executable(vitastor-dump-journal - dump_journal.cpp crc32c.c -) - -# qemu_driver.so -add_library(qemu_proxy STATIC qemu_proxy.cpp) -target_compile_options(qemu_proxy PUBLIC -fPIC) -target_include_directories(qemu_proxy PUBLIC - qemu/b/qemu - qemu/include - ${GLIB_INCLUDE_DIRS} -) -target_link_libraries(qemu_proxy - vitastor_client -) -add_library(qemu_vitastor SHARED - qemu_driver.c -) -target_link_libraries(qemu_vitastor - qemu_proxy -) -set_target_properties(qemu_vitastor PROPERTIES - PREFIX "" - OUTPUT_NAME "block-vitastor" -) - -### Test stubs - -# stub_osd, stub_bench, osd_test -add_executable(stub_osd stub_osd.cpp rw_blocking.cpp) -target_link_libraries(stub_osd tcmalloc_minimal) -add_executable(stub_bench stub_bench.cpp rw_blocking.cpp) -target_link_libraries(stub_bench tcmalloc_minimal) -add_executable(osd_test osd_test.cpp rw_blocking.cpp) -target_link_libraries(osd_test tcmalloc_minimal) - -# osd_rmw_test -add_executable(osd_rmw_test osd_rmw_test.cpp allocator.cpp) -target_link_libraries(osd_rmw_test Jerasure tcmalloc_minimal) - -# stub_uring_osd -add_executable(stub_uring_osd - stub_uring_osd.cpp epoll_manager.cpp messenger.cpp msgr_send.cpp msgr_receive.cpp ringloop.cpp timerfd_manager.cpp json11/json11.cpp -) -target_link_libraries(stub_uring_osd - ${LIBURING_LIBRARIES} - tcmalloc_minimal -) - -# osd_peering_pg_test -add_executable(osd_peering_pg_test osd_peering_pg_test.cpp osd_peering_pg.cpp) -target_link_libraries(osd_peering_pg_test tcmalloc_minimal) - -# test_allocator -add_executable(test_allocator test_allocator.cpp allocator.cpp) - -## test_blockstore, test_shit -#add_executable(test_blockstore test_blockstore.cpp timerfd_interval.cpp) -#target_link_libraries(test_blockstore blockstore) -#add_executable(test_shit test_shit.cpp osd_peering_pg.cpp) -#target_link_libraries(test_shit ${LIBURING_LIBRARIES} m) - -### Install - -install(TARGETS vitastor-osd vitastor-dump-journal vitastor-nbd vitastor-rm RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(TARGETS fio_vitastor fio_vitastor_blk fio_vitastor_sec vitastor_blk vitastor_client LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) -install(TARGETS qemu_vitastor LIBRARY DESTINATION /usr/${CMAKE_INSTALL_LIBDIR}/${QEMU_PLUGINDIR}) +add_subdirectory(src) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 000000000..aa33e3958 --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,188 @@ +cmake_minimum_required(VERSION 2.8) + +project(vitastor) + +include(GNUInstallDirs) + +set(QEMU_PLUGINDIR qemu CACHE STRING "QEMU plugin directory suffix (qemu-kvm on RHEL)") +set(WITH_ASAN false CACHE BOOL "Build with AddressSanitizer") +if("${CMAKE_INSTALL_PREFIX}" MATCHES "^/usr/local/?$") + if(EXISTS "/etc/debian_version") + set(CMAKE_INSTALL_LIBDIR "lib/${CMAKE_LIBRARY_ARCHITECTURE}") + endif() + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") +endif() + +add_definitions(-DVERSION="0.6-dev") +add_definitions(-Wall -Wno-sign-compare -Wno-comment -Wno-parentheses -Wno-pointer-arith) +if (${WITH_ASAN}) + add_definitions(-fsanitize=address -fno-omit-frame-pointer) + add_link_options(-fsanitize=address -fno-omit-frame-pointer) +endif (${WITH_ASAN}) + +set(CMAKE_BUILD_TYPE RelWithDebInfo) +string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") +string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") +string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") +string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") +string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL}") +string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") +string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") +string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") +string(REGEX REPLACE "([\\/\\-]O)[12]?" "\\13" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") +string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") +string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL}") +string(REGEX REPLACE "([\\/\\-]D) *NDEBUG" "" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}") + +find_package(PkgConfig) +pkg_check_modules(LIBURING REQUIRED liburing) +pkg_check_modules(GLIB REQUIRED glib-2.0) + +include_directories( + ../ + /usr/include/jerasure + ${LIBURING_INCLUDE_DIRS} +) + +# libvitastor_blk.so +add_library(vitastor_blk SHARED + allocator.cpp blockstore.cpp blockstore_impl.cpp blockstore_init.cpp blockstore_open.cpp blockstore_journal.cpp blockstore_read.cpp + blockstore_write.cpp blockstore_sync.cpp blockstore_stable.cpp blockstore_rollback.cpp blockstore_flush.cpp crc32c.c ringloop.cpp +) +target_link_libraries(vitastor_blk + ${LIBURING_LIBRARIES} + tcmalloc_minimal +) + +# libfio_vitastor_blk.so +add_library(fio_vitastor_blk SHARED + fio_engine.cpp + ../json11/json11.cpp +) +target_link_libraries(fio_vitastor_blk + vitastor_blk +) + +# vitastor-osd +add_executable(vitastor-osd + osd_main.cpp osd.cpp osd_secondary.cpp msgr_receive.cpp msgr_send.cpp osd_peering.cpp osd_flush.cpp osd_peering_pg.cpp + osd_primary.cpp osd_primary_subops.cpp etcd_state_client.cpp messenger.cpp osd_cluster.cpp http_client.cpp osd_ops.cpp pg_states.cpp + osd_rmw.cpp base64.cpp timerfd_manager.cpp epoll_manager.cpp ../json11/json11.cpp +) +target_link_libraries(vitastor-osd + vitastor_blk + Jerasure +) + +# libfio_vitastor_sec.so +add_library(fio_vitastor_sec SHARED + fio_sec_osd.cpp + rw_blocking.cpp +) +target_link_libraries(fio_vitastor_sec + tcmalloc_minimal +) + +# libvitastor_client.so +add_library(vitastor_client SHARED + cluster_client.cpp epoll_manager.cpp etcd_state_client.cpp + messenger.cpp msgr_send.cpp msgr_receive.cpp ringloop.cpp ../json11/json11.cpp + http_client.cpp osd_ops.cpp pg_states.cpp timerfd_manager.cpp base64.cpp +) +target_link_libraries(vitastor_client + tcmalloc_minimal + ${LIBURING_LIBRARIES} +) + +# libfio_vitastor.so +add_library(fio_vitastor SHARED + fio_cluster.cpp +) +target_link_libraries(fio_vitastor + vitastor_client +) + +# vitastor-nbd +add_executable(vitastor-nbd + nbd_proxy.cpp +) +target_link_libraries(vitastor-nbd + vitastor_client +) + +# vitastor-rm +add_executable(vitastor-rm + rm_inode.cpp +) +target_link_libraries(vitastor-rm + vitastor_client +) + +# vitastor-dump-journal +add_executable(vitastor-dump-journal + dump_journal.cpp crc32c.c +) + +# qemu_driver.so +add_library(qemu_proxy STATIC qemu_proxy.cpp) +target_compile_options(qemu_proxy PUBLIC -fPIC) +target_include_directories(qemu_proxy PUBLIC + ../qemu/b/qemu + ../qemu/include + ${GLIB_INCLUDE_DIRS} +) +target_link_libraries(qemu_proxy + vitastor_client +) +add_library(qemu_vitastor SHARED + qemu_driver.c +) +target_link_libraries(qemu_vitastor + qemu_proxy +) +set_target_properties(qemu_vitastor PROPERTIES + PREFIX "" + OUTPUT_NAME "block-vitastor" +) + +### Test stubs + +# stub_osd, stub_bench, osd_test +add_executable(stub_osd stub_osd.cpp rw_blocking.cpp) +target_link_libraries(stub_osd tcmalloc_minimal) +add_executable(stub_bench stub_bench.cpp rw_blocking.cpp) +target_link_libraries(stub_bench tcmalloc_minimal) +add_executable(osd_test osd_test.cpp rw_blocking.cpp) +target_link_libraries(osd_test tcmalloc_minimal) + +# osd_rmw_test +add_executable(osd_rmw_test osd_rmw_test.cpp allocator.cpp) +target_link_libraries(osd_rmw_test Jerasure tcmalloc_minimal) + +# stub_uring_osd +add_executable(stub_uring_osd + stub_uring_osd.cpp epoll_manager.cpp messenger.cpp msgr_send.cpp msgr_receive.cpp ringloop.cpp timerfd_manager.cpp ../json11/json11.cpp +) +target_link_libraries(stub_uring_osd + ${LIBURING_LIBRARIES} + tcmalloc_minimal +) + +# osd_peering_pg_test +add_executable(osd_peering_pg_test osd_peering_pg_test.cpp osd_peering_pg.cpp) +target_link_libraries(osd_peering_pg_test tcmalloc_minimal) + +# test_allocator +add_executable(test_allocator test_allocator.cpp allocator.cpp) + +## test_blockstore, test_shit +#add_executable(test_blockstore test_blockstore.cpp timerfd_interval.cpp) +#target_link_libraries(test_blockstore blockstore) +#add_executable(test_shit test_shit.cpp osd_peering_pg.cpp) +#target_link_libraries(test_shit ${LIBURING_LIBRARIES} m) + +### Install + +install(TARGETS vitastor-osd vitastor-dump-journal vitastor-nbd vitastor-rm RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(TARGETS fio_vitastor fio_vitastor_blk fio_vitastor_sec vitastor_blk vitastor_client LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS qemu_vitastor LIBRARY DESTINATION /usr/${CMAKE_INSTALL_LIBDIR}/${QEMU_PLUGINDIR}) diff --git a/allocator.cpp b/src/allocator.cpp similarity index 100% rename from allocator.cpp rename to src/allocator.cpp diff --git a/allocator.h b/src/allocator.h similarity index 100% rename from allocator.h rename to src/allocator.h diff --git a/base64.cpp b/src/base64.cpp similarity index 100% rename from base64.cpp rename to src/base64.cpp diff --git a/base64.h b/src/base64.h similarity index 100% rename from base64.h rename to src/base64.h diff --git a/blockstore.cpp b/src/blockstore.cpp similarity index 100% rename from blockstore.cpp rename to src/blockstore.cpp diff --git a/blockstore.h b/src/blockstore.h similarity index 100% rename from blockstore.h rename to src/blockstore.h diff --git a/blockstore_flush.cpp b/src/blockstore_flush.cpp similarity index 100% rename from blockstore_flush.cpp rename to src/blockstore_flush.cpp diff --git a/blockstore_flush.h b/src/blockstore_flush.h similarity index 100% rename from blockstore_flush.h rename to src/blockstore_flush.h diff --git a/blockstore_impl.cpp b/src/blockstore_impl.cpp similarity index 100% rename from blockstore_impl.cpp rename to src/blockstore_impl.cpp diff --git a/blockstore_impl.h b/src/blockstore_impl.h similarity index 100% rename from blockstore_impl.h rename to src/blockstore_impl.h diff --git a/blockstore_init.cpp b/src/blockstore_init.cpp similarity index 100% rename from blockstore_init.cpp rename to src/blockstore_init.cpp diff --git a/blockstore_init.h b/src/blockstore_init.h similarity index 100% rename from blockstore_init.h rename to src/blockstore_init.h diff --git a/blockstore_journal.cpp b/src/blockstore_journal.cpp similarity index 100% rename from blockstore_journal.cpp rename to src/blockstore_journal.cpp diff --git a/blockstore_journal.h b/src/blockstore_journal.h similarity index 100% rename from blockstore_journal.h rename to src/blockstore_journal.h diff --git a/blockstore_open.cpp b/src/blockstore_open.cpp similarity index 100% rename from blockstore_open.cpp rename to src/blockstore_open.cpp diff --git a/blockstore_read.cpp b/src/blockstore_read.cpp similarity index 100% rename from blockstore_read.cpp rename to src/blockstore_read.cpp diff --git a/blockstore_rollback.cpp b/src/blockstore_rollback.cpp similarity index 100% rename from blockstore_rollback.cpp rename to src/blockstore_rollback.cpp diff --git a/blockstore_stable.cpp b/src/blockstore_stable.cpp similarity index 100% rename from blockstore_stable.cpp rename to src/blockstore_stable.cpp diff --git a/blockstore_sync.cpp b/src/blockstore_sync.cpp similarity index 100% rename from blockstore_sync.cpp rename to src/blockstore_sync.cpp diff --git a/blockstore_write.cpp b/src/blockstore_write.cpp similarity index 100% rename from blockstore_write.cpp rename to src/blockstore_write.cpp diff --git a/cluster_client.cpp b/src/cluster_client.cpp similarity index 100% rename from cluster_client.cpp rename to src/cluster_client.cpp diff --git a/cluster_client.h b/src/cluster_client.h similarity index 100% rename from cluster_client.h rename to src/cluster_client.h diff --git a/crc32c.c b/src/crc32c.c similarity index 100% rename from crc32c.c rename to src/crc32c.c diff --git a/crc32c.h b/src/crc32c.h similarity index 100% rename from crc32c.h rename to src/crc32c.h diff --git a/dump_journal.cpp b/src/dump_journal.cpp similarity index 100% rename from dump_journal.cpp rename to src/dump_journal.cpp diff --git a/epoll_manager.cpp b/src/epoll_manager.cpp similarity index 100% rename from epoll_manager.cpp rename to src/epoll_manager.cpp diff --git a/epoll_manager.h b/src/epoll_manager.h similarity index 100% rename from epoll_manager.h rename to src/epoll_manager.h diff --git a/etcd_state_client.cpp b/src/etcd_state_client.cpp similarity index 100% rename from etcd_state_client.cpp rename to src/etcd_state_client.cpp diff --git a/etcd_state_client.h b/src/etcd_state_client.h similarity index 100% rename from etcd_state_client.h rename to src/etcd_state_client.h diff --git a/fio_cluster.cpp b/src/fio_cluster.cpp similarity index 100% rename from fio_cluster.cpp rename to src/fio_cluster.cpp diff --git a/fio_engine.cpp b/src/fio_engine.cpp similarity index 100% rename from fio_engine.cpp rename to src/fio_engine.cpp diff --git a/fio_headers.h b/src/fio_headers.h similarity index 100% rename from fio_headers.h rename to src/fio_headers.h diff --git a/fio_sec_osd.cpp b/src/fio_sec_osd.cpp similarity index 100% rename from fio_sec_osd.cpp rename to src/fio_sec_osd.cpp diff --git a/http_client.cpp b/src/http_client.cpp similarity index 100% rename from http_client.cpp rename to src/http_client.cpp diff --git a/http_client.h b/src/http_client.h similarity index 100% rename from http_client.h rename to src/http_client.h diff --git a/malloc_or_die.h b/src/malloc_or_die.h similarity index 100% rename from malloc_or_die.h rename to src/malloc_or_die.h diff --git a/messenger.cpp b/src/messenger.cpp similarity index 100% rename from messenger.cpp rename to src/messenger.cpp diff --git a/messenger.h b/src/messenger.h similarity index 100% rename from messenger.h rename to src/messenger.h diff --git a/msgr_receive.cpp b/src/msgr_receive.cpp similarity index 100% rename from msgr_receive.cpp rename to src/msgr_receive.cpp diff --git a/msgr_send.cpp b/src/msgr_send.cpp similarity index 100% rename from msgr_send.cpp rename to src/msgr_send.cpp diff --git a/nbd_proxy.cpp b/src/nbd_proxy.cpp similarity index 100% rename from nbd_proxy.cpp rename to src/nbd_proxy.cpp diff --git a/object_id.h b/src/object_id.h similarity index 100% rename from object_id.h rename to src/object_id.h diff --git a/osd.cpp b/src/osd.cpp similarity index 100% rename from osd.cpp rename to src/osd.cpp diff --git a/osd.h b/src/osd.h similarity index 100% rename from osd.h rename to src/osd.h diff --git a/osd_cluster.cpp b/src/osd_cluster.cpp similarity index 100% rename from osd_cluster.cpp rename to src/osd_cluster.cpp diff --git a/osd_flush.cpp b/src/osd_flush.cpp similarity index 100% rename from osd_flush.cpp rename to src/osd_flush.cpp diff --git a/osd_id.h b/src/osd_id.h similarity index 100% rename from osd_id.h rename to src/osd_id.h diff --git a/osd_main.cpp b/src/osd_main.cpp similarity index 100% rename from osd_main.cpp rename to src/osd_main.cpp diff --git a/osd_ops.cpp b/src/osd_ops.cpp similarity index 100% rename from osd_ops.cpp rename to src/osd_ops.cpp diff --git a/osd_ops.h b/src/osd_ops.h similarity index 100% rename from osd_ops.h rename to src/osd_ops.h diff --git a/osd_peering.cpp b/src/osd_peering.cpp similarity index 100% rename from osd_peering.cpp rename to src/osd_peering.cpp diff --git a/osd_peering_pg.cpp b/src/osd_peering_pg.cpp similarity index 100% rename from osd_peering_pg.cpp rename to src/osd_peering_pg.cpp diff --git a/osd_peering_pg.h b/src/osd_peering_pg.h similarity index 100% rename from osd_peering_pg.h rename to src/osd_peering_pg.h diff --git a/osd_peering_pg_test.cpp b/src/osd_peering_pg_test.cpp similarity index 100% rename from osd_peering_pg_test.cpp rename to src/osd_peering_pg_test.cpp diff --git a/osd_primary.cpp b/src/osd_primary.cpp similarity index 100% rename from osd_primary.cpp rename to src/osd_primary.cpp diff --git a/osd_primary.h b/src/osd_primary.h similarity index 100% rename from osd_primary.h rename to src/osd_primary.h diff --git a/osd_primary_subops.cpp b/src/osd_primary_subops.cpp similarity index 100% rename from osd_primary_subops.cpp rename to src/osd_primary_subops.cpp diff --git a/osd_rmw.cpp b/src/osd_rmw.cpp similarity index 100% rename from osd_rmw.cpp rename to src/osd_rmw.cpp diff --git a/osd_rmw.h b/src/osd_rmw.h similarity index 100% rename from osd_rmw.h rename to src/osd_rmw.h diff --git a/osd_rmw_test.cpp b/src/osd_rmw_test.cpp similarity index 100% rename from osd_rmw_test.cpp rename to src/osd_rmw_test.cpp diff --git a/osd_secondary.cpp b/src/osd_secondary.cpp similarity index 100% rename from osd_secondary.cpp rename to src/osd_secondary.cpp diff --git a/osd_test.cpp b/src/osd_test.cpp similarity index 100% rename from osd_test.cpp rename to src/osd_test.cpp diff --git a/pg_states.cpp b/src/pg_states.cpp similarity index 100% rename from pg_states.cpp rename to src/pg_states.cpp diff --git a/pg_states.h b/src/pg_states.h similarity index 100% rename from pg_states.h rename to src/pg_states.h diff --git a/qemu_driver.c b/src/qemu_driver.c similarity index 100% rename from qemu_driver.c rename to src/qemu_driver.c diff --git a/qemu_proxy.cpp b/src/qemu_proxy.cpp similarity index 100% rename from qemu_proxy.cpp rename to src/qemu_proxy.cpp diff --git a/qemu_proxy.h b/src/qemu_proxy.h similarity index 100% rename from qemu_proxy.h rename to src/qemu_proxy.h diff --git a/ringloop.cpp b/src/ringloop.cpp similarity index 100% rename from ringloop.cpp rename to src/ringloop.cpp diff --git a/ringloop.h b/src/ringloop.h similarity index 100% rename from ringloop.h rename to src/ringloop.h diff --git a/rm_inode.cpp b/src/rm_inode.cpp similarity index 100% rename from rm_inode.cpp rename to src/rm_inode.cpp diff --git a/rw_blocking.cpp b/src/rw_blocking.cpp similarity index 100% rename from rw_blocking.cpp rename to src/rw_blocking.cpp diff --git a/rw_blocking.h b/src/rw_blocking.h similarity index 100% rename from rw_blocking.h rename to src/rw_blocking.h diff --git a/stub_bench.cpp b/src/stub_bench.cpp similarity index 100% rename from stub_bench.cpp rename to src/stub_bench.cpp diff --git a/stub_osd.cpp b/src/stub_osd.cpp similarity index 100% rename from stub_osd.cpp rename to src/stub_osd.cpp diff --git a/stub_uring_osd.cpp b/src/stub_uring_osd.cpp similarity index 100% rename from stub_uring_osd.cpp rename to src/stub_uring_osd.cpp diff --git a/test_allocator.cpp b/src/test_allocator.cpp similarity index 100% rename from test_allocator.cpp rename to src/test_allocator.cpp diff --git a/test_blockstore.cpp b/src/test_blockstore.cpp similarity index 100% rename from test_blockstore.cpp rename to src/test_blockstore.cpp diff --git a/test_pattern.h b/src/test_pattern.h similarity index 100% rename from test_pattern.h rename to src/test_pattern.h diff --git a/test_shit.cpp b/src/test_shit.cpp similarity index 100% rename from test_shit.cpp rename to src/test_shit.cpp diff --git a/timerfd_interval.cpp b/src/timerfd_interval.cpp similarity index 100% rename from timerfd_interval.cpp rename to src/timerfd_interval.cpp diff --git a/timerfd_interval.h b/src/timerfd_interval.h similarity index 100% rename from timerfd_interval.h rename to src/timerfd_interval.h diff --git a/timerfd_manager.cpp b/src/timerfd_manager.cpp similarity index 100% rename from timerfd_manager.cpp rename to src/timerfd_manager.cpp diff --git a/timerfd_manager.h b/src/timerfd_manager.h similarity index 100% rename from timerfd_manager.h rename to src/timerfd_manager.h diff --git a/xor.h b/src/xor.h similarity index 100% rename from xor.h rename to src/xor.h diff --git a/tests/test_write.sh b/tests/test_write.sh index 53112dbaf..4da0cfb37 100755 --- a/tests/test_write.sh +++ b/tests/test_write.sh @@ -6,11 +6,11 @@ dd if=/dev/zero of=./testdata/test_osd1.bin bs=1024 count=1 seek=$((1024*1024-1) dd if=/dev/zero of=./testdata/test_osd2.bin bs=1024 count=1 seek=$((1024*1024-1)) dd if=/dev/zero of=./testdata/test_osd3.bin bs=1024 count=1 seek=$((1024*1024-1)) -build/vitastor-osd --osd_num 1 --bind_address 127.0.0.1 --etcd_address $ETCD_URL $(node mon/simple-offsets.js --format options --device ./testdata/test_osd1.bin 2>/dev/null) &>./testdata/osd1.log & +build/src/vitastor-osd --osd_num 1 --bind_address 127.0.0.1 --etcd_address $ETCD_URL $(node mon/simple-offsets.js --format options --device ./testdata/test_osd1.bin 2>/dev/null) &>./testdata/osd1.log & OSD1_PID=$! -build/vitastor-osd --osd_num 2 --bind_address 127.0.0.1 --etcd_address $ETCD_URL $(node mon/simple-offsets.js --format options --device ./testdata/test_osd2.bin 2>/dev/null) &>./testdata/osd2.log & +build/src/vitastor-osd --osd_num 2 --bind_address 127.0.0.1 --etcd_address $ETCD_URL $(node mon/simple-offsets.js --format options --device ./testdata/test_osd2.bin 2>/dev/null) &>./testdata/osd2.log & OSD2_PID=$! -build/vitastor-osd --osd_num 3 --bind_address 127.0.0.1 --etcd_address $ETCD_URL $(node mon/simple-offsets.js --format options --device ./testdata/test_osd3.bin 2>/dev/null) &>./testdata/osd3.log & +build/src/vitastor-osd --osd_num 3 --bind_address 127.0.0.1 --etcd_address $ETCD_URL $(node mon/simple-offsets.js --format options --device ./testdata/test_osd3.bin 2>/dev/null) &>./testdata/osd3.log & OSD3_PID=$! cd mon @@ -38,9 +38,9 @@ echo leak:librbd >> testdata/lsan-suppress.txt echo leak:_M_mutate >> testdata/lsan-suppress.txt echo leak:_M_assign >> testdata/lsan-suppress.txt #LSAN_OPTIONS=suppressions=`pwd`/testdata/lsan-suppress.txt LD_PRELOAD=libasan.so.5 \ -# fio -thread -name=test -ioengine=build/libfio_vitastor_sec.so -bs=4k -fsync=128 `$ETCDCTL get /vitastor/osd/state/1 --print-value-only | jq -r '"-host="+.addresses[0]+" -port="+(.port|tostring)'` -rw=write -size=32M +# fio -thread -name=test -ioengine=build/src/libfio_vitastor_sec.so -bs=4k -fsync=128 `$ETCDCTL get /vitastor/osd/state/1 --print-value-only | jq -r '"-host="+.addresses[0]+" -port="+(.port|tostring)'` -rw=write -size=32M LSAN_OPTIONS=suppressions=`pwd`/testdata/lsan-suppress.txt LD_PRELOAD=libasan.so.5 \ - fio -thread -name=test -ioengine=build/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=1G -cluster_log_level=10 + fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=1G -cluster_log_level=10 format_green OK