diff --git a/.gitignore b/.gitignore index 155908104..5c0d927ad 100644 --- a/.gitignore +++ b/.gitignore @@ -3,16 +3,3 @@ package-lock.json fio qemu -osd -stub_osd -stub_uring_osd -stub_bench -osd_test -osd_peering_pg_test -dump_journal -nbd_proxy -rm_inode -test_allocator -test_blockstore -test_shit -osd_rmw_test diff --git a/copy-fio-includes.sh b/copy-fio-includes.sh index 715d2e986..0f51d755f 100755 --- a/copy-fio-includes.sh +++ b/copy-fio-includes.sh @@ -1,6 +1,6 @@ #!/bin/bash -gcc -I. -E -o fio_headers.i src/fio_headers.h +gcc -I. -E -o fio_headers.i src/util/fio_headers.h rm -rf fio-copy for i in `grep -Po 'fio/[^"]+' fio_headers.i | sort | uniq`; do diff --git a/copy-qemu-includes.sh b/copy-qemu-includes.sh index 6a39e2eda..96abd5682 100755 --- a/copy-qemu-includes.sh +++ b/copy-qemu-includes.sh @@ -5,7 +5,7 @@ #cd b/qemu; make qapi gcc -I qemu/b/qemu `pkg-config glib-2.0 --cflags` \ - -I qemu/include -E -o qemu_driver.i src/qemu_driver.c + -I qemu/include -E -o qemu_driver.i src/client/qemu_driver.c rm -rf qemu-copy for i in `grep -Po 'qemu/[^"]+' qemu_driver.i | sort | uniq`; do diff --git a/debian/patched-qemu.Dockerfile b/debian/patched-qemu.Dockerfile index 46bf931da..a901003da 100644 --- a/debian/patched-qemu.Dockerfile +++ b/debian/patched-qemu.Dockerfile @@ -27,7 +27,7 @@ RUN apt-get -y build-dep qemu RUN apt-get --download-only source qemu ADD patches /root/vitastor/patches -ADD src/qemu_driver.c /root/vitastor/src/qemu_driver.c +ADD src/client/qemu_driver.c /root/qemu_driver.c #RUN set -e; \ # apt-get install -y wget; \ @@ -52,7 +52,7 @@ RUN set -e; \ cd /root/packages/qemu-$REL/qemu-*/; \ quilt push -a; \ quilt add block/vitastor.c; \ - cp /root/vitastor/src/qemu_driver.c block/vitastor.c; \ + cp /root/qemu_driver.c block/vitastor.c; \ quilt refresh; \ V=$(head -n1 debian/changelog | perl -pe 's/5\.2\+dfsg-9/5.2+dfsg-11/; s/^.*\((.*?)(~bpo[\d\+]*)?\).*$/$1/')+vitastor4; \ if [ "$REL" = bullseye ]; then V=${V}bullseye; fi; \ diff --git a/docs/installation/source.en.md b/docs/installation/source.en.md index e47561ce3..6cb505378 100644 --- a/docs/installation/source.en.md +++ b/docs/installation/source.en.md @@ -41,7 +41,7 @@ It's recommended to build the QEMU driver (qemu_driver.c) in-tree, as a part of QEMU build process. To do that: - Install vitastor client library headers (from source or from vitastor-client-dev package) - Take a corresponding patch from `patches/qemu-*-vitastor.patch` and apply it to QEMU source -- Copy `src/qemu_driver.c` to QEMU source directory as `block/vitastor.c` +- Copy `src/client/qemu_driver.c` to QEMU source directory as `block/vitastor.c` - Build QEMU as usual But it is also possible to build it out-of-tree. To do that: diff --git a/docs/installation/source.ru.md b/docs/installation/source.ru.md index da7b79aa1..b9181d6d5 100644 --- a/docs/installation/source.ru.md +++ b/docs/installation/source.ru.md @@ -41,7 +41,7 @@ cmake .. && make -j8 install Драйвер QEMU (qemu_driver.c) рекомендуется собирать вместе с самим QEMU. Для этого: - Установите заголовки клиентской библиотеки Vitastor (из исходников или из пакета vitastor-client-dev) - Возьмите соответствующий патч из `patches/qemu-*-vitastor.patch` и примените его к исходникам QEMU -- Скопируйте [src/qemu_driver.c](../../src/qemu_driver.c) в директорию исходников QEMU как `block/vitastor.c` +- Скопируйте [src/client/qemu_driver.c](../../src/client/qemu_driver.c) в директорию исходников QEMU как `block/vitastor.c` - Соберите QEMU как обычно Однако в целях отладки драйвер также можно собирать отдельно от QEMU. Для этого: diff --git a/patches/qemu-make-patches.sh b/patches/qemu-make-patches.sh index 6a884e458..bd2d636c8 100755 --- a/patches/qemu-make-patches.sh +++ b/patches/qemu-make-patches.sh @@ -9,7 +9,7 @@ for i in "$DIR"/qemu-*-vitastor.patch "$DIR"/pve-qemu-*-vitastor.patch; do echo '===================================================================' >> $i echo '--- /dev/null' >> $i echo '+++ a/block/vitastor.c' >> $i - echo '@@ -0,0 +1,'$(wc -l "$DIR"/../src/qemu_driver.c | cut -d ' ' -f 1)' @@' >> $i - cat "$DIR"/../src/qemu_driver.c | sed 's/^/+/' >> $i + echo '@@ -0,0 +1,'$(wc -l "$DIR"/../src/client/qemu_driver.c | cut -d ' ' -f 1)' @@' >> $i + cat "$DIR"/../src/client/qemu_driver.c | sed 's/^/+/' >> $i fi done diff --git a/rpm/qemu-el8.Dockerfile b/rpm/qemu-el8.Dockerfile index 843e3f595..8d4db1a7b 100644 --- a/rpm/qemu-el8.Dockerfile +++ b/rpm/qemu-el8.Dockerfile @@ -1,5 +1,5 @@ # This is an attempt to automatically build patched RPM specs -# More or less broken, better use *.spec.patch for now (and copy src/qemu_driver.c to SOURCES/qemu-vitastor.c) +# More or less broken, better use *.spec.patch for now (and copy src/client/qemu_driver.c to SOURCES/qemu-vitastor.c) # Build packages for CentOS 8 inside a container # cd ..; podman build -t qemu-el8 -v `pwd`/packages:/root/packages -f rpm/qemu-el8.Dockerfile . diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 49c6a4617..b93016f15 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -72,300 +72,28 @@ add_dependencies(test build_tests) include_directories( ../ + ${CMAKE_SOURCE_DIR}/src/blockstore + ${CMAKE_SOURCE_DIR}/src/cli + ${CMAKE_SOURCE_DIR}/src/client + ${CMAKE_SOURCE_DIR}/src/disk_tool + ${CMAKE_SOURCE_DIR}/src/kv + ${CMAKE_SOURCE_DIR}/src/nfs + ${CMAKE_SOURCE_DIR}/src/osd + ${CMAKE_SOURCE_DIR}/src/test + ${CMAKE_SOURCE_DIR}/src/util /usr/include/jerasure ${LIBURING_INCLUDE_DIRS} ${IBVERBS_INCLUDE_DIRS} ) -# libvitastor_blk.so -add_library(vitastor_blk SHARED - allocator.cpp blockstore.cpp blockstore_impl.cpp blockstore_disk.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 - # for timerfd_manager - vitastor_common -) -set_target_properties(vitastor_blk PROPERTIES VERSION ${VERSION} SOVERSION 0) - -if (${WITH_FIO}) - # libfio_vitastor_blk.so - add_library(fio_vitastor_blk SHARED - fio_engine.cpp - ../json11/json11.cpp - ) - target_link_libraries(fio_vitastor_blk - vitastor_blk - ) -endif (${WITH_FIO}) - -# libvitastor_common.a -set(MSGR_RDMA "") -if (IBVERBS_LIBRARIES) - set(MSGR_RDMA "msgr_rdma.cpp") -endif (IBVERBS_LIBRARIES) -add_library(vitastor_common STATIC - epoll_manager.cpp etcd_state_client.cpp messenger.cpp addr_util.cpp - msgr_stop.cpp msgr_op.cpp msgr_send.cpp msgr_receive.cpp ringloop.cpp ../json11/json11.cpp - http_client.cpp osd_ops.cpp pg_states.cpp timerfd_manager.cpp str_util.cpp ${MSGR_RDMA} -) -target_compile_options(vitastor_common PUBLIC -fPIC) - -# vitastor-osd -add_executable(vitastor-osd - osd_main.cpp osd.cpp osd_secondary.cpp osd_peering.cpp osd_flush.cpp osd_peering_pg.cpp - osd_primary.cpp osd_primary_chain.cpp osd_primary_sync.cpp osd_primary_write.cpp osd_primary_subops.cpp - osd_cluster.cpp osd_rmw.cpp osd_scrub.cpp osd_primary_describe.cpp -) -target_link_libraries(vitastor-osd - vitastor_common - vitastor_blk - Jerasure - ${ISAL_LIBRARIES} - ${IBVERBS_LIBRARIES} -) - -if (${WITH_FIO}) - # libfio_vitastor_sec.so - add_library(fio_vitastor_sec SHARED - fio_sec_osd.cpp - rw_blocking.cpp - addr_util.cpp - ) - target_link_libraries(fio_vitastor_sec - tcmalloc_minimal - ) -endif (${WITH_FIO}) - -# libvitastor_client.so -add_library(vitastor_client SHARED - cluster_client.cpp - cluster_client_list.cpp - cluster_client_wb.cpp - vitastor_c.cpp - cli_common.cpp - cli_alloc_osd.cpp - cli_status.cpp - cli_describe.cpp - cli_fix.cpp - cli_ls.cpp - cli_create.cpp - cli_modify.cpp - cli_flatten.cpp - cli_merge.cpp - cli_rm_data.cpp - cli_rm.cpp - cli_rm_osd.cpp - cli_pool_cfg.cpp - cli_pool_create.cpp - cli_pool_ls.cpp - cli_pool_modify.cpp - cli_pool_rm.cpp -) -set_target_properties(vitastor_client PROPERTIES PUBLIC_HEADER "vitastor_c.h") -target_link_libraries(vitastor_client - vitastor_common - ${LIBURING_LIBRARIES} - ${IBVERBS_LIBRARIES} -) -set_target_properties(vitastor_client PROPERTIES VERSION ${VERSION} SOVERSION 0) - -if (${WITH_FIO}) - # libfio_vitastor.so - add_library(fio_vitastor SHARED - fio_cluster.cpp - ) - target_link_libraries(fio_vitastor - vitastor_client - ) -endif (${WITH_FIO}) - -# vitastor-nbd -pkg_check_modules(NL3 libnl-3.0 libnl-genl-3.0) -add_executable(vitastor-nbd - nbd_proxy.cpp -) -target_include_directories(vitastor-nbd PUBLIC ${NL3_INCLUDE_DIRS}) -target_link_libraries(vitastor-nbd vitastor_client ${NL3_LIBRARIES}) -if (HAVE_NBD_NETLINK_H AND NL3_LIBRARIES) - target_compile_definitions(vitastor-nbd PUBLIC HAVE_NBD_NETLINK_H) -endif (HAVE_NBD_NETLINK_H AND NL3_LIBRARIES) - -# libvitastor_kv.so -add_library(vitastor_kv SHARED - kv_db.cpp -) -set_target_properties(vitastor_kv PROPERTIES PUBLIC_HEADER "vitastor_kv.h") -target_link_libraries(vitastor_kv - vitastor_client -) -set_target_properties(vitastor_kv PROPERTIES VERSION ${VERSION} SOVERSION 0) - -# vitastor-kv -add_executable(vitastor-kv - kv_cli.cpp -) -target_link_libraries(vitastor-kv - vitastor_kv -) - -add_executable(vitastor-kv-stress - kv_stress.cpp -) -target_link_libraries(vitastor-kv-stress - vitastor_kv -) - -# vitastor-nfs -add_executable(vitastor-nfs - nfs_proxy.cpp - nfs_block.cpp - nfs_kv.cpp - nfs_kv_create.cpp - nfs_kv_getattr.cpp - nfs_kv_link.cpp - nfs_kv_lookup.cpp - nfs_kv_read.cpp - nfs_kv_readdir.cpp - nfs_kv_remove.cpp - nfs_kv_rename.cpp - nfs_kv_setattr.cpp - nfs_kv_write.cpp - nfs_fsstat.cpp - nfs_mount.cpp - nfs_portmap.cpp - sha256.c - nfs/xdr_impl.cpp - nfs/rpc_xdr.cpp - nfs/portmap_xdr.cpp - nfs/nfs_xdr.cpp -) -target_link_libraries(vitastor-nfs - vitastor_client - vitastor_kv -) - -# vitastor-cli -add_executable(vitastor-cli - cli.cpp -) -target_link_libraries(vitastor-cli - vitastor_client -) -configure_file(vitastor.pc.in vitastor.pc @ONLY) - -# vitastor-disk -add_executable(vitastor-disk - disk_tool.cpp disk_simple_offsets.cpp - disk_tool_journal.cpp disk_tool_meta.cpp disk_tool_prepare.cpp disk_tool_resize.cpp disk_tool_udev.cpp disk_tool_utils.cpp disk_tool_upgrade.cpp - crc32c.c str_util.cpp ../json11/json11.cpp rw_blocking.cpp allocator.cpp ringloop.cpp blockstore_disk.cpp -) -target_link_libraries(vitastor-disk - tcmalloc_minimal - ${LIBURING_LIBRARIES} -) - -if (${WITH_QEMU}) - # qemu_driver.so - add_library(qemu_vitastor SHARED - qemu_driver.c - ) - target_compile_options(qemu_vitastor PUBLIC -DVITASTOR_SOURCE_TREE) - target_include_directories(qemu_vitastor PUBLIC - ../qemu/b/qemu - ../qemu/include - ${GLIB_INCLUDE_DIRS} - ) - target_link_libraries(qemu_vitastor - vitastor_client - ) - set_target_properties(qemu_vitastor PROPERTIES - PREFIX "" - OUTPUT_NAME "block-vitastor" - ) -endif (${WITH_QEMU}) - -### Test stubs - -# stub_osd, stub_bench, osd_test -add_executable(stub_osd stub_osd.cpp rw_blocking.cpp addr_util.cpp) -target_link_libraries(stub_osd tcmalloc_minimal) -add_executable(stub_bench stub_bench.cpp rw_blocking.cpp addr_util.cpp) -target_link_libraries(stub_bench tcmalloc_minimal) -add_executable(osd_test osd_test.cpp rw_blocking.cpp addr_util.cpp) -target_link_libraries(osd_test tcmalloc_minimal) - -# osd_rmw_test -add_executable(osd_rmw_test EXCLUDE_FROM_ALL osd_rmw_test.cpp allocator.cpp) -target_link_libraries(osd_rmw_test Jerasure ${ISAL_LIBRARIES} tcmalloc_minimal) -add_dependencies(build_tests osd_rmw_test) -add_test(NAME osd_rmw_test COMMAND osd_rmw_test) - -if (ISAL_LIBRARIES) - add_executable(osd_rmw_test_je EXCLUDE_FROM_ALL osd_rmw_test.cpp allocator.cpp) - target_compile_definitions(osd_rmw_test_je PUBLIC -DNO_ISAL) - target_link_libraries(osd_rmw_test_je Jerasure tcmalloc_minimal) - add_dependencies(build_tests osd_rmw_test_je) - add_test(NAME osd_rmw_test_jerasure COMMAND osd_rmw_test_je) -endif (ISAL_LIBRARIES) - -# stub_uring_osd -add_executable(stub_uring_osd - stub_uring_osd.cpp -) -target_link_libraries(stub_uring_osd - vitastor_common - ${LIBURING_LIBRARIES} - ${IBVERBS_LIBRARIES} - tcmalloc_minimal -) - -# osd_peering_pg_test -add_executable(osd_peering_pg_test EXCLUDE_FROM_ALL osd_peering_pg_test.cpp osd_peering_pg.cpp) -target_link_libraries(osd_peering_pg_test tcmalloc_minimal) -add_dependencies(build_tests osd_peering_pg_test) -add_test(NAME osd_peering_pg_test COMMAND osd_peering_pg_test) - -# test_allocator -add_executable(test_allocator EXCLUDE_FROM_ALL test_allocator.cpp allocator.cpp) -add_dependencies(build_tests test_allocator) -add_test(NAME test_allocator COMMAND test_allocator) - -# test_cas -add_executable(test_cas - test_cas.cpp -) -target_link_libraries(test_cas - vitastor_client -) - -# test_crc32 -add_executable(test_crc32 - test_crc32.cpp -) -target_link_libraries(test_crc32 - vitastor_blk -) - -# test_cluster_client -add_executable(test_cluster_client - EXCLUDE_FROM_ALL - test_cluster_client.cpp - pg_states.cpp osd_ops.cpp cluster_client.cpp cluster_client_list.cpp cluster_client_wb.cpp msgr_op.cpp mock/messenger.cpp msgr_stop.cpp - etcd_state_client.cpp timerfd_manager.cpp str_util.cpp ../json11/json11.cpp -) -target_compile_definitions(test_cluster_client PUBLIC -D__MOCK__) -target_include_directories(test_cluster_client PUBLIC ${CMAKE_SOURCE_DIR}/src/mock) -add_dependencies(build_tests test_cluster_client) -add_test(NAME test_cluster_client COMMAND test_cluster_client) - -## test_blockstore, test_shit -#add_executable(test_blockstore test_blockstore.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) +add_subdirectory(blockstore) +add_subdirectory(cli) +add_subdirectory(client) +add_subdirectory(disk_tool) +add_subdirectory(kv) +add_subdirectory(nfs) +add_subdirectory(osd) +add_subdirectory(test) ### Install diff --git a/src/blockstore/CMakeLists.txt b/src/blockstore/CMakeLists.txt new file mode 100644 index 000000000..ffda1a3e5 --- /dev/null +++ b/src/blockstore/CMakeLists.txt @@ -0,0 +1,27 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(vitastor) + +# libvitastor_blk.so +add_library(vitastor_blk SHARED + ../util/allocator.cpp blockstore.cpp blockstore_impl.cpp blockstore_disk.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 ../util/crc32c.c ../util/ringloop.cpp +) +target_link_libraries(vitastor_blk + ${LIBURING_LIBRARIES} + tcmalloc_minimal + # for timerfd_manager + vitastor_common +) +set_target_properties(vitastor_blk PROPERTIES VERSION ${VERSION} SOVERSION 0) + +if (${WITH_FIO}) + # libfio_vitastor_blk.so + add_library(fio_vitastor_blk SHARED + fio_engine.cpp + ../../json11/json11.cpp + ) + target_link_libraries(fio_vitastor_blk + vitastor_blk + ) +endif (${WITH_FIO}) diff --git a/src/blockstore.cpp b/src/blockstore/blockstore.cpp similarity index 100% rename from src/blockstore.cpp rename to src/blockstore/blockstore.cpp diff --git a/src/blockstore.h b/src/blockstore/blockstore.h similarity index 100% rename from src/blockstore.h rename to src/blockstore/blockstore.h diff --git a/src/blockstore_disk.cpp b/src/blockstore/blockstore_disk.cpp similarity index 100% rename from src/blockstore_disk.cpp rename to src/blockstore/blockstore_disk.cpp diff --git a/src/blockstore_disk.h b/src/blockstore/blockstore_disk.h similarity index 100% rename from src/blockstore_disk.h rename to src/blockstore/blockstore_disk.h diff --git a/src/blockstore_flush.cpp b/src/blockstore/blockstore_flush.cpp similarity index 100% rename from src/blockstore_flush.cpp rename to src/blockstore/blockstore_flush.cpp diff --git a/src/blockstore_flush.h b/src/blockstore/blockstore_flush.h similarity index 100% rename from src/blockstore_flush.h rename to src/blockstore/blockstore_flush.h diff --git a/src/blockstore_impl.cpp b/src/blockstore/blockstore_impl.cpp similarity index 100% rename from src/blockstore_impl.cpp rename to src/blockstore/blockstore_impl.cpp diff --git a/src/blockstore_impl.h b/src/blockstore/blockstore_impl.h similarity index 100% rename from src/blockstore_impl.h rename to src/blockstore/blockstore_impl.h diff --git a/src/blockstore_init.cpp b/src/blockstore/blockstore_init.cpp similarity index 100% rename from src/blockstore_init.cpp rename to src/blockstore/blockstore_init.cpp diff --git a/src/blockstore_init.h b/src/blockstore/blockstore_init.h similarity index 100% rename from src/blockstore_init.h rename to src/blockstore/blockstore_init.h diff --git a/src/blockstore_journal.cpp b/src/blockstore/blockstore_journal.cpp similarity index 100% rename from src/blockstore_journal.cpp rename to src/blockstore/blockstore_journal.cpp diff --git a/src/blockstore_journal.h b/src/blockstore/blockstore_journal.h similarity index 100% rename from src/blockstore_journal.h rename to src/blockstore/blockstore_journal.h diff --git a/src/blockstore_open.cpp b/src/blockstore/blockstore_open.cpp similarity index 100% rename from src/blockstore_open.cpp rename to src/blockstore/blockstore_open.cpp diff --git a/src/blockstore_read.cpp b/src/blockstore/blockstore_read.cpp similarity index 100% rename from src/blockstore_read.cpp rename to src/blockstore/blockstore_read.cpp diff --git a/src/blockstore_rollback.cpp b/src/blockstore/blockstore_rollback.cpp similarity index 100% rename from src/blockstore_rollback.cpp rename to src/blockstore/blockstore_rollback.cpp diff --git a/src/blockstore_stable.cpp b/src/blockstore/blockstore_stable.cpp similarity index 100% rename from src/blockstore_stable.cpp rename to src/blockstore/blockstore_stable.cpp diff --git a/src/blockstore_sync.cpp b/src/blockstore/blockstore_sync.cpp similarity index 100% rename from src/blockstore_sync.cpp rename to src/blockstore/blockstore_sync.cpp diff --git a/src/blockstore_write.cpp b/src/blockstore/blockstore_write.cpp similarity index 100% rename from src/blockstore_write.cpp rename to src/blockstore/blockstore_write.cpp diff --git a/src/fio_engine.cpp b/src/blockstore/fio_engine.cpp similarity index 100% rename from src/fio_engine.cpp rename to src/blockstore/fio_engine.cpp diff --git a/src/cli/CMakeLists.txt b/src/cli/CMakeLists.txt new file mode 100644 index 000000000..c81d54bd3 --- /dev/null +++ b/src/cli/CMakeLists.txt @@ -0,0 +1,34 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(vitastor) + +# libvitastor_cli.a +add_library(vitastor_cli STATIC + cli_common.cpp + cli_alloc_osd.cpp + cli_status.cpp + cli_describe.cpp + cli_fix.cpp + cli_ls.cpp + cli_create.cpp + cli_modify.cpp + cli_flatten.cpp + cli_merge.cpp + cli_rm_data.cpp + cli_rm.cpp + cli_rm_osd.cpp + cli_pool_cfg.cpp + cli_pool_create.cpp + cli_pool_ls.cpp + cli_pool_modify.cpp + cli_pool_rm.cpp +) +target_compile_options(vitastor_cli PUBLIC -fPIC) + +# vitastor-cli +add_executable(vitastor-cli + cli.cpp +) +target_link_libraries(vitastor-cli + vitastor_client +) diff --git a/src/cli.cpp b/src/cli/cli.cpp similarity index 100% rename from src/cli.cpp rename to src/cli/cli.cpp diff --git a/src/cli.h b/src/cli/cli.h similarity index 100% rename from src/cli.h rename to src/cli/cli.h diff --git a/src/cli_alloc_osd.cpp b/src/cli/cli_alloc_osd.cpp similarity index 100% rename from src/cli_alloc_osd.cpp rename to src/cli/cli_alloc_osd.cpp diff --git a/src/cli_common.cpp b/src/cli/cli_common.cpp similarity index 100% rename from src/cli_common.cpp rename to src/cli/cli_common.cpp diff --git a/src/cli_create.cpp b/src/cli/cli_create.cpp similarity index 100% rename from src/cli_create.cpp rename to src/cli/cli_create.cpp diff --git a/src/cli_describe.cpp b/src/cli/cli_describe.cpp similarity index 100% rename from src/cli_describe.cpp rename to src/cli/cli_describe.cpp diff --git a/src/cli_fix.cpp b/src/cli/cli_fix.cpp similarity index 100% rename from src/cli_fix.cpp rename to src/cli/cli_fix.cpp diff --git a/src/cli_fix.h b/src/cli/cli_fix.h similarity index 100% rename from src/cli_fix.h rename to src/cli/cli_fix.h diff --git a/src/cli_flatten.cpp b/src/cli/cli_flatten.cpp similarity index 100% rename from src/cli_flatten.cpp rename to src/cli/cli_flatten.cpp diff --git a/src/cli_ls.cpp b/src/cli/cli_ls.cpp similarity index 100% rename from src/cli_ls.cpp rename to src/cli/cli_ls.cpp diff --git a/src/cli_merge.cpp b/src/cli/cli_merge.cpp similarity index 100% rename from src/cli_merge.cpp rename to src/cli/cli_merge.cpp diff --git a/src/cli_modify.cpp b/src/cli/cli_modify.cpp similarity index 100% rename from src/cli_modify.cpp rename to src/cli/cli_modify.cpp diff --git a/src/cli_pool_cfg.cpp b/src/cli/cli_pool_cfg.cpp similarity index 100% rename from src/cli_pool_cfg.cpp rename to src/cli/cli_pool_cfg.cpp diff --git a/src/cli_pool_cfg.h b/src/cli/cli_pool_cfg.h similarity index 100% rename from src/cli_pool_cfg.h rename to src/cli/cli_pool_cfg.h diff --git a/src/cli_pool_create.cpp b/src/cli/cli_pool_create.cpp similarity index 100% rename from src/cli_pool_create.cpp rename to src/cli/cli_pool_create.cpp diff --git a/src/cli_pool_ls.cpp b/src/cli/cli_pool_ls.cpp similarity index 100% rename from src/cli_pool_ls.cpp rename to src/cli/cli_pool_ls.cpp diff --git a/src/cli_pool_modify.cpp b/src/cli/cli_pool_modify.cpp similarity index 100% rename from src/cli_pool_modify.cpp rename to src/cli/cli_pool_modify.cpp diff --git a/src/cli_pool_rm.cpp b/src/cli/cli_pool_rm.cpp similarity index 100% rename from src/cli_pool_rm.cpp rename to src/cli/cli_pool_rm.cpp diff --git a/src/cli_rm.cpp b/src/cli/cli_rm.cpp similarity index 100% rename from src/cli_rm.cpp rename to src/cli/cli_rm.cpp diff --git a/src/cli_rm_data.cpp b/src/cli/cli_rm_data.cpp similarity index 100% rename from src/cli_rm_data.cpp rename to src/cli/cli_rm_data.cpp diff --git a/src/cli_rm_osd.cpp b/src/cli/cli_rm_osd.cpp similarity index 100% rename from src/cli_rm_osd.cpp rename to src/cli/cli_rm_osd.cpp diff --git a/src/cli_status.cpp b/src/cli/cli_status.cpp similarity index 100% rename from src/cli_status.cpp rename to src/cli/cli_status.cpp diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt new file mode 100644 index 000000000..6433aebc3 --- /dev/null +++ b/src/client/CMakeLists.txt @@ -0,0 +1,95 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(vitastor) + +# libvitastor_common.a +set(MSGR_RDMA "") +if (IBVERBS_LIBRARIES) + set(MSGR_RDMA "msgr_rdma.cpp") +endif (IBVERBS_LIBRARIES) +add_library(vitastor_common STATIC + ../util/epoll_manager.cpp etcd_state_client.cpp messenger.cpp ../util/addr_util.cpp + msgr_stop.cpp msgr_op.cpp msgr_send.cpp msgr_receive.cpp ../util/ringloop.cpp ../../json11/json11.cpp + http_client.cpp osd_ops.cpp pg_states.cpp ../util/timerfd_manager.cpp ../util/str_util.cpp ${MSGR_RDMA} +) +target_compile_options(vitastor_common PUBLIC -fPIC) + +# libvitastor_client.so +add_library(vitastor_client SHARED + cluster_client.cpp + cluster_client_list.cpp + cluster_client_wb.cpp + vitastor_c.cpp +) +set_target_properties(vitastor_client PROPERTIES PUBLIC_HEADER "vitastor_c.h") +target_link_libraries(vitastor_client + vitastor_common + vitastor_cli + ${LIBURING_LIBRARIES} + ${IBVERBS_LIBRARIES} +) +set_target_properties(vitastor_client PROPERTIES VERSION ${VERSION} SOVERSION 0) +configure_file(vitastor.pc.in vitastor.pc @ONLY) + +if (${WITH_FIO}) + # libfio_vitastor.so + add_library(fio_vitastor SHARED + fio_cluster.cpp + ) + target_link_libraries(fio_vitastor + vitastor_client + ) + + # libfio_vitastor_sec.so + add_library(fio_vitastor_sec SHARED + fio_sec_osd.cpp + ../util/rw_blocking.cpp + ../util/addr_util.cpp + ) + target_link_libraries(fio_vitastor_sec + tcmalloc_minimal + ) +endif (${WITH_FIO}) + +# vitastor-nbd +pkg_check_modules(NL3 libnl-3.0 libnl-genl-3.0) +add_executable(vitastor-nbd + nbd_proxy.cpp +) +target_include_directories(vitastor-nbd PUBLIC ${NL3_INCLUDE_DIRS}) +target_link_libraries(vitastor-nbd vitastor_client ${NL3_LIBRARIES}) +if (HAVE_NBD_NETLINK_H AND NL3_LIBRARIES) + target_compile_definitions(vitastor-nbd PUBLIC HAVE_NBD_NETLINK_H) +endif (HAVE_NBD_NETLINK_H AND NL3_LIBRARIES) + +if (${WITH_QEMU}) + # qemu_driver.so + add_library(qemu_vitastor SHARED + qemu_driver.c + ) + target_compile_options(qemu_vitastor PUBLIC -DVITASTOR_SOURCE_TREE) + target_include_directories(qemu_vitastor PUBLIC + ../../qemu/b/qemu + ../../qemu/include + ${GLIB_INCLUDE_DIRS} + ) + target_link_libraries(qemu_vitastor + vitastor_client + ) + set_target_properties(qemu_vitastor PROPERTIES + PREFIX "" + OUTPUT_NAME "block-vitastor" + ) +endif (${WITH_QEMU}) + +# test_cluster_client +add_executable(test_cluster_client + EXCLUDE_FROM_ALL + ../test/test_cluster_client.cpp + pg_states.cpp osd_ops.cpp cluster_client.cpp cluster_client_list.cpp cluster_client_wb.cpp msgr_op.cpp ../test/mock/messenger.cpp msgr_stop.cpp + etcd_state_client.cpp ../util/timerfd_manager.cpp ../util/str_util.cpp ../../json11/json11.cpp +) +target_compile_definitions(test_cluster_client PUBLIC -D__MOCK__) +target_include_directories(test_cluster_client BEFORE PUBLIC ${CMAKE_SOURCE_DIR}/src/test/mock) +add_dependencies(build_tests test_cluster_client) +add_test(NAME test_cluster_client COMMAND test_cluster_client) diff --git a/src/cluster_client.cpp b/src/client/cluster_client.cpp similarity index 100% rename from src/cluster_client.cpp rename to src/client/cluster_client.cpp diff --git a/src/cluster_client.h b/src/client/cluster_client.h similarity index 100% rename from src/cluster_client.h rename to src/client/cluster_client.h diff --git a/src/cluster_client_impl.h b/src/client/cluster_client_impl.h similarity index 100% rename from src/cluster_client_impl.h rename to src/client/cluster_client_impl.h diff --git a/src/cluster_client_list.cpp b/src/client/cluster_client_list.cpp similarity index 100% rename from src/cluster_client_list.cpp rename to src/client/cluster_client_list.cpp diff --git a/src/cluster_client_wb.cpp b/src/client/cluster_client_wb.cpp similarity index 100% rename from src/cluster_client_wb.cpp rename to src/client/cluster_client_wb.cpp diff --git a/src/etcd_state_client.cpp b/src/client/etcd_state_client.cpp similarity index 100% rename from src/etcd_state_client.cpp rename to src/client/etcd_state_client.cpp diff --git a/src/etcd_state_client.h b/src/client/etcd_state_client.h similarity index 100% rename from src/etcd_state_client.h rename to src/client/etcd_state_client.h diff --git a/src/fio_cluster.cpp b/src/client/fio_cluster.cpp similarity index 100% rename from src/fio_cluster.cpp rename to src/client/fio_cluster.cpp diff --git a/src/fio_sec_osd.cpp b/src/client/fio_sec_osd.cpp similarity index 100% rename from src/fio_sec_osd.cpp rename to src/client/fio_sec_osd.cpp diff --git a/src/http_client.cpp b/src/client/http_client.cpp similarity index 100% rename from src/http_client.cpp rename to src/client/http_client.cpp diff --git a/src/http_client.h b/src/client/http_client.h similarity index 100% rename from src/http_client.h rename to src/client/http_client.h diff --git a/src/messenger.cpp b/src/client/messenger.cpp similarity index 100% rename from src/messenger.cpp rename to src/client/messenger.cpp diff --git a/src/messenger.h b/src/client/messenger.h similarity index 100% rename from src/messenger.h rename to src/client/messenger.h diff --git a/src/msgr_op.cpp b/src/client/msgr_op.cpp similarity index 100% rename from src/msgr_op.cpp rename to src/client/msgr_op.cpp diff --git a/src/msgr_op.h b/src/client/msgr_op.h similarity index 100% rename from src/msgr_op.h rename to src/client/msgr_op.h diff --git a/src/msgr_rdma.cpp b/src/client/msgr_rdma.cpp similarity index 100% rename from src/msgr_rdma.cpp rename to src/client/msgr_rdma.cpp diff --git a/src/msgr_rdma.h b/src/client/msgr_rdma.h similarity index 100% rename from src/msgr_rdma.h rename to src/client/msgr_rdma.h diff --git a/src/msgr_receive.cpp b/src/client/msgr_receive.cpp similarity index 100% rename from src/msgr_receive.cpp rename to src/client/msgr_receive.cpp diff --git a/src/msgr_send.cpp b/src/client/msgr_send.cpp similarity index 100% rename from src/msgr_send.cpp rename to src/client/msgr_send.cpp diff --git a/src/msgr_stop.cpp b/src/client/msgr_stop.cpp similarity index 100% rename from src/msgr_stop.cpp rename to src/client/msgr_stop.cpp diff --git a/src/nbd_proxy.cpp b/src/client/nbd_proxy.cpp similarity index 100% rename from src/nbd_proxy.cpp rename to src/client/nbd_proxy.cpp diff --git a/src/object_id.h b/src/client/object_id.h similarity index 100% rename from src/object_id.h rename to src/client/object_id.h diff --git a/src/osd_ops.cpp b/src/client/osd_ops.cpp similarity index 100% rename from src/osd_ops.cpp rename to src/client/osd_ops.cpp diff --git a/src/osd_ops.h b/src/client/osd_ops.h similarity index 100% rename from src/osd_ops.h rename to src/client/osd_ops.h diff --git a/src/pg_states.cpp b/src/client/pg_states.cpp similarity index 100% rename from src/pg_states.cpp rename to src/client/pg_states.cpp diff --git a/src/pg_states.h b/src/client/pg_states.h similarity index 100% rename from src/pg_states.h rename to src/client/pg_states.h diff --git a/src/qemu_driver.c b/src/client/qemu_driver.c similarity index 100% rename from src/qemu_driver.c rename to src/client/qemu_driver.c diff --git a/src/vitastor.pc.in b/src/client/vitastor.pc.in similarity index 100% rename from src/vitastor.pc.in rename to src/client/vitastor.pc.in diff --git a/src/vitastor_c.cpp b/src/client/vitastor_c.cpp similarity index 100% rename from src/vitastor_c.cpp rename to src/client/vitastor_c.cpp diff --git a/src/vitastor_c.h b/src/client/vitastor_c.h similarity index 100% rename from src/vitastor_c.h rename to src/client/vitastor_c.h diff --git a/src/disk_tool/CMakeLists.txt b/src/disk_tool/CMakeLists.txt new file mode 100644 index 000000000..bb1689b47 --- /dev/null +++ b/src/disk_tool/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(vitastor) + +# vitastor-disk +add_executable(vitastor-disk + disk_tool.cpp disk_simple_offsets.cpp + disk_tool_journal.cpp disk_tool_meta.cpp disk_tool_prepare.cpp disk_tool_resize.cpp disk_tool_udev.cpp disk_tool_utils.cpp disk_tool_upgrade.cpp + ../util/crc32c.c ../util/str_util.cpp ../../json11/json11.cpp ../util/rw_blocking.cpp ../util/allocator.cpp ../util/ringloop.cpp ../blockstore/blockstore_disk.cpp +) +target_link_libraries(vitastor-disk + tcmalloc_minimal + ${LIBURING_LIBRARIES} +) diff --git a/src/disk_simple_offsets.cpp b/src/disk_tool/disk_simple_offsets.cpp similarity index 100% rename from src/disk_simple_offsets.cpp rename to src/disk_tool/disk_simple_offsets.cpp diff --git a/src/disk_tool.cpp b/src/disk_tool/disk_tool.cpp similarity index 100% rename from src/disk_tool.cpp rename to src/disk_tool/disk_tool.cpp diff --git a/src/disk_tool.h b/src/disk_tool/disk_tool.h similarity index 100% rename from src/disk_tool.h rename to src/disk_tool/disk_tool.h diff --git a/src/disk_tool_journal.cpp b/src/disk_tool/disk_tool_journal.cpp similarity index 100% rename from src/disk_tool_journal.cpp rename to src/disk_tool/disk_tool_journal.cpp diff --git a/src/disk_tool_meta.cpp b/src/disk_tool/disk_tool_meta.cpp similarity index 100% rename from src/disk_tool_meta.cpp rename to src/disk_tool/disk_tool_meta.cpp diff --git a/src/disk_tool_prepare.cpp b/src/disk_tool/disk_tool_prepare.cpp similarity index 100% rename from src/disk_tool_prepare.cpp rename to src/disk_tool/disk_tool_prepare.cpp diff --git a/src/disk_tool_resize.cpp b/src/disk_tool/disk_tool_resize.cpp similarity index 100% rename from src/disk_tool_resize.cpp rename to src/disk_tool/disk_tool_resize.cpp diff --git a/src/disk_tool_udev.cpp b/src/disk_tool/disk_tool_udev.cpp similarity index 100% rename from src/disk_tool_udev.cpp rename to src/disk_tool/disk_tool_udev.cpp diff --git a/src/disk_tool_upgrade.cpp b/src/disk_tool/disk_tool_upgrade.cpp similarity index 100% rename from src/disk_tool_upgrade.cpp rename to src/disk_tool/disk_tool_upgrade.cpp diff --git a/src/disk_tool_utils.cpp b/src/disk_tool/disk_tool_utils.cpp similarity index 100% rename from src/disk_tool_utils.cpp rename to src/disk_tool/disk_tool_utils.cpp diff --git a/src/kv/CMakeLists.txt b/src/kv/CMakeLists.txt new file mode 100644 index 000000000..4fece5984 --- /dev/null +++ b/src/kv/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(vitastor) + +# libvitastor_kv.so +add_library(vitastor_kv SHARED + kv_db.cpp +) +set_target_properties(vitastor_kv PROPERTIES PUBLIC_HEADER "vitastor_kv.h") +target_link_libraries(vitastor_kv + vitastor_client +) +set_target_properties(vitastor_kv PROPERTIES VERSION ${VERSION} SOVERSION 0) + +# vitastor-kv +add_executable(vitastor-kv + kv_cli.cpp +) +target_link_libraries(vitastor-kv + vitastor_kv +) + +add_executable(vitastor-kv-stress + kv_stress.cpp +) +target_link_libraries(vitastor-kv-stress + vitastor_kv +) diff --git a/src/kv_cli.cpp b/src/kv/kv_cli.cpp similarity index 100% rename from src/kv_cli.cpp rename to src/kv/kv_cli.cpp diff --git a/src/kv_db.cpp b/src/kv/kv_db.cpp similarity index 100% rename from src/kv_db.cpp rename to src/kv/kv_db.cpp diff --git a/src/kv_stress.cpp b/src/kv/kv_stress.cpp similarity index 100% rename from src/kv_stress.cpp rename to src/kv/kv_stress.cpp diff --git a/src/vitastor_kv.h b/src/kv/vitastor_kv.h similarity index 100% rename from src/vitastor_kv.h rename to src/kv/vitastor_kv.h diff --git a/src/mock/build.sh b/src/mock/build.sh deleted file mode 100644 index dd92e1aac..000000000 --- a/src/mock/build.sh +++ /dev/null @@ -1 +0,0 @@ -g++ -D__MOCK__ -fsanitize=address -g -Wno-pointer-arith pg_states.cpp osd_ops.cpp test_cluster_client.cpp cluster_client.cpp msgr_op.cpp msgr_stop.cpp mock/messenger.cpp etcd_state_client.cpp timerfd_manager.cpp ../json11/json11.cpp -I mock -I . -I ..; ./a.out \ No newline at end of file diff --git a/src/nfs/CMakeLists.txt b/src/nfs/CMakeLists.txt new file mode 100644 index 000000000..89fb8aeea --- /dev/null +++ b/src/nfs/CMakeLists.txt @@ -0,0 +1,32 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(vitastor) + +# vitastor-nfs +add_executable(vitastor-nfs + nfs_proxy.cpp + nfs_block.cpp + nfs_kv.cpp + nfs_kv_create.cpp + nfs_kv_getattr.cpp + nfs_kv_link.cpp + nfs_kv_lookup.cpp + nfs_kv_read.cpp + nfs_kv_readdir.cpp + nfs_kv_remove.cpp + nfs_kv_rename.cpp + nfs_kv_setattr.cpp + nfs_kv_write.cpp + nfs_fsstat.cpp + nfs_mount.cpp + nfs_portmap.cpp + ../util/sha256.c + proto/xdr_impl.cpp + proto/rpc_xdr.cpp + proto/portmap_xdr.cpp + proto/nfs_xdr.cpp +) +target_link_libraries(vitastor-nfs + vitastor_client + vitastor_kv +) diff --git a/src/nfs_block.cpp b/src/nfs/nfs_block.cpp similarity index 99% rename from src/nfs_block.cpp rename to src/nfs/nfs_block.cpp index 71495839a..13c8376bd 100644 --- a/src/nfs_block.cpp +++ b/src/nfs/nfs_block.cpp @@ -12,7 +12,7 @@ #include "nfs_proxy.h" #include "nfs_common.h" #include "nfs_block.h" -#include "nfs/nfs.h" +#include "proto/nfs.h" #include "cli.h" static unsigned len_pad4(unsigned len) diff --git a/src/nfs_block.h b/src/nfs/nfs_block.h similarity index 100% rename from src/nfs_block.h rename to src/nfs/nfs_block.h diff --git a/src/nfs_common.h b/src/nfs/nfs_common.h similarity index 97% rename from src/nfs_common.h rename to src/nfs/nfs_common.h index 70be606c0..dc7178318 100644 --- a/src/nfs_common.h +++ b/src/nfs/nfs_common.h @@ -5,7 +5,7 @@ #pragma once -#include "nfs/nfs.h" +#include "proto/nfs.h" void nfs_block_procs(nfs_client_t *self); void nfs_kv_procs(nfs_client_t *self); diff --git a/src/nfs_fsstat.cpp b/src/nfs/nfs_fsstat.cpp similarity index 100% rename from src/nfs_fsstat.cpp rename to src/nfs/nfs_fsstat.cpp diff --git a/src/nfs_kv.cpp b/src/nfs/nfs_kv.cpp similarity index 100% rename from src/nfs_kv.cpp rename to src/nfs/nfs_kv.cpp diff --git a/src/nfs_kv.h b/src/nfs/nfs_kv.h similarity index 99% rename from src/nfs_kv.h rename to src/nfs/nfs_kv.h index 12985cd65..2a96285ab 100644 --- a/src/nfs_kv.h +++ b/src/nfs/nfs_kv.h @@ -5,7 +5,7 @@ #pragma once -#include "nfs/nfs.h" +#include "proto/nfs.h" #define KV_ROOT_INODE 1 #define SHARED_FILE_MAGIC_V1 0x711A5158A6EDF17E diff --git a/src/nfs_kv_create.cpp b/src/nfs/nfs_kv_create.cpp similarity index 100% rename from src/nfs_kv_create.cpp rename to src/nfs/nfs_kv_create.cpp diff --git a/src/nfs_kv_getattr.cpp b/src/nfs/nfs_kv_getattr.cpp similarity index 100% rename from src/nfs_kv_getattr.cpp rename to src/nfs/nfs_kv_getattr.cpp diff --git a/src/nfs_kv_link.cpp b/src/nfs/nfs_kv_link.cpp similarity index 100% rename from src/nfs_kv_link.cpp rename to src/nfs/nfs_kv_link.cpp diff --git a/src/nfs_kv_lookup.cpp b/src/nfs/nfs_kv_lookup.cpp similarity index 100% rename from src/nfs_kv_lookup.cpp rename to src/nfs/nfs_kv_lookup.cpp diff --git a/src/nfs_kv_read.cpp b/src/nfs/nfs_kv_read.cpp similarity index 100% rename from src/nfs_kv_read.cpp rename to src/nfs/nfs_kv_read.cpp diff --git a/src/nfs_kv_readdir.cpp b/src/nfs/nfs_kv_readdir.cpp similarity index 100% rename from src/nfs_kv_readdir.cpp rename to src/nfs/nfs_kv_readdir.cpp diff --git a/src/nfs_kv_remove.cpp b/src/nfs/nfs_kv_remove.cpp similarity index 100% rename from src/nfs_kv_remove.cpp rename to src/nfs/nfs_kv_remove.cpp diff --git a/src/nfs_kv_rename.cpp b/src/nfs/nfs_kv_rename.cpp similarity index 100% rename from src/nfs_kv_rename.cpp rename to src/nfs/nfs_kv_rename.cpp diff --git a/src/nfs_kv_setattr.cpp b/src/nfs/nfs_kv_setattr.cpp similarity index 100% rename from src/nfs_kv_setattr.cpp rename to src/nfs/nfs_kv_setattr.cpp diff --git a/src/nfs_kv_write.cpp b/src/nfs/nfs_kv_write.cpp similarity index 100% rename from src/nfs_kv_write.cpp rename to src/nfs/nfs_kv_write.cpp diff --git a/src/nfs_mount.cpp b/src/nfs/nfs_mount.cpp similarity index 99% rename from src/nfs_mount.cpp rename to src/nfs/nfs_mount.cpp index eae5865d8..5c94ac3df 100644 --- a/src/nfs_mount.cpp +++ b/src/nfs/nfs_mount.cpp @@ -6,7 +6,7 @@ #include #include "nfs_proxy.h" -#include "nfs/nfs.h" +#include "proto/nfs.h" nfsstat3 vitastor_nfs_map_err(int err) { diff --git a/src/nfs_portmap.cpp b/src/nfs/nfs_portmap.cpp similarity index 98% rename from src/nfs_portmap.cpp rename to src/nfs/nfs_portmap.cpp index bb671f0ff..f5838c370 100644 --- a/src/nfs_portmap.cpp +++ b/src/nfs/nfs_portmap.cpp @@ -6,8 +6,8 @@ #include #include -#include "nfs/portmap.h" -#include "nfs/xdr_impl_inline.h" +#include "proto/portmap.h" +#include "proto/xdr_impl_inline.h" #include "malloc_or_die.h" #include "nfs_portmap.h" diff --git a/src/nfs_portmap.h b/src/nfs/nfs_portmap.h similarity index 96% rename from src/nfs_portmap.h rename to src/nfs/nfs_portmap.h index efaa0abf1..d06fda4a6 100644 --- a/src/nfs_portmap.h +++ b/src/nfs/nfs_portmap.h @@ -9,7 +9,7 @@ #include #include -#include "nfs/rpc_impl.h" +#include "proto/rpc_impl.h" struct portmap_id_t { diff --git a/src/nfs_proxy.cpp b/src/nfs/nfs_proxy.cpp similarity index 99% rename from src/nfs_proxy.cpp rename to src/nfs/nfs_proxy.cpp index c93518ea7..9bcf9d406 100644 --- a/src/nfs_proxy.cpp +++ b/src/nfs/nfs_proxy.cpp @@ -13,9 +13,9 @@ #include #include -#include "nfs/nfs.h" -#include "nfs/rpc.h" -#include "nfs/portmap.h" +#include "proto/nfs.h" +#include "proto/rpc.h" +#include "proto/portmap.h" #include "addr_util.h" #include "str_util.h" diff --git a/src/nfs_proxy.h b/src/nfs/nfs_proxy.h similarity index 99% rename from src/nfs_proxy.h rename to src/nfs/nfs_proxy.h index 999db70ac..86f4eb4ba 100644 --- a/src/nfs_proxy.h +++ b/src/nfs/nfs_proxy.h @@ -8,7 +8,7 @@ #include "cluster_client.h" #include "epoll_manager.h" #include "nfs_portmap.h" -#include "nfs/xdr_impl.h" +#include "proto/xdr_impl.h" #include "vitastor_kv.h" #define NFS_ROOT_HANDLE "R" diff --git a/src/nfs/nfs.h b/src/nfs/proto/nfs.h similarity index 100% rename from src/nfs/nfs.h rename to src/nfs/proto/nfs.h diff --git a/src/nfs/nfs.x b/src/nfs/proto/nfs.x similarity index 100% rename from src/nfs/nfs.x rename to src/nfs/proto/nfs.x diff --git a/src/nfs/nfs_xdr.cpp b/src/nfs/proto/nfs_xdr.cpp similarity index 100% rename from src/nfs/nfs_xdr.cpp rename to src/nfs/proto/nfs_xdr.cpp diff --git a/src/nfs/portmap.h b/src/nfs/proto/portmap.h similarity index 100% rename from src/nfs/portmap.h rename to src/nfs/proto/portmap.h diff --git a/src/nfs/portmap.x b/src/nfs/proto/portmap.x similarity index 100% rename from src/nfs/portmap.x rename to src/nfs/proto/portmap.x diff --git a/src/nfs/portmap_xdr.cpp b/src/nfs/proto/portmap_xdr.cpp similarity index 100% rename from src/nfs/portmap_xdr.cpp rename to src/nfs/proto/portmap_xdr.cpp diff --git a/src/nfs/rpc.h b/src/nfs/proto/rpc.h similarity index 100% rename from src/nfs/rpc.h rename to src/nfs/proto/rpc.h diff --git a/src/nfs/rpc.x b/src/nfs/proto/rpc.x similarity index 100% rename from src/nfs/rpc.x rename to src/nfs/proto/rpc.x diff --git a/src/nfs/rpc_impl.h b/src/nfs/proto/rpc_impl.h similarity index 100% rename from src/nfs/rpc_impl.h rename to src/nfs/proto/rpc_impl.h diff --git a/src/nfs/rpc_xdr.cpp b/src/nfs/proto/rpc_xdr.cpp similarity index 100% rename from src/nfs/rpc_xdr.cpp rename to src/nfs/proto/rpc_xdr.cpp diff --git a/src/nfs/run-rpcgen.sh b/src/nfs/proto/run-rpcgen.sh similarity index 100% rename from src/nfs/run-rpcgen.sh rename to src/nfs/proto/run-rpcgen.sh diff --git a/src/nfs/xdr_impl.cpp b/src/nfs/proto/xdr_impl.cpp similarity index 100% rename from src/nfs/xdr_impl.cpp rename to src/nfs/proto/xdr_impl.cpp diff --git a/src/nfs/xdr_impl.h b/src/nfs/proto/xdr_impl.h similarity index 100% rename from src/nfs/xdr_impl.h rename to src/nfs/proto/xdr_impl.h diff --git a/src/nfs/xdr_impl_inline.h b/src/nfs/proto/xdr_impl_inline.h similarity index 99% rename from src/nfs/xdr_impl_inline.h rename to src/nfs/proto/xdr_impl_inline.h index bcb2105ff..ad73a40ef 100644 --- a/src/nfs/xdr_impl_inline.h +++ b/src/nfs/proto/xdr_impl_inline.h @@ -37,7 +37,7 @@ #include #include -#include "../malloc_or_die.h" +#include "malloc_or_die.h" #define FALSE 0 #define TRUE 1 diff --git a/src/osd/CMakeLists.txt b/src/osd/CMakeLists.txt new file mode 100644 index 000000000..a41fd9c19 --- /dev/null +++ b/src/osd/CMakeLists.txt @@ -0,0 +1,37 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(vitastor) + +# vitastor-osd +add_executable(vitastor-osd + osd_main.cpp osd.cpp osd_secondary.cpp osd_peering.cpp osd_flush.cpp osd_peering_pg.cpp + osd_primary.cpp osd_primary_chain.cpp osd_primary_sync.cpp osd_primary_write.cpp osd_primary_subops.cpp + osd_cluster.cpp osd_rmw.cpp osd_scrub.cpp osd_primary_describe.cpp +) +target_link_libraries(vitastor-osd + vitastor_common + vitastor_blk + Jerasure + ${ISAL_LIBRARIES} + ${IBVERBS_LIBRARIES} +) + +# osd_rmw_test +add_executable(osd_rmw_test EXCLUDE_FROM_ALL osd_rmw_test.cpp ../util/allocator.cpp) +target_link_libraries(osd_rmw_test Jerasure ${ISAL_LIBRARIES} tcmalloc_minimal) +add_dependencies(build_tests osd_rmw_test) +add_test(NAME osd_rmw_test COMMAND osd_rmw_test) + +if (ISAL_LIBRARIES) + add_executable(osd_rmw_test_je EXCLUDE_FROM_ALL osd_rmw_test.cpp ../util/allocator.cpp) + target_compile_definitions(osd_rmw_test_je PUBLIC -DNO_ISAL) + target_link_libraries(osd_rmw_test_je Jerasure tcmalloc_minimal) + add_dependencies(build_tests osd_rmw_test_je) + add_test(NAME osd_rmw_test_jerasure COMMAND osd_rmw_test_je) +endif (ISAL_LIBRARIES) + +# osd_peering_pg_test +add_executable(osd_peering_pg_test EXCLUDE_FROM_ALL osd_peering_pg_test.cpp osd_peering_pg.cpp) +target_link_libraries(osd_peering_pg_test tcmalloc_minimal) +add_dependencies(build_tests osd_peering_pg_test) +add_test(NAME osd_peering_pg_test COMMAND osd_peering_pg_test) diff --git a/src/osd.cpp b/src/osd/osd.cpp similarity index 100% rename from src/osd.cpp rename to src/osd/osd.cpp diff --git a/src/osd.h b/src/osd/osd.h similarity index 100% rename from src/osd.h rename to src/osd/osd.h diff --git a/src/osd_cluster.cpp b/src/osd/osd_cluster.cpp similarity index 100% rename from src/osd_cluster.cpp rename to src/osd/osd_cluster.cpp diff --git a/src/osd_flush.cpp b/src/osd/osd_flush.cpp similarity index 100% rename from src/osd_flush.cpp rename to src/osd/osd_flush.cpp diff --git a/src/osd_id.h b/src/osd/osd_id.h similarity index 100% rename from src/osd_id.h rename to src/osd/osd_id.h diff --git a/src/osd_main.cpp b/src/osd/osd_main.cpp similarity index 100% rename from src/osd_main.cpp rename to src/osd/osd_main.cpp diff --git a/src/osd_peering.cpp b/src/osd/osd_peering.cpp similarity index 100% rename from src/osd_peering.cpp rename to src/osd/osd_peering.cpp diff --git a/src/osd_peering_pg.cpp b/src/osd/osd_peering_pg.cpp similarity index 100% rename from src/osd_peering_pg.cpp rename to src/osd/osd_peering_pg.cpp diff --git a/src/osd_peering_pg.h b/src/osd/osd_peering_pg.h similarity index 100% rename from src/osd_peering_pg.h rename to src/osd/osd_peering_pg.h diff --git a/src/osd_peering_pg_test.cpp b/src/osd/osd_peering_pg_test.cpp similarity index 100% rename from src/osd_peering_pg_test.cpp rename to src/osd/osd_peering_pg_test.cpp diff --git a/src/osd_primary.cpp b/src/osd/osd_primary.cpp similarity index 100% rename from src/osd_primary.cpp rename to src/osd/osd_primary.cpp diff --git a/src/osd_primary.h b/src/osd/osd_primary.h similarity index 100% rename from src/osd_primary.h rename to src/osd/osd_primary.h diff --git a/src/osd_primary_chain.cpp b/src/osd/osd_primary_chain.cpp similarity index 100% rename from src/osd_primary_chain.cpp rename to src/osd/osd_primary_chain.cpp diff --git a/src/osd_primary_describe.cpp b/src/osd/osd_primary_describe.cpp similarity index 100% rename from src/osd_primary_describe.cpp rename to src/osd/osd_primary_describe.cpp diff --git a/src/osd_primary_subops.cpp b/src/osd/osd_primary_subops.cpp similarity index 100% rename from src/osd_primary_subops.cpp rename to src/osd/osd_primary_subops.cpp diff --git a/src/osd_primary_sync.cpp b/src/osd/osd_primary_sync.cpp similarity index 100% rename from src/osd_primary_sync.cpp rename to src/osd/osd_primary_sync.cpp diff --git a/src/osd_primary_write.cpp b/src/osd/osd_primary_write.cpp similarity index 100% rename from src/osd_primary_write.cpp rename to src/osd/osd_primary_write.cpp diff --git a/src/osd_rmw.cpp b/src/osd/osd_rmw.cpp similarity index 100% rename from src/osd_rmw.cpp rename to src/osd/osd_rmw.cpp diff --git a/src/osd_rmw.h b/src/osd/osd_rmw.h similarity index 100% rename from src/osd_rmw.h rename to src/osd/osd_rmw.h diff --git a/src/osd_rmw_test.cpp b/src/osd/osd_rmw_test.cpp similarity index 100% rename from src/osd_rmw_test.cpp rename to src/osd/osd_rmw_test.cpp diff --git a/src/osd_scrub.cpp b/src/osd/osd_scrub.cpp similarity index 100% rename from src/osd_scrub.cpp rename to src/osd/osd_scrub.cpp diff --git a/src/osd_secondary.cpp b/src/osd/osd_secondary.cpp similarity index 100% rename from src/osd_secondary.cpp rename to src/osd/osd_secondary.cpp diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt new file mode 100644 index 000000000..d7df6582b --- /dev/null +++ b/src/test/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required(VERSION 2.8.12) + +project(vitastor) + +### Test stubs + +# stub_osd, stub_bench, osd_test +add_executable(stub_osd stub_osd.cpp ../util/rw_blocking.cpp ../util/addr_util.cpp) +target_link_libraries(stub_osd tcmalloc_minimal) +add_executable(stub_bench stub_bench.cpp ../util/rw_blocking.cpp ../util/addr_util.cpp) +target_link_libraries(stub_bench tcmalloc_minimal) +add_executable(osd_test osd_test.cpp ../util/rw_blocking.cpp ../util/addr_util.cpp) +target_link_libraries(osd_test tcmalloc_minimal) + +# stub_uring_osd +add_executable(stub_uring_osd + stub_uring_osd.cpp +) +target_link_libraries(stub_uring_osd + vitastor_common + ${LIBURING_LIBRARIES} + ${IBVERBS_LIBRARIES} + tcmalloc_minimal +) + +# test_allocator +add_executable(test_allocator EXCLUDE_FROM_ALL test_allocator.cpp ../util/allocator.cpp) +add_dependencies(build_tests test_allocator) +add_test(NAME test_allocator COMMAND test_allocator) + +# test_cas +add_executable(test_cas + test_cas.cpp +) +target_link_libraries(test_cas + vitastor_client +) + +# test_crc32 +add_executable(test_crc32 + test_crc32.cpp +) +target_link_libraries(test_crc32 + vitastor_blk +) + +## test_blockstore, test_shit +#add_executable(test_blockstore test_blockstore.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) diff --git a/src/mock/messenger.cpp b/src/test/mock/messenger.cpp similarity index 100% rename from src/mock/messenger.cpp rename to src/test/mock/messenger.cpp diff --git a/src/mock/ringloop.h b/src/test/mock/ringloop.h similarity index 100% rename from src/mock/ringloop.h rename to src/test/mock/ringloop.h diff --git a/src/osd_test.cpp b/src/test/osd_test.cpp similarity index 100% rename from src/osd_test.cpp rename to src/test/osd_test.cpp diff --git a/src/stub_bench.cpp b/src/test/stub_bench.cpp similarity index 100% rename from src/stub_bench.cpp rename to src/test/stub_bench.cpp diff --git a/src/stub_osd.cpp b/src/test/stub_osd.cpp similarity index 100% rename from src/stub_osd.cpp rename to src/test/stub_osd.cpp diff --git a/src/stub_uring_osd.cpp b/src/test/stub_uring_osd.cpp similarity index 100% rename from src/stub_uring_osd.cpp rename to src/test/stub_uring_osd.cpp diff --git a/src/test_allocator.cpp b/src/test/test_allocator.cpp similarity index 100% rename from src/test_allocator.cpp rename to src/test/test_allocator.cpp diff --git a/src/test_blockstore.cpp b/src/test/test_blockstore.cpp similarity index 100% rename from src/test_blockstore.cpp rename to src/test/test_blockstore.cpp diff --git a/src/test_cas.cpp b/src/test/test_cas.cpp similarity index 100% rename from src/test_cas.cpp rename to src/test/test_cas.cpp diff --git a/src/test_cluster_client.cpp b/src/test/test_cluster_client.cpp similarity index 100% rename from src/test_cluster_client.cpp rename to src/test/test_cluster_client.cpp diff --git a/src/test_crc32.cpp b/src/test/test_crc32.cpp similarity index 100% rename from src/test_crc32.cpp rename to src/test/test_crc32.cpp diff --git a/src/test_pattern.h b/src/test/test_pattern.h similarity index 100% rename from src/test_pattern.h rename to src/test/test_pattern.h diff --git a/src/test_shit.cpp b/src/test/test_shit.cpp similarity index 100% rename from src/test_shit.cpp rename to src/test/test_shit.cpp diff --git a/src/addr_util.cpp b/src/util/addr_util.cpp similarity index 100% rename from src/addr_util.cpp rename to src/util/addr_util.cpp diff --git a/src/addr_util.h b/src/util/addr_util.h similarity index 100% rename from src/addr_util.h rename to src/util/addr_util.h diff --git a/src/allocator.cpp b/src/util/allocator.cpp similarity index 100% rename from src/allocator.cpp rename to src/util/allocator.cpp diff --git a/src/allocator.h b/src/util/allocator.h similarity index 100% rename from src/allocator.h rename to src/util/allocator.h diff --git a/src/crc32c.c b/src/util/crc32c.c similarity index 100% rename from src/crc32c.c rename to src/util/crc32c.c diff --git a/src/crc32c.h b/src/util/crc32c.h similarity index 100% rename from src/crc32c.h rename to src/util/crc32c.h diff --git a/src/epoll_manager.cpp b/src/util/epoll_manager.cpp similarity index 100% rename from src/epoll_manager.cpp rename to src/util/epoll_manager.cpp diff --git a/src/epoll_manager.h b/src/util/epoll_manager.h similarity index 100% rename from src/epoll_manager.h rename to src/util/epoll_manager.h diff --git a/src/fio_headers.h b/src/util/fio_headers.h similarity index 100% rename from src/fio_headers.h rename to src/util/fio_headers.h diff --git a/src/malloc_or_die.h b/src/util/malloc_or_die.h similarity index 100% rename from src/malloc_or_die.h rename to src/util/malloc_or_die.h diff --git a/src/ringloop.cpp b/src/util/ringloop.cpp similarity index 100% rename from src/ringloop.cpp rename to src/util/ringloop.cpp diff --git a/src/ringloop.h b/src/util/ringloop.h similarity index 100% rename from src/ringloop.h rename to src/util/ringloop.h diff --git a/src/rw_blocking.cpp b/src/util/rw_blocking.cpp similarity index 100% rename from src/rw_blocking.cpp rename to src/util/rw_blocking.cpp diff --git a/src/rw_blocking.h b/src/util/rw_blocking.h similarity index 100% rename from src/rw_blocking.h rename to src/util/rw_blocking.h diff --git a/src/sha256.c b/src/util/sha256.c similarity index 100% rename from src/sha256.c rename to src/util/sha256.c diff --git a/src/sha256.h b/src/util/sha256.h similarity index 100% rename from src/sha256.h rename to src/util/sha256.h diff --git a/src/str_util.cpp b/src/util/str_util.cpp similarity index 100% rename from src/str_util.cpp rename to src/util/str_util.cpp diff --git a/src/str_util.h b/src/util/str_util.h similarity index 100% rename from src/str_util.h rename to src/util/str_util.h diff --git a/src/timerfd_manager.cpp b/src/util/timerfd_manager.cpp similarity index 100% rename from src/timerfd_manager.cpp rename to src/util/timerfd_manager.cpp diff --git a/src/timerfd_manager.h b/src/util/timerfd_manager.h similarity index 100% rename from src/timerfd_manager.h rename to src/util/timerfd_manager.h diff --git a/src/xor.h b/src/util/xor.h similarity index 100% rename from src/xor.h rename to src/util/xor.h diff --git a/tests/run_3osds.sh b/tests/run_3osds.sh index 05b4acf7f..8f7db1430 100644 --- a/tests/run_3osds.sh +++ b/tests/run_3osds.sh @@ -30,8 +30,8 @@ start_osd_on() { local i=$1 local dev=$2 - build/src/vitastor-osd --osd_num $i --bind_address $ETCD_IP $NO_SAME $OSD_ARGS --etcd_address $ETCD_URL \ - $(build/src/vitastor-disk simple-offsets --format options $OFFSET_ARGS $dev $OFFSET_ARGS 2>/dev/null) \ + build/src/osd/vitastor-osd --osd_num $i --bind_address $ETCD_IP $NO_SAME $OSD_ARGS --etcd_address $ETCD_URL \ + $(build/src/disk_tool/vitastor-disk simple-offsets --format options $OFFSET_ARGS $dev $OFFSET_ARGS 2>/dev/null) \ >>./testdata/osd$i.log 2>&1 & eval OSD${i}_PID=$! } @@ -139,9 +139,9 @@ wait_finish_rebalance() check_qemu() { - if ! cmp build/src/block-vitastor.so /usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so; then + if ! cmp build/src/client/block-vitastor.so /usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so; then sudo rm -f /usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so - sudo ln -s "$(realpath .)/build/src/block-vitastor.so" /usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so + sudo ln -s "$(realpath .)/build/src/client/block-vitastor.so" /usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so fi } diff --git a/tests/test_add_osd.sh b/tests/test_add_osd.sh index 42fa996c6..74fb22e65 100755 --- a/tests/test_add_osd.sh +++ b/tests/test_add_osd.sh @@ -4,8 +4,8 @@ PG_COUNT=2048 GLOBAL_CONFIG=',"osd_out_time":1' . `dirname $0`/run_3osds.sh -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -end_fsync=1 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -end_fsync=1 \ -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -cluster_log_level=10 start_osd 4 @@ -30,7 +30,7 @@ wait_finish_rebalance 60 sleep 1 kill -9 $OSD4_PID sleep 1 -build/src/vitastor-cli --etcd_address $ETCD_URL rm-osd --force 4 +build/src/cli/vitastor-cli --etcd_address $ETCD_URL rm-osd --force 4 sleep 2 diff --git a/tests/test_cas.sh b/tests/test_cas.sh index 2cc980d38..ccc12395b 100755 --- a/tests/test_cas.sh +++ b/tests/test_cas.sh @@ -2,6 +2,6 @@ . `dirname $0`/run_3osds.sh -build/src/test_cas --pool_id 1 --inode_id 1 --etcd_address $ETCD_URL +build/src/test/test_cas --pool_id 1 --inode_id 1 --etcd_address $ETCD_URL format_green OK diff --git a/tests/test_change_pg_count.sh b/tests/test_change_pg_count.sh index 2a1ce213e..56c8cf681 100755 --- a/tests/test_change_pg_count.sh +++ b/tests/test_change_pg_count.sh @@ -7,8 +7,8 @@ PG_COUNT=16 NOBJ=$(((128*8+PG_DATA_SIZE-1)/PG_DATA_SIZE)) -LD_PRELOAD="build/src/libfio_vitastor.so" \ -fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ +fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ -etcd=$ETCD_URL -pool=1 -inode=2 -size=128M -cluster_log_level=10 try_change() diff --git a/tests/test_checksum.sh b/tests/test_checksum.sh index ad0979e71..362d3039e 100755 --- a/tests/test_checksum.sh +++ b/tests/test_checksum.sh @@ -11,13 +11,13 @@ IMG_SIZE=128 $ETCDCTL put /vitastor/config/inode/1/1 '{"name":"testimg","size":'$((IMG_SIZE*1024*1024))'}' # Write -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=1M -direct=1 -iodepth=4 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=1M -direct=1 -iodepth=4 \ -mirror_file=./testdata/mirror.bin -end_fsync=1 -rw=write -etcd=$ETCD_URL -image=testimg -runtime=10 # Intentionally corrupt OSD data and restart it kill $OSD1_PID -data_offset=$(build/src/vitastor-disk simple-offsets ./testdata/test_osd1.bin $OFFSET_ARGS | grep data_offset | awk '{print $2}') +data_offset=$(build/src/disk_tool/vitastor-disk simple-offsets ./testdata/test_osd1.bin $OFFSET_ARGS | grep data_offset | awk '{print $2}') truncate -s $data_offset ./testdata/test_osd1.bin dd if=/dev/zero of=./testdata/test_osd1.bin bs=1024 count=1 seek=$((OSD_SIZE*1024-1)) start_osd 1 diff --git a/tests/test_create_nomaxid.sh b/tests/test_create_nomaxid.sh index 17f2a4c1a..1514d4e83 100755 --- a/tests/test_create_nomaxid.sh +++ b/tests/test_create_nomaxid.sh @@ -6,7 +6,7 @@ $ETCDCTL put /vitastor/config/inode/1/120 '{"name":"testimg","size":'$((1024*1024*1024))'}' -build/src/vitastor-cli create --etcd_address $ETCD_URL -s 1G testimg2 +build/src/cli/vitastor-cli create --etcd_address $ETCD_URL -s 1G testimg2 t=$($ETCDCTL get --print-value-only /vitastor/config/inode/1/121 | jq -r .name) if [[ "$t" != "testimg2" ]]; then diff --git a/tests/test_enospc.sh b/tests/test_enospc.sh index 7f795236f..138d28cb0 100755 --- a/tests/test_enospc.sh +++ b/tests/test_enospc.sh @@ -5,22 +5,22 @@ GLOBAL_CONFIG=',"client_retry_enospc":false' . `dirname $0`/run_3osds.sh -export LD_PRELOAD="build/src/libfio_vitastor.so" +export LD_PRELOAD="build/src/client/libfio_vitastor.so" # Should fail with ENOSPC -if fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=1M -direct=1 -iodepth=4 \ +if fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=1M -direct=1 -iodepth=4 \ -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=500M -cluster_log_level=10; then format_error "Should get ENOSPC, but didn't" fi # Should fail with ENOSPC too (the idea is to try to overwrite first objects to check their rollback) -if fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=1M -direct=1 -iodepth=32 \ +if fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=1M -direct=1 -iodepth=32 \ -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=500M -cluster_log_level=10; then format_error "Should get ENOSPC, but didn't" fi # Should complete OK -if ! fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4k -direct=1 -iodepth=4 \ +if ! fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4k -direct=1 -iodepth=4 \ -rw=randwrite -etcd=$ETCD_URL -pool=1 -inode=1 -size=100M -cluster_log_level=10 -number_ios=4096; then format_error "Should do random writes over ENOSPC correctly, but got an error" fi diff --git a/tests/test_etcd_fail.sh b/tests/test_etcd_fail.sh index 665f2bf32..725132db7 100755 --- a/tests/test_etcd_fail.sh +++ b/tests/test_etcd_fail.sh @@ -5,8 +5,8 @@ ETCD_COUNT=5 . `dirname $0`/run_3osds.sh -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=randwrite \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=randwrite \ -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -cluster_log_level=10 kill_etcds() @@ -26,8 +26,8 @@ kill_etcds() kill_etcds & -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=1 -rw=randwrite \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=1 -rw=randwrite \ -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -cluster_log_level=10 -runtime=30 format_green OK diff --git a/tests/test_failure_domain.sh b/tests/test_failure_domain.sh index 730539aa0..566bcd464 100755 --- a/tests/test_failure_domain.sh +++ b/tests/test_failure_domain.sh @@ -13,13 +13,13 @@ $ETCDCTL put /vitastor/osd/stats/5 '{"host":"host3","size":1073741824,"time":"'$ $ETCDCTL put /vitastor/osd/stats/6 '{"host":"host3","size":1073741824,"time":"'$TIME'"}' $ETCDCTL put /vitastor/osd/stats/7 '{"host":"host4","size":1073741824,"time":"'$TIME'"}' $ETCDCTL put /vitastor/osd/stats/8 '{"host":"host4","size":1073741824,"time":"'$TIME'"}' -build/src/vitastor-cli --etcd_address $ETCD_URL create-pool testpool --ec 3+2 -n 32 --failure_domain rack --force +build/src/cli/vitastor-cli --etcd_address $ETCD_URL create-pool testpool --ec 3+2 -n 32 --failure_domain rack --force $ETCDCTL get --print-value-only /vitastor/config/pools | jq -s -e '. == [{"1": {"failure_domain": "rack", "name": "testpool", "parity_chunks": 2, "pg_count": 32, "pg_minsize": 4, "pg_size": 5, "scheme": "ec"}}]' -build/src/vitastor-cli --etcd_address $ETCD_URL modify-pool testpool --ec 3+3 --failure_domain host +build/src/cli/vitastor-cli --etcd_address $ETCD_URL modify-pool testpool --ec 3+3 --failure_domain host $ETCDCTL get --print-value-only /vitastor/config/pools | jq -s -e '. == [{"1": {"failure_domain": "host", "name": "testpool", "parity_chunks": 3, "pg_count": 32, "pg_minsize": 4, "pg_size": 6, "scheme": "ec"}}]' -build/src/vitastor-cli --etcd_address $ETCD_URL rm-pool testpool +build/src/cli/vitastor-cli --etcd_address $ETCD_URL rm-pool testpool $ETCDCTL get --print-value-only /vitastor/config/pools | jq -s -e '. == [{}]' -build/src/vitastor-cli --etcd_address $ETCD_URL create-pool testpool -s 2 -n 4 --failure_domain rack --force +build/src/cli/vitastor-cli --etcd_address $ETCD_URL create-pool testpool -s 2 -n 4 --failure_domain rack --force $ETCDCTL get --print-value-only /vitastor/config/pools | jq -s -e '. == [{"1":{"name":"testpool","scheme":"replicated","pg_size":2,"pg_minsize":1,"pg_count":4,"failure_domain":"rack"}}]' node mon/mon-main.js --etcd_address $ETCD_URL --etcd_prefix "/vitastor" >>./testdata/mon.log 2>&1 & diff --git a/tests/test_heal.sh b/tests/test_heal.sh index e4354629e..851439d7b 100755 --- a/tests/test_heal.sh +++ b/tests/test_heal.sh @@ -18,8 +18,8 @@ IMG_SIZE=960 $ETCDCTL put /vitastor/config/inode/1/1 '{"name":"testimg","size":'$((IMG_SIZE*1024*1024))'}' -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ -mirror_file=./testdata/mirror.bin -etcd=$ETCD_URL -image=testimg -cluster_log_level=10 kill_osds() @@ -51,8 +51,8 @@ kill_osds() kill_osds & -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bsrange=4k-128k -blockalign=4k -direct=1 -iodepth=32 -fsync=256 -rw=randrw \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bsrange=4k-128k -blockalign=4k -direct=1 -iodepth=32 -fsync=256 -rw=randrw \ -randrepeat=0 -refill_buffers=1 -mirror_file=./testdata/mirror.bin -etcd=$ETCD_URL -image=testimg -loops=10 -runtime=120 qemu-img convert -S 4096 -p \ diff --git a/tests/test_interrupted_rebalance.sh b/tests/test_interrupted_rebalance.sh index 51b5ead1d..070c1aca7 100755 --- a/tests/test_interrupted_rebalance.sh +++ b/tests/test_interrupted_rebalance.sh @@ -6,8 +6,8 @@ PG_COUNT=32 IMG_SIZE=960 -LD_PRELOAD="build/src/libfio_vitastor.so" \ -fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=16 -fsync=16 -rw=write \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ +fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=16 -fsync=16 -rw=write \ -etcd=$ETCD_URL -pool=1 -inode=2 -size=${IMG_SIZE}M -cluster_log_level=10 try_reweight 1 0 diff --git a/tests/test_move_reappear.sh b/tests/test_move_reappear.sh index fa250d372..2dd0817c8 100755 --- a/tests/test_move_reappear.sh +++ b/tests/test_move_reappear.sh @@ -7,7 +7,7 @@ OSD_COUNT=5 OSD_ARGS="$OSD_ARGS" for i in $(seq 1 $OSD_COUNT); do dd if=/dev/zero of=./testdata/test_osd$i.bin bs=1024 count=1 seek=$((OSD_SIZE*1024-1)) - build/src/vitastor-osd --log_level 10 --osd_num $i --bind_address 127.0.0.1 --etcd_stats_interval 5 $OSD_ARGS --etcd_address $ETCD_URL $(build/src/vitastor-disk simple-offsets --format options ./testdata/test_osd$i.bin 2>/dev/null) >>./testdata/osd$i.log 2>&1 & + build/src/osd/vitastor-osd --log_level 10 --osd_num $i --bind_address 127.0.0.1 --etcd_stats_interval 5 $OSD_ARGS --etcd_address $ETCD_URL $(build/src/disk_tool/vitastor-disk simple-offsets --format options ./testdata/test_osd$i.bin 2>/dev/null) >>./testdata/osd$i.log 2>&1 & eval OSD${i}_PID=$! done @@ -24,8 +24,8 @@ for i in {1..30}; do fi done -LD_PRELOAD="build/src/libfio_vitastor.so" \ -fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ +fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ -etcd=$ETCD_URL -pool=1 -inode=2 -size=32M -cluster_log_level=10 $ETCDCTL put /vitastor/config/pgs '{"items":{"1":{"1":{"osd_set":[1,0],"primary":0}}}}' @@ -54,8 +54,8 @@ for i in {1..30}; do done # Sync so all moved objects are removed from OSD 1 (they aren't removed without a sync) -LD_PRELOAD="build/src/libfio_vitastor.so" \ -fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=1 -number_ios=2 -rw=write \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ +fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=1 -number_ios=2 -rw=write \ -etcd=$ETCD_URL -pool=1 -inode=2 -size=32M -cluster_log_level=10 $ETCDCTL put /vitastor/config/pgs '{"items":{"1":{"1":{"osd_set":[4,5],"primary":0}}}}' diff --git a/tests/test_nfs.sh b/tests/test_nfs.sh index 5701d3f7f..1ac09685b 100755 --- a/tests/test_nfs.sh +++ b/tests/test_nfs.sh @@ -3,9 +3,9 @@ PG_COUNT=16 . `dirname $0`/run_3osds.sh -build/src/vitastor-cli --etcd_address $ETCD_URL create -s 10G fsmeta -build/src/vitastor-cli --etcd_address $ETCD_URL modify-pool --used-for-fs fsmeta testpool -build/src/vitastor-nfs start --fs fsmeta --etcd_address $ETCD_URL --portmap 0 --port 2050 --foreground 1 --trace 1 >>./testdata/nfs.log 2>&1 & +build/src/cli/vitastor-cli --etcd_address $ETCD_URL create -s 10G fsmeta +build/src/cli/vitastor-cli --etcd_address $ETCD_URL modify-pool --used-for-fs fsmeta testpool +build/src/nfs/vitastor-nfs start --fs fsmeta --etcd_address $ETCD_URL --portmap 0 --port 2050 --foreground 1 --trace 1 >>./testdata/nfs.log 2>&1 & NFS_PID=$! mkdir -p testdata/nfs diff --git a/tests/test_parity_change.sh b/tests/test_parity_change.sh index 3e2884bdf..a6cbe7f80 100755 --- a/tests/test_parity_change.sh +++ b/tests/test_parity_change.sh @@ -39,8 +39,8 @@ try_change() fi } -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=1M -direct=1 -iodepth=4 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=1M -direct=1 -iodepth=4 \ -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -runtime=10 PG_SIZE=7 diff --git a/tests/test_rebalance_verify.sh b/tests/test_rebalance_verify.sh index 387631cb2..3e3fda81a 100755 --- a/tests/test_rebalance_verify.sh +++ b/tests/test_rebalance_verify.sh @@ -10,9 +10,9 @@ IMG_SIZE=256 $ETCDCTL put /vitastor/config/inode/1/1 '{"name":"testimg","size":'$((IMG_SIZE*1024*1024))'}' -NBD_DEV=$(sudo build/src/vitastor-nbd map --nbd_timeout 180 --etcd_address $ETCD_URL --image testimg --logfile ./testdata/nbd.log &) +NBD_DEV=$(sudo build/src/client/vitastor-nbd map --nbd_timeout 180 --etcd_address $ETCD_URL --image testimg --logfile ./testdata/nbd.log &) -trap "sudo build/src/vitastor-nbd unmap $NBD_DEV"'; kill -9 $(jobs -p)' EXIT +trap "sudo build/src/client/vitastor-nbd unmap $NBD_DEV"'; kill -9 $(jobs -p)' EXIT sudo chown $(id -u) $NBD_DEV diff --git a/tests/test_resize.sh b/tests/test_resize.sh index ed6d2c5d7..bc757b809 100755 --- a/tests/test_resize.sh +++ b/tests/test_resize.sh @@ -4,12 +4,12 @@ PG_COUNT=${PG_COUNT:-32} . `dirname $0`/run_3osds.sh -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=4 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=4 \ -rw=write -etcd=$ETCD_URL -end_fsync=1 -pool=1 -inode=1 -size=256M -runtime=10 -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4k -direct=1 -iodepth=32 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4k -direct=1 -iodepth=32 \ -rw=randwrite -etcd=$ETCD_URL -end_fsync=1 -pool=1 -inode=1 -size=256M -runtime=10 -number_ios=1024 qemu-img convert -S 4096 -p \ @@ -23,19 +23,19 @@ for i in $(seq 1 $OSD_COUNT); do done for i in $(seq 1 $OSD_COUNT); do - offsets=$(build/src/vitastor-disk simple-offsets --format json ./testdata/test_osd$i.bin) + offsets=$(build/src/disk_tool/vitastor-disk simple-offsets --format json ./testdata/test_osd$i.bin) meta_offset=$(echo $offsets | jq -r .meta_offset) data_offset=$(echo $offsets | jq -r .data_offset) - build/src/vitastor-disk dump-journal --json ./testdata/test_osd$i.bin 4096 0 $meta_offset >./testdata/journal_before_resize.json - build/src/vitastor-disk dump-meta ./testdata/test_osd$i.bin 4096 $meta_offset $((data_offset-meta_offset)) >./testdata/meta_before_resize.json - build/src/vitastor-disk resize \ - $(build/src/vitastor-disk simple-offsets --format options ./testdata/test_osd$i.bin 2>/dev/null) \ + build/src/disk_tool/vitastor-disk dump-journal --json ./testdata/test_osd$i.bin 4096 0 $meta_offset >./testdata/journal_before_resize.json + build/src/disk_tool/vitastor-disk dump-meta ./testdata/test_osd$i.bin 4096 $meta_offset $((data_offset-meta_offset)) >./testdata/meta_before_resize.json + build/src/disk_tool/vitastor-disk resize \ + $(build/src/disk_tool/vitastor-disk simple-offsets --format options ./testdata/test_osd$i.bin 2>/dev/null) \ --new_meta_offset 0 \ --new_meta_len $((1024*1024)) \ --new_journal_offset $((1024*1024)) \ --new_data_offset $((128*1024*1024)) - build/src/vitastor-disk dump-journal --json ./testdata/test_osd$i.bin 4096 $((1024*1024)) $((127*1024*1024)) >./testdata/journal_after_resize.json - build/src/vitastor-disk dump-meta ./testdata/test_osd$i.bin 4096 0 $((1024*1024)) >./testdata/meta_after_resize.json + build/src/disk_tool/vitastor-disk dump-journal --json ./testdata/test_osd$i.bin 4096 $((1024*1024)) $((127*1024*1024)) >./testdata/journal_after_resize.json + build/src/disk_tool/vitastor-disk dump-meta ./testdata/test_osd$i.bin 4096 0 $((1024*1024)) >./testdata/meta_after_resize.json if ! (cat ./testdata/meta_before_resize.json ./testdata/meta_after_resize.json | \ jq -e -s 'map([ .entries[] | del(.block) ] | sort_by(.pool, .inode, .stripe)) | .[0] == .[1] and (.[0] | length) > 1000'); then format_error "OSD $i metadata corrupted after resizing" @@ -49,7 +49,7 @@ done $ETCDCTL del --prefix /vitastor/osd/state/ for i in $(seq 1 $OSD_COUNT); do - build/src/vitastor-osd --osd_num $i --bind_address 127.0.0.1 $NO_SAME $OSD_ARGS --etcd_address $ETCD_URL \ + build/src/osd/vitastor-osd --osd_num $i --bind_address 127.0.0.1 $NO_SAME $OSD_ARGS --etcd_address $ETCD_URL \ --data_device ./testdata/test_osd$i.bin \ --meta_offset 0 \ --journal_offset $((1024*1024)) \ diff --git a/tests/test_rm.sh b/tests/test_rm.sh index 56200f471..12addbeb2 100755 --- a/tests/test_rm.sh +++ b/tests/test_rm.sh @@ -3,12 +3,12 @@ PG_COUNT=16 . `dirname $0`/run_3osds.sh -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 \ -end_fsync=1 -fsync=1 -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -cluster_log_level=10 $ETCDCTL get --prefix '/vitastor/pg/state' -build/src/vitastor-cli rm-data --etcd_address $ETCD_URL --pool 1 --inode 1 +build/src/cli/vitastor-cli rm-data --etcd_address $ETCD_URL --pool 1 --inode 1 format_green OK diff --git a/tests/test_scrub.sh b/tests/test_scrub.sh index 35a95fa5a..55ff02d92 100755 --- a/tests/test_scrub.sh +++ b/tests/test_scrub.sh @@ -16,8 +16,8 @@ IMG_SIZE=128 $ETCDCTL put /vitastor/config/inode/1/1 '{"name":"testimg","size":'$((IMG_SIZE*1024*1024))'}' # Write -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=1M -direct=1 -iodepth=4 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=1M -direct=1 -iodepth=4 \ -mirror_file=./testdata/mirror.bin -end_fsync=1 -rw=write -etcd=$ETCD_URL -image=testimg # Save PG primary @@ -28,7 +28,7 @@ zero_osd_pid=OSD${ZERO_OSD}_PID kill ${!zero_osd_pid} sleep 1 kill -9 ${!zero_osd_pid} || true -data_offset=$(build/src/vitastor-disk simple-offsets ./testdata/test_osd$ZERO_OSD.bin $OFFSET_ARGS | grep data_offset | awk '{print $2}') +data_offset=$(build/src/disk_tool/vitastor-disk simple-offsets ./testdata/test_osd$ZERO_OSD.bin $OFFSET_ARGS | grep data_offset | awk '{print $2}') truncate -s $data_offset ./testdata/test_osd$ZERO_OSD.bin dd if=/dev/zero of=./testdata/test_osd$ZERO_OSD.bin bs=1024 count=1 seek=$((OSD_SIZE*1024-1)) $ETCDCTL del /vitastor/osd/state/$ZERO_OSD @@ -48,17 +48,17 @@ wait_condition 300 "$ETCDCTL get --prefix /vitastor/pg/history/ --print-value-on if [[ ($SCHEME = replicated && $PG_SIZE < 3) || ($SCHEME != replicated && $((PG_SIZE-PG_DATA_SIZE)) < 2) ]]; then # Check that objects are marked as inconsistent if 2 replicas or EC/XOR 2+1 - build/src/vitastor-cli describe --etcd_address $ETCD_URL --json | jq -e '[ .[] | select(.inconsistent) ] | length == '$((IMG_SIZE * 8 * PG_SIZE / (SCHEME = replicated ? 1 : PG_DATA_SIZE))) + build/src/cli/vitastor-cli describe --etcd_address $ETCD_URL --json | jq -e '[ .[] | select(.inconsistent) ] | length == '$((IMG_SIZE * 8 * PG_SIZE / (SCHEME = replicated ? 1 : PG_DATA_SIZE))) # Fix objects using vitastor-cli fix - build/src/vitastor-cli describe --etcd_address $ETCD_URL --json | \ + build/src/cli/vitastor-cli describe --etcd_address $ETCD_URL --json | \ jq -s '[ .[0][] | select(.inconsistent and .osd_num == '$ZERO_OSD') ]' | \ - build/src/vitastor-cli fix --etcd_address $ETCD_URL --bad_osds $ZERO_OSD + build/src/cli/vitastor-cli fix --etcd_address $ETCD_URL --bad_osds $ZERO_OSD elif [[ ($SCHEME = replicated && $PG_SIZE > 2) || ($SCHEME != replicated && $((PG_SIZE-PG_DATA_SIZE)) > 1) ]]; then # Check that everything heals wait_finish_rebalance 300 - build/src/vitastor-cli describe --etcd_address $ETCD_URL --json | jq -e '. | length == 0' + build/src/cli/vitastor-cli describe --etcd_address $ETCD_URL --json | jq -e '. | length == 0' fi # Read everything back diff --git a/tests/test_snapshot.sh b/tests/test_snapshot.sh index 04f4e5de8..6090188d9 100755 --- a/tests/test_snapshot.sh +++ b/tests/test_snapshot.sh @@ -7,20 +7,20 @@ check_qemu $ETCDCTL put /vitastor/config/inode/1/2 '{"name":"testimg","size":'$((32*1024*1024))'}' -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ -etcd=$ETCD_URL -pool=1 -inode=2 -size=32M -cluster_log_level=10 $ETCDCTL put /vitastor/config/inode/1/2 '{"name":"testimg@0","size":'$((32*1024*1024))'}' $ETCDCTL put /vitastor/config/inode/1/3 '{"parent_id":2,"name":"testimg","size":'$((32*1024*1024))'}' -# Preload build/src/libfio_vitastor.so so libasan detects all symbols -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=32 -buffer_pattern=0xdeadface \ +# Preload build/src/client/libfio_vitastor.so so libasan detects all symbols +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=32 -buffer_pattern=0xdeadface \ -rw=randwrite -etcd=$ETCD_URL -image=testimg -number_ios=1024 -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -rw=read -etcd=$ETCD_URL -pool=1 -inode=3 -size=32M +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -rw=read -etcd=$ETCD_URL -pool=1 -inode=3 -size=32M qemu-img convert -p \ -f raw "vitastor:etcd_host=127.0.0.1\:$ETCD_PORT/v3:pool=1:inode=2:size=$((32*1024*1024)):skip-parents=1" \ @@ -54,7 +54,7 @@ cmp ./testdata/merged.bin ./testdata/check.bin $ETCDCTL put /vitastor/config/inode/1/3 '{"parent_id":2,"name":"testimg","size":'$((32*1024*1024))'}' -build/src/vitastor-cli rm --etcd_address $ETCD_URL testimg@0 +build/src/cli/vitastor-cli rm --etcd_address $ETCD_URL testimg@0 qemu-img convert -S 4096 -p \ -f raw "vitastor:etcd_host=127.0.0.1\:$ETCD_PORT/v3:image=testimg" \ diff --git a/tests/test_snapshot_chain.sh b/tests/test_snapshot_chain.sh index b1dad973a..00e4ad071 100755 --- a/tests/test_snapshot_chain.sh +++ b/tests/test_snapshot_chain.sh @@ -5,23 +5,23 @@ check_qemu # Test multiple snapshots -build/src/vitastor-cli --etcd_address $ETCD_URL create -s 32M testchain +build/src/cli/vitastor-cli --etcd_address $ETCD_URL create -s 32M testchain -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ -etcd=$ETCD_URL -image=testchain -mirror_file=./testdata/mirror.bin for i in {1..10}; do # Create a snapshot - build/src/vitastor-cli --etcd_address $ETCD_URL snap-create testchain@$i + build/src/cli/vitastor-cli --etcd_address $ETCD_URL snap-create testchain@$i # Check that the new snapshot is see-through qemu-img convert -p \ -f raw "vitastor:etcd_host=127.0.0.1\:$ETCD_PORT/v3:image=testchain" \ -O raw ./testdata/check.bin cmp ./testdata/check.bin ./testdata/mirror.bin # Write something to it - LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=32 -rw=randwrite \ + LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=32 -rw=randwrite \ -randrepeat=$((i <= 2)) -buffer_pattern=0x$((10+i))$((10+i))$((10+i))$((10+i)) \ -etcd=$ETCD_URL -image=testchain -number_ios=1024 -mirror_file=./testdata/mirror.bin # Check the new content @@ -31,7 +31,7 @@ for i in {1..10}; do cmp ./testdata/layer1.bin ./testdata/mirror.bin done -build/src/vitastor-cli --etcd_address $ETCD_URL rm testchain@1 testchain@9 +build/src/cli/vitastor-cli --etcd_address $ETCD_URL rm testchain@1 testchain@9 # Check the final image qemu-img convert -p \ diff --git a/tests/test_snapshot_down.sh b/tests/test_snapshot_down.sh index 804229593..303ef1b44 100755 --- a/tests/test_snapshot_down.sh +++ b/tests/test_snapshot_down.sh @@ -5,18 +5,18 @@ check_qemu # Test merge to child (without "inverse rename" optimisation) -build/src/vitastor-cli --etcd_address $ETCD_URL create -s 128M testchain +build/src/cli/vitastor-cli --etcd_address $ETCD_URL create -s 128M testchain -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write \ -etcd=$ETCD_URL -image=testchain -mirror_file=./testdata/mirror.bin # Create a snapshot -build/src/vitastor-cli --etcd_address $ETCD_URL snap-create testchain@0 +build/src/cli/vitastor-cli --etcd_address $ETCD_URL snap-create testchain@0 # Write something to it -LD_PRELOAD="build/src/libfio_vitastor.so" \ -fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=1M -direct=1 -iodepth=4 -rw=randwrite \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ +fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=1M -direct=1 -iodepth=4 -rw=randwrite \ -randrepeat=0 -etcd=$ETCD_URL -image=testchain -number_ios=8 -mirror_file=./testdata/mirror.bin # Check the new content @@ -26,7 +26,7 @@ qemu-img convert -p \ cmp ./testdata/layer1.bin ./testdata/mirror.bin # Merge -build/src/vitastor-cli --etcd_address $ETCD_URL rm testchain@0 +build/src/cli/vitastor-cli --etcd_address $ETCD_URL rm testchain@0 # Check the final image qemu-img convert -p \ diff --git a/tests/test_splitbrain.sh b/tests/test_splitbrain.sh index 19cf0f496..f89a22843 100755 --- a/tests/test_splitbrain.sh +++ b/tests/test_splitbrain.sh @@ -15,15 +15,15 @@ sleep 2 # Write -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=1 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=1 \ -rw=randwrite -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -runtime=10 -number_ios=100 # Kill OSD 2, start OSD 1 kill $OSD2_PID -build/src/vitastor-osd --osd_num 1 --bind_address 127.0.0.1 $NO_SAME $OSD_ARGS --etcd_address $ETCD_URL \ - $(build/src/vitastor-disk simple-offsets --format options --device ./testdata/test_osd2.bin 2>/dev/null) >>./testdata/osd2.log 2>&1 & +build/src/osd/vitastor-osd --osd_num 1 --bind_address 127.0.0.1 $NO_SAME $OSD_ARGS --etcd_address $ETCD_URL \ + $(build/src/disk_tool/vitastor-disk simple-offsets --format options --device ./testdata/test_osd2.bin 2>/dev/null) >>./testdata/osd2.log 2>&1 & sleep 2 # Check PG state - it should NOT become active diff --git a/tests/test_vm_cont.sh b/tests/test_vm_cont.sh index fb778c439..b146ae465 100755 --- a/tests/test_vm_cont.sh +++ b/tests/test_vm_cont.sh @@ -11,7 +11,7 @@ OSD_COUNT=3 OSD_ARGS="$OSD_ARGS" OFFSET_ARGS="$OFFSET_ARGS" for i in $(seq 1 $OSD_COUNT); do - build/src/vitastor-osd --osd_num $i --bind_address 127.0.0.1 $OSD_ARGS --etcd_address $ETCD_URL $(build/src/vitastor-disk simple-offsets --format options ./testdata/test_osd$i.bin 2>/dev/null) >>./testdata/osd$i.log 2>&1 & + build/src/osd/vitastor-osd --osd_num $i --bind_address 127.0.0.1 $OSD_ARGS --etcd_address $ETCD_URL $(build/src/disk_tool/vitastor-disk simple-offsets --format options ./testdata/test_osd$i.bin 2>/dev/null) >>./testdata/osd$i.log 2>&1 & eval OSD${i}_PID=$! done @@ -24,9 +24,9 @@ if ! ($ETCDCTL get /vitastor/pg/state/1/1 --print-value-only | jq -s -e '(. | le format_error "FAILED: 1 PG NOT UP" fi -if ! cmp build/src/block-vitastor.so /usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so; then +if ! cmp build/src/client/block-vitastor.so /usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so; then sudo rm -f /usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so - sudo ln -s "$(realpath .)/build/src/block-vitastor.so" /usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so + sudo ln -s "$(realpath .)/build/src/client/block-vitastor.so" /usr/lib/x86_64-linux-gnu/qemu/block-vitastor.so fi qemu-system-x86_64 -enable-kvm -m 1024 \ diff --git a/tests/test_write.sh b/tests/test_write.sh index 867ef4560..e253a5170 100755 --- a/tests/test_write.sh +++ b/tests/test_write.sh @@ -4,41 +4,41 @@ check_qemu #LD_PRELOAD=libasan.so.5 \ -# 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 +# fio -thread -name=test -ioengine=build/src/client/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 # Small sequential writes were causing various bugs at different moments echo Small sequential writes -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4k -direct=1 -numjobs=1 -iodepth=16 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4k -direct=1 -numjobs=1 -iodepth=16 \ -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -runtime=10 # Random writes without immediate_commit were stalling OSDs echo 68k random writes -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=68k -direct=1 -numjobs=16 -iodepth=4 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=68k -direct=1 -numjobs=16 -iodepth=4 \ -rw=randwrite -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -runtime=10 # A lot of parallel syncs was crashing the primary OSD at some point echo T64Q1 writes with fsync -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4k -direct=1 -numjobs=64 -iodepth=1 -fsync=1 \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4k -direct=1 -numjobs=64 -iodepth=1 -fsync=1 \ -rw=randwrite -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -number_ios=100 echo Linear write -LD_PRELOAD="build/src/libfio_vitastor.so" \ - 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=128M -cluster_log_level=10 +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -fsync=1 -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -cluster_log_level=10 echo T1Q1 writes with fsync=32 -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=32 -buffer_pattern=0xdeadface \ +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4k -direct=1 -iodepth=1 -fsync=32 -buffer_pattern=0xdeadface \ -rw=randwrite -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -number_ios=1024 qemu-img convert -S 4096 -p \ diff --git a/tests/test_write_no_same.sh b/tests/test_write_no_same.sh index 669785034..f7e583939 100755 --- a/tests/test_write_no_same.sh +++ b/tests/test_write_no_same.sh @@ -7,11 +7,11 @@ GLOBAL_CONF='{"immediate_commit":"all"}' . `dirname $0`/run_3osds.sh #LSAN_OPTIONS=report_objects=true:suppressions=`pwd`/testdata/lsan-suppress.txt LD_PRELOAD=libasan.so.5 \ -# 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 +# fio -thread -name=test -ioengine=build/src/client/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 # Test basic write -LD_PRELOAD="build/src/libfio_vitastor.so" \ - fio -thread -name=test -ioengine=build/src/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -cluster_log_level=10 +LD_PRELOAD="build/src/client/libfio_vitastor.so" \ + fio -thread -name=test -ioengine=build/src/client/libfio_vitastor.so -bs=4M -direct=1 -iodepth=1 -rw=write -etcd=$ETCD_URL -pool=1 -inode=1 -size=128M -cluster_log_level=10 format_green OK