diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 660e65ec06ff2..d54cd683ed127 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -516,157 +516,20 @@ if(${WITH_LTTNG}) add_subdirectory(tracing) endif(${WITH_LTTNG}) -set(libglobal_srcs - global/global_init.cc - global/pidfile.cc - global/signal_handler.cc) -set(global_common_files - global/global_context.cc) -add_library(global_common_objs OBJECT ${global_common_files}) -add_library(global STATIC ${libglobal_srcs} - $) -target_link_libraries(global common ${CMAKE_THREAD_LIBS_INIT} ${EXTRALIBS}) +add_subdirectory(global) # rados object classes add_subdirectory(cls) # RADOS client/library -set(osdc_files - osdc/Objecter.cc - osdc/Filer.cc) -set(osdc_rbd_files - osdc/ObjectCacher.cc - osdc/Striper.cc) -add_library(osdc_rbd_objs OBJECT ${osdc_rbd_files}) -add_library(osdc STATIC ${osdc_files} $) +add_subdirectory(osdc) add_library(rados_snap_set_diff_obj OBJECT librados/snap_set_diff.cc) -add_library(librados_objs OBJECT - librados/IoCtxImpl.cc - librados/RadosXattrIter.cc - librados/RadosClient.cc) -add_library(librados ${CEPH_SHARED} - librados/librados.cc - $ - $) -add_dependencies(librados osdc) -if(WITH_LTTNG) - add_dependencies(librados rados-tp) -endif() -# LINK_PRIVATE instead of PRIVATE is used to backward compatibility with cmake 2.8.11 -target_link_libraries(librados LINK_PRIVATE osdc common cls_lock_client - ${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS}) -if(ENABLE_SHARED) - set_target_properties(librados PROPERTIES - OUTPUT_NAME rados - VERSION 2.0.0 - SOVERSION 2 - # use COMPILE_FLAGS for the backward compatibility with cmake 2.8.11, should have been: - # CXX_VISIBILITY_PRESET hidden - # VISIBILITY_INLINES_HIDDEN ON - COMPILE_FLAGS "-fvisibility=hidden -fvisibility-inlines-hidden") -endif(ENABLE_SHARED) add_library(librados_api STATIC common/buffer.cc librados/librados.cc) -install(FILES include/rados/librados.h - include/rados/rados_types.h - include/rados/rados_types.hpp - include/rados/librados.hpp - include/buffer.h - include/buffer_fwd.h - include/memory.h - include/page.h - include/crc32c.h - DESTINATION include/rados) -install(TARGETS librados DESTINATION ${CMAKE_INSTALL_LIBDIR}) - +add_subdirectory(librados) add_subdirectory(libradosstriper) -install(FILES - include/radosstriper/libradosstriper.h - include/radosstriper/libradosstriper.hpp - DESTINATION include/radosstriper) - -add_executable(ceph_scratchtool tools/scratchtool.c) -target_link_libraries(ceph_scratchtool librados global) -install(TARGETS ceph_scratchtool DESTINATION bin) - -add_executable(ceph_scratchtoolpp tools/scratchtoolpp.cc) -target_link_libraries(ceph_scratchtoolpp librados global) -install(TARGETS ceph_scratchtoolpp DESTINATION bin) - -add_executable(ceph_radosacl tools/radosacl.cc) -target_link_libraries(ceph_radosacl librados global) -install(TARGETS ceph_radosacl DESTINATION bin) - -add_executable(ceph-osdomap-tool tools/ceph_osdomap_tool.cc) -target_link_libraries(ceph-osdomap-tool os global ${Boost_PROGRAM_OPTIONS_LIBRARY}) -install(TARGETS ceph-osdomap-tool DESTINATION bin) - -add_executable(ceph-monstore-tool tools/ceph_monstore_tool.cc) -target_link_libraries(ceph-monstore-tool os global ${Boost_PROGRAM_OPTIONS_LIBRARY}) -install(TARGETS ceph-monstore-tool DESTINATION bin) -install(PROGRAMS - tools/ceph-monstore-update-crush.sh - DESTINATION ${CMAKE_INSTALL_LIBDIR}/ceph) - -add_executable(ceph-objectstore-tool - tools/ceph_objectstore_tool.cc - tools/RadosDump.cc - $) -target_link_libraries(ceph-objectstore-tool osd os global ${Boost_PROGRAM_OPTIONS_LIBRARY} fuse ${CMAKE_DL_LIBS}) -install(TARGETS ceph-objectstore-tool DESTINATION bin) - - -set(rados_srcs - tools/rados/rados.cc - tools/RadosDump.cc - tools/rados/RadosImport.cc - tools/rados/PoolDump.cc - common/obj_bencher.cc) -add_executable(rados ${rados_srcs}) -target_link_libraries(rados librados global ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS} radosstriper) - -if (WITH_CEPHFS) - set(cephfs_journal_tool_srcs - tools/cephfs/cephfs-journal-tool.cc - tools/cephfs/JournalTool.cc - tools/cephfs/JournalFilter.cc - tools/cephfs/JournalScanner.cc - tools/cephfs/EventOutput.cc - tools/cephfs/Dumper.cc - tools/cephfs/Resetter.cc - tools/cephfs/RoleSelector.cc - tools/cephfs/MDSUtility.cc) - add_executable(cephfs-journal-tool ${cephfs_journal_tool_srcs}) - target_link_libraries(cephfs-journal-tool librados mds osdc global - ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS}) - - set(cephfs_table_tool_srcs - tools/cephfs/cephfs-table-tool.cc - tools/cephfs/TableTool.cc - tools/cephfs/RoleSelector.cc - tools/cephfs/MDSUtility.cc) - add_executable(cephfs-table-tool ${cephfs_table_tool_srcs}) - target_link_libraries(cephfs-table-tool librados mds osdc global - ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS}) - - set(cephfs_data_scan_srcs - tools/cephfs/cephfs-data-scan.cc - tools/cephfs/DataScan.cc - tools/cephfs/RoleSelector.cc - tools/cephfs/MDSUtility.cc) - add_executable(cephfs-data-scan ${cephfs_data_scan_srcs}) - target_link_libraries(cephfs-data-scan librados mds osdc global - cls_cephfs_client - ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS}) - - install(TARGETS - cephfs-journal-tool - cephfs-table-tool - cephfs-data-scan - DESTINATION bin) -endif (WITH_CEPHFS) set(librados_config_srcs librados-config.cc) @@ -674,7 +537,7 @@ add_executable(librados-config ${librados_config_srcs}) target_link_libraries(librados-config librados global ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS}) -install(TARGETS rados librados-config DESTINATION bin) +install(TARGETS librados-config DESTINATION bin) # virtualenv base directory for ceph-disk and ceph-detect-init set(CEPH_BUILD_VIRTUALENV $ENV{TMPDIR}) @@ -753,33 +616,11 @@ target_link_libraries(ceph-dencoder install(TARGETS ceph-dencoder DESTINATION bin) # Monitor -set(lib_mon_srcs - auth/cephx/CephxKeyServer.cc - auth/cephx/CephxServiceHandler.cc - auth/AuthServiceHandler.cc - ${osd_mon_files} mon/Paxos.cc - mon/PaxosService.cc - mon/OSDMonitor.cc - mon/MDSMonitor.cc - mon/MonmapMonitor.cc - mon/LogMonitor.cc - mon/AuthMonitor.cc - mon/Elector.cc - mon/HealthMonitor.cc - ${os_mon_files} - mon/DataHealthService.cc - mon/PGMonitor.cc - mon/PGMap.cc - mon/ConfigKeyService.cc) - set(common_util_src common/util.cc) add_library(common_util_obj OBJECT ${common_util_src}) -add_library(mon STATIC ${lib_mon_srcs} $ - $ $ - $ $) -target_link_libraries(mon ${ALLOC_LIBS}) +add_subdirectory(mon) set(ceph_mon_srcs ceph_mon.cc) add_executable(ceph-mon ${ceph_mon_srcs} @@ -789,75 +630,7 @@ add_dependencies(ceph-mon erasure_code_plugins) ${CMAKE_DL_LIBS}) install(TARGETS ceph-mon DESTINATION bin) -# OSD -if(${HAVE_LIBXFS}) - set(libos_xfs_srcs - os/filestore/XfsFileStoreBackend.cc - os/fs/XFS.cc) -endif(${HAVE_LIBXFS}) -set(libos_srcs - os/ObjectStore.cc - os/Transaction.cc - os/filestore/chain_xattr.cc - os/filestore/BtrfsFileStoreBackend.cc - os/filestore/DBObjectMap.cc - os/filestore/FileJournal.cc - os/filestore/FileStore.cc - os/filestore/JournalThrottle.cc - os/filestore/GenericFileStoreBackend.cc - os/filestore/JournalingObjectStore.cc - os/filestore/HashIndex.cc - os/filestore/IndexManager.cc - os/filestore/LFNIndex.cc - os/filestore/WBThrottle.cc - os/filestore/ZFSFileStoreBackend.cc - os/memstore/MemStore.cc - os/kstore/KStore.cc - os/kstore/kstore_types.cc - os/bluestore/kv.cc - os/bluestore/Allocator.cc - os/bluestore/BitmapFreelistManager.cc - os/bluestore/BlockDevice.cc - os/bluestore/BlueFS.cc - os/bluestore/bluefs_types.cc - os/bluestore/BlueRocksEnv.cc - os/bluestore/BlueStore.cc - os/bluestore/bluestore_types.cc - os/bluestore/ExtentFreelistManager.cc - os/bluestore/FreelistManager.cc - os/bluestore/KernelDevice.cc - os/bluestore/StupidAllocator.cc - os/bluestore/BitMapAllocator.cc - os/bluestore/BitAllocator.cc - os/fs/FS.cc - ${libos_xfs_srcs}) -if(${HAVE_LIBFUSE}) - list(APPEND libos_srcs - os/FuseStore.cc) -endif(${HAVE_LIBFUSE}) -if(WITH_SPDK) - list(APPEND libos_srcs - os/bluestore/NVMEDevice.cc) -endif(WITH_SPDK) - -if(WITH_SPDK) - add_custom_target(build_spdk - COMMAND - $(MAKE) DPDK_INC_DIR=${DPDK_INCLUDE_DIR} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/spdk/lib - COMMENT "spdk building") - # TODO: should use add_library(spdk INTERFACE IMPORTED) instead in new cmake, - # if INTERFACE is supported. - foreach(lib nvme memory util) - add_library(spdk_${lib} STATIC IMPORTED) - add_dependencies(spdk_${lib} build_spdk) - set_target_properties(spdk_${lib} PROPERTIES - IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/src/spdk/lib/${lib}/libspdk_${lib}.a" - INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/src/spdk/include") - list(APPEND SPDK_LIBRARIES spdk_${lib}) - endforeach() -endif(WITH_SPDK) - +# OSD/ObjectStore # make rocksdb statically if(NOT ALLOCATOR STREQUAL "jemalloc") set(disable_jemalloc "DISABLE_JEMALLOC=1") @@ -875,80 +648,12 @@ add_dependencies(rocksdb build_rocksdb) set(ROCKSDB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/src/rocksdb/include) add_subdirectory(kv) - -add_library(os STATIC ${libos_srcs} $) -if(${HAVE_LIBAIO}) - target_link_libraries(os aio) -endif(${HAVE_LIBAIO}) -if(${HAVE_LIBFUSE}) - target_link_libraries(os ${FUSE_LIBRARIES}) -endif(${HAVE_LIBFUSE}) -if(WITH_SPDK) - target_link_libraries(os - ${SPDK_LIBRARIES} - ${DPDK_LIBRARIES} - ${PCIACCESS_LIBRARIES}) - target_include_directories(os - PRIVATE - ${DPDK_INCLUDE_DIR} - ${PCIACCESS_INCLUDE_DIR}) -endif(WITH_SPDK) -if(WITH_LTTNG) - add_dependencies(os os-tp) -endif() -target_link_libraries(os kv) -if(HAVE_LIBAIO) - add_executable(ceph-bluefs-tool - os/bluestore/bluefs_tool.cc) - target_link_libraries(ceph-bluefs-tool - os global) - install(TARGETS ceph-bluefs-tool - DESTINATION bin) -endif() -add_dependencies(os compressor_plugins) +add_subdirectory(os) set(cls_references_files objclass/class_api.cc) add_library(cls_references_objs OBJECT ${cls_references_files}) -set(osdc_osd_srcs - osdc/Objecter.cc - osdc/Striper.cc) - -set(osd_srcs - osd/OSD.cc - osd/Watch.cc - osd/ClassHandler.cc - osd/OpRequest.cc - osd/PG.cc - osd/PGLog.cc - osd/ReplicatedPG.cc - osd/ReplicatedBackend.cc - osd/ECBackend.cc - osd/ECTransaction.cc - osd/PGBackend.cc - osd/OSDCap.cc - osd/Watch.cc - osd/ClassHandler.cc - common/TrackedOp.cc - osd/SnapMapper.cc - osd/ScrubStore.cc - osd/osd_types.cc - osd/ECUtil.cc - ${osdc_osd_srcs}) -set(osd_mon_files - mon/Monitor.cc) -add_library(osd_mon_objs OBJECT ${osd_mon_files}) -add_library(osd STATIC ${osd_srcs} - $ - $ - $ - $ - $) -target_link_libraries(osd ${CMAKE_DL_LIBS} leveldb ${ALLOC_LIBS}) -if(WITH_LTTNG) - add_dependencies(osd osd-tp) -endif() - +add_subdirectory(osd) set(ceph_osd_srcs ceph_osd.cc) add_executable(ceph-osd ${ceph_osd_srcs} @@ -960,48 +665,7 @@ if(${HAVE_LIBFUSE}) endif(${HAVE_LIBFUSE}) install(TARGETS ceph-osd DESTINATION bin) -# MDS -set(mds_srcs - mds/Capability.cc - mds/MDSDaemon.cc - mds/MDSRank.cc - mds/Beacon.cc - mds/flock.cc - mds/locks.c - mds/journal.cc - mds/Server.cc - mds/Mutation.cc - mds/MDCache.cc - mds/RecoveryQueue.cc - mds/StrayManager.cc - mds/Locker.cc - mds/Migrator.cc - mds/MDBalancer.cc - mds/CDentry.cc - mds/CDir.cc - mds/CInode.cc - mds/LogEvent.cc - mds/MDSTable.cc - mds/InoTable.cc - mds/JournalPointer.cc - mds/MDSTableClient.cc - mds/MDSTableServer.cc - mds/ScrubStack.cc - mds/DamageTable.cc - mds/SimpleLock.cc - mds/SnapRealm.cc - mds/SnapServer.cc - mds/snap.cc - mds/SessionMap.cc - mds/MDSContext.cc - mds/MDSAuthCaps.cc - mds/MDLog.cc - ${CMAKE_SOURCE_DIR}/src/common/TrackedOp.cc - ${CMAKE_SOURCE_DIR}/src/osdc/Journaler.cc) -add_library(mds STATIC ${mds_srcs} - $ - $) -target_link_libraries(mds ${ALLOC_LIBS} osdc common) +add_subdirectory(mds) set(ceph_mds_srcs ceph_mds.cc) add_executable(ceph-mds ${ceph_mds_srcs} @@ -1012,12 +676,6 @@ install(TARGETS ceph-mds DESTINATION bin) add_subdirectory(erasure-code) -set(crushtool_srcs - tools/crushtool.cc) -add_executable(crushtool ${crushtool_srcs}) -target_link_libraries(crushtool global) -install(TARGETS crushtool DESTINATION bin) - # Support/Tools add_subdirectory(googletest/googlemock) @@ -1088,20 +746,9 @@ set(parse_secret_files add_library(parse_secret_objs OBJECT ${parse_secret_files}) if(WITH_LIBCEPHFS) - set(libclient_srcs - client/Client.cc - client/Dentry.cc - client/Inode.cc - client/MetaRequest.cc - client/ClientSnapRealm.cc - client/MetaSession.cc - client/Trace.cc - client/posix_acl.cc) - add_library(client STATIC ${libclient_srcs}) - target_link_libraries(client osdc mds) + add_subdirectory(client) set(libcephfs_srcs libcephfs.cc) - add_library(cephfs ${CEPH_SHARED} ${libcephfs_srcs} - $) + add_library(cephfs ${CEPH_SHARED} ${libcephfs_srcs}) target_link_libraries(cephfs LINK_PRIVATE client ${CRYPTO_LIBS} ${EXTRALIBS}) if(ENABLE_SHARED) @@ -1142,37 +789,14 @@ if(WITH_LIBCEPHFS) endif(HAVE_LIBFUSE) endif(WITH_LIBCEPHFS) -set(journal_srcs - journal/AsyncOpTracker.cc - journal/Entry.cc - journal/Future.cc - journal/FutureImpl.cc - journal/Journaler.cc - journal/JournalMetadata.cc - journal/JournalPlayer.cc - journal/JournalRecorder.cc - journal/JournalTrimmer.cc - journal/ObjectPlayer.cc - journal/ObjectRecorder.cc - journal/Utils.cc) -add_library(journal STATIC ${journal_srcs}) +add_subdirectory(journal) add_library(krbd_objs OBJECT krbd.cc) if(${WITH_RBD}) add_subdirectory(librbd) - install(FILES - include/rbd/features.h - include/rbd/librbd.h - include/rbd/librbd.hpp - DESTINATION include/rbd) - if(WITH_FUSE) - add_executable(rbd-fuse - rbd_fuse/rbd-fuse.cc) - target_link_libraries(rbd-fuse - librbd librados ${FUSE_LIBRARIES}) - install(TARGETS rbd-fuse DESTINATION bin) + add_subdirectory(rbd_fuse) endif() install(PROGRAMS @@ -1184,86 +808,11 @@ if(${WITH_RBD}) endif(${WITH_RBD}) # RadosGW -if(${WITH_KVS}) - set(kvs_srcs - key_value_store/cls_kvs.cc) - add_library(cls_kvs SHARED ${kvs_srcs}) - set_target_properties(cls_kvs PROPERTIES VERSION "1.0.0" SOVERSION "1") - install(TARGETS cls_kvs DESTINATION ${CMAKE_INSTALL_LIBDIR}/rados-classes) -endif(${WITH_KVS}) +if(WITH_KVS) + add_subdirectory(key_value_store) +endif(WITH_KVS) if(${WITH_RADOSGW}) - - set(rgw_a_srcs - rgw/rgw_acl.cc - rgw/rgw_acl_s3.cc - rgw/rgw_acl_swift.cc - rgw/rgw_auth.cc - rgw/rgw_auth_s3.cc - rgw/rgw_basic_types.cc - rgw/rgw_bucket.cc - rgw/rgw_cache.cc - rgw/rgw_client_io.cc - rgw/rgw_common.cc - rgw/rgw_cors.cc - rgw/rgw_cors_s3.cc - rgw/rgw_dencoder.cc - rgw/rgw_env.cc - rgw/rgw_fcgi.cc - rgw/rgw_formats.cc - rgw/rgw_frontend.cc - rgw/rgw_gc.cc - rgw/rgw_http_client.cc - rgw/rgw_json_enc.cc - rgw/rgw_keystone.cc - rgw/rgw_ldap.cc - rgw/rgw_loadgen.cc - rgw/rgw_log.cc - rgw/rgw_metadata.cc - rgw/rgw_multi.cc - rgw/rgw_multi_del.cc - rgw/rgw_sync.cc - rgw/rgw_data_sync.cc - rgw/rgw_period_history.cc - rgw/rgw_period_puller.cc - rgw/rgw_period_pusher.cc - rgw/rgw_realm_reloader.cc - rgw/rgw_realm_watcher.cc - rgw/rgw_coroutine.cc - rgw/rgw_cr_rados.cc - rgw/rgw_object_expirer_core.cc - rgw/rgw_op.cc - rgw/rgw_os_lib.cc - rgw/rgw_policy_s3.cc - rgw/rgw_process.cc - rgw/rgw_quota.cc - rgw/rgw_rados.cc - rgw/rgw_replica_log.cc - rgw/rgw_request.cc - rgw/rgw_resolve.cc - rgw/rgw_rest_bucket.cc - rgw/rgw_rest.cc - rgw/rgw_rest_client.cc - rgw/rgw_rest_config.cc - rgw/rgw_rest_conn.cc - rgw/rgw_rest_log.cc - rgw/rgw_rest_metadata.cc - rgw/rgw_rest_opstate.cc - rgw/rgw_rest_realm.cc - rgw/rgw_rest_replica_log.cc - rgw/rgw_rest_s3.cc - rgw/rgw_rest_swift.cc - rgw/rgw_rest_usage.cc - rgw/rgw_rest_user.cc - rgw/rgw_swift_auth.cc - rgw/rgw_tools.cc - rgw/rgw_usage.cc - rgw/rgw_user.cc - rgw/rgw_website.cc - rgw/rgw_xml.cc - rgw/rgw_xml_enc.cc - ) - set(civetweb_common_files civetweb/src/civetweb.c) add_library(civetweb_common_objs OBJECT ${civetweb_common_files}) target_include_directories(civetweb_common_objs PUBLIC @@ -1273,97 +822,7 @@ if(${WITH_RADOSGW}) APPEND PROPERTY COMPILE_DEFINITIONS NO_SSL_DL=1) target_include_directories(civetweb_common_objs PUBLIC "${SSL_INCLUDE_DIR}") - else(HAVE_SSL) endif(HAVE_SSL) - - add_library(rgw_a STATIC ${rgw_a_srcs}) - target_include_directories(rgw_a PUBLIC ${FCGI_INCLUDE_DIR}) - target_link_libraries(rgw_a librados cls_rgw_client cls_refcount_client - cls_log_client cls_statelog_client cls_timeindex_client cls_version_client - cls_replica_log_client cls_user_client curl global expat ${OPENLDAP_LIBS} - ${CRYPTO_LIBS}) - - set(radosgw_srcs - rgw/rgw_fcgi_process.cc - rgw/rgw_loadgen_process.cc - rgw/rgw_civetweb.cc - rgw/rgw_civetweb_frontend.cc - rgw/rgw_civetweb_log.cc - rgw/rgw_main.cc) - - set(radosgw_admin_srcs - rgw/rgw_admin.cc - rgw/rgw_orphan.cc) - - set(radosgw_token_srcs - rgw/rgw_token.cc) - - set(radosgw_object_expirer_srcs - rgw/rgw_object_expirer.cc) - - set(librgw_srcs - rgw/librgw.cc - rgw/rgw_file.cc - ) - - add_library(rgw SHARED ${librgw_srcs}) - target_link_libraries(rgw LINK_PRIVATE - rgw_a - librados - cls_rgw_client - cls_lock_client - cls_refcount_client - cls_log_client - cls_statelog_client - cls_timeindex_client - cls_version_client - cls_replica_log_client - cls_user_client - curl expat global - resolv) - set_target_properties(rgw PROPERTIES OUTPUT_NAME rgw VERSION 2.0.0 - SOVERSION 1) - - install(TARGETS rgw DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(FILES - include/rados/librgw.h - include/rados/rgw_file.h - DESTINATION include/rados) - - add_executable(radosgw ${radosgw_srcs} $) - target_link_libraries(radosgw rgw_a librados - cls_rgw_client cls_lock_client cls_refcount_client - cls_log_client cls_statelog_client cls_timeindex_client - cls_version_client cls_replica_log_client cls_user_client - curl expat global fcgi resolv ${SSL_LIBRARIES} ${BLKID_LIBRARIES} - ${ALLOC_LIBS}) - # radosgw depends on cls libraries at runtime, but not as link dependencies - add_dependencies(radosgw cls_rgw cls_lock cls_refcount - cls_log cls_statelog cls_timeindex - cls_version cls_replica_log cls_user) - install(TARGETS radosgw DESTINATION bin) - - add_executable(radosgw-admin ${radosgw_admin_srcs}) - target_link_libraries(radosgw-admin rgw_a librados - cls_rgw_client cls_lock_client cls_refcount_client - cls_log_client cls_statelog_client cls_timeindex_client - cls_version_client cls_replica_log_client cls_user_client - curl expat global fcgi resolv ${SSL_LIBRARIES} ${BLKID_LIBRARIES}) - - install(TARGETS radosgw-admin DESTINATION bin) - - add_executable(radosgw-token ${radosgw_token_srcs}) - target_link_libraries(radosgw-token librados - global ${ALLOC_LIBS}) - install(TARGETS radosgw-token DESTINATION bin) - - add_executable(radosgw-object-expirer ${radosgw_object_expirer_srcs}) - target_link_libraries(radosgw-object-expirer rgw_a librados - cls_rgw_client cls_lock_client cls_refcount_client - cls_log_client cls_statelog_client cls_timeindex_client - cls_version_client cls_replica_log_client cls_user_client - curl expat global fcgi resolv) - install(TARGETS radosgw-object-expirer DESTINATION bin) add_subdirectory(rgw) endif(${WITH_RADOSGW}) diff --git a/src/client/CMakeLists.txt b/src/client/CMakeLists.txt new file mode 100644 index 0000000000000..d7f45f43402a7 --- /dev/null +++ b/src/client/CMakeLists.txt @@ -0,0 +1,11 @@ +set(libclient_srcs + Client.cc + Dentry.cc + Inode.cc + MetaRequest.cc + ClientSnapRealm.cc + MetaSession.cc + Trace.cc + posix_acl.cc) +add_library(client STATIC ${libclient_srcs}) +target_link_libraries(client osdc mds) diff --git a/src/global/CMakeLists.txt b/src/global/CMakeLists.txt new file mode 100644 index 0000000000000..7cbee098d977f --- /dev/null +++ b/src/global/CMakeLists.txt @@ -0,0 +1,10 @@ +set(libglobal_srcs + global_init.cc + pidfile.cc + signal_handler.cc) +set(global_common_files + global_context.cc) +add_library(global_common_objs OBJECT ${global_common_files}) +add_library(global STATIC ${libglobal_srcs} + $) +target_link_libraries(global common ${CMAKE_THREAD_LIBS_INIT} ${EXTRALIBS}) diff --git a/src/include/CMakeLists.txt b/src/include/CMakeLists.txt new file mode 100644 index 0000000000000..f4fd50defd9aa --- /dev/null +++ b/src/include/CMakeLists.txt @@ -0,0 +1,29 @@ +install(FILES rados/librados.h + rados/rados_types.h + rados/rados_types.hpp + rados/librados.hpp + buffer.h + buffer_fwd.h + memory.h + page.h + crc32c.h + DESTINATION include/rados) +install(FILES + radosstriper/libradosstriper.h + radosstriper/libradosstriper.hpp + DESTINATION include/radosstriper) + +if(WITH_RBD) + install(FILES + rbd/features.h + rbd/librbd.h + rbd/librbd.hpp + DESTINATION include/rbd) +endif() + +if(WITH_RADOSGW) + install(FILES + rados/librgw.h + rados/rgw_file.h + DESTINATION include/rados) +endif() diff --git a/src/journal/CMakeLists.txt b/src/journal/CMakeLists.txt new file mode 100644 index 0000000000000..e5337127200d1 --- /dev/null +++ b/src/journal/CMakeLists.txt @@ -0,0 +1,14 @@ +set(journal_srcs + AsyncOpTracker.cc + Entry.cc + Future.cc + FutureImpl.cc + Journaler.cc + JournalMetadata.cc + JournalPlayer.cc + JournalRecorder.cc + JournalTrimmer.cc + ObjectPlayer.cc + ObjectRecorder.cc + Utils.cc) +add_library(journal STATIC ${journal_srcs}) diff --git a/src/key_value_store/CMakeLists.txt b/src/key_value_store/CMakeLists.txt new file mode 100644 index 0000000000000..babfb6bc4c8c2 --- /dev/null +++ b/src/key_value_store/CMakeLists.txt @@ -0,0 +1,4 @@ +set(kvs_srcs cls_kvs.cc) +add_library(cls_kvs SHARED ${kvs_srcs}) +set_target_properties(cls_kvs PROPERTIES VERSION "1.0.0" SOVERSION "1") +install(TARGETS cls_kvs DESTINATION ${CMAKE_INSTALL_LIBDIR}/rados-classes) diff --git a/src/librados/CMakeLists.txt b/src/librados/CMakeLists.txt new file mode 100644 index 0000000000000..b4335a606b86d --- /dev/null +++ b/src/librados/CMakeLists.txt @@ -0,0 +1,25 @@ +add_library(librados_objs OBJECT + IoCtxImpl.cc + RadosXattrIter.cc + RadosClient.cc) +add_library(librados ${CEPH_SHARED} + librados.cc + $) +add_dependencies(librados osdc) +if(WITH_LTTNG) + add_dependencies(librados rados-tp) +endif() +# LINK_PRIVATE instead of PRIVATE is used to backward compatibility with cmake 2.8.11 +target_link_libraries(librados LINK_PRIVATE osdc common cls_lock_client + ${BLKID_LIBRARIES} ${CRYPTO_LIBS} ${EXTRALIBS}) +if(ENABLE_SHARED) + set_target_properties(librados PROPERTIES + OUTPUT_NAME rados + VERSION 2.0.0 + SOVERSION 2 + # use COMPILE_FLAGS for the backward compatibility with cmake 2.8.11, should have been: + # CXX_VISIBILITY_PRESET hidden + # VISIBILITY_INLINES_HIDDEN ON + COMPILE_FLAGS "-fvisibility=hidden -fvisibility-inlines-hidden") +endif(ENABLE_SHARED) +install(TARGETS librados DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/src/mds/CMakeLists.txt b/src/mds/CMakeLists.txt new file mode 100644 index 0000000000000..21fb37d871a66 --- /dev/null +++ b/src/mds/CMakeLists.txt @@ -0,0 +1,41 @@ +set(mds_srcs + Capability.cc + MDSDaemon.cc + MDSRank.cc + Beacon.cc + flock.cc + locks.c + journal.cc + Server.cc + Mutation.cc + MDCache.cc + RecoveryQueue.cc + StrayManager.cc + Locker.cc + Migrator.cc + MDBalancer.cc + CDentry.cc + CDir.cc + CInode.cc + LogEvent.cc + MDSTable.cc + InoTable.cc + JournalPointer.cc + MDSTableClient.cc + MDSTableServer.cc + ScrubStack.cc + DamageTable.cc + SimpleLock.cc + SnapRealm.cc + SnapServer.cc + snap.cc + SessionMap.cc + MDSContext.cc + MDSAuthCaps.cc + MDLog.cc + ${CMAKE_SOURCE_DIR}/src/common/TrackedOp.cc + ${CMAKE_SOURCE_DIR}/src/osdc/Journaler.cc) +add_library(mds STATIC ${mds_srcs} + $ + $) +target_link_libraries(mds ${ALLOC_LIBS} osdc common) diff --git a/src/mon/CMakeLists.txt b/src/mon/CMakeLists.txt new file mode 100644 index 0000000000000..05980e18ff43d --- /dev/null +++ b/src/mon/CMakeLists.txt @@ -0,0 +1,26 @@ +set(osd_mon_files + Monitor.cc) +add_library(osd_mon_objs OBJECT ${osd_mon_files}) + +set(lib_mon_srcs + ${CMAKE_SOURCE_DIR}/src/auth/cephx/CephxKeyServer.cc + ${CMAKE_SOURCE_DIR}/src/auth/cephx/CephxServiceHandler.cc + ${CMAKE_SOURCE_DIR}/src/auth/AuthServiceHandler.cc + ${osd_mon_files} + Paxos.cc + PaxosService.cc + OSDMonitor.cc + MDSMonitor.cc + MonmapMonitor.cc + LogMonitor.cc + AuthMonitor.cc + Elector.cc + HealthMonitor.cc + DataHealthService.cc + PGMonitor.cc + PGMap.cc + ConfigKeyService.cc) +add_library(mon STATIC ${lib_mon_srcs} $ + $ $ + $ $) +target_link_libraries(mon ${ALLOC_LIBS}) diff --git a/src/os/CMakeLists.txt b/src/os/CMakeLists.txt new file mode 100644 index 0000000000000..e5983d749384c --- /dev/null +++ b/src/os/CMakeLists.txt @@ -0,0 +1,108 @@ +if(HAVE_LIBXFS) + set(libos_xfs_srcs + filestore/XfsFileStoreBackend.cc + fs/XFS.cc) +endif(HAVE_LIBXFS) + +set(libos_srcs + ObjectStore.cc + Transaction.cc + filestore/chain_xattr.cc + filestore/BtrfsFileStoreBackend.cc + filestore/DBObjectMap.cc + filestore/FileJournal.cc + filestore/FileStore.cc + filestore/JournalThrottle.cc + filestore/GenericFileStoreBackend.cc + filestore/JournalingObjectStore.cc + filestore/HashIndex.cc + filestore/IndexManager.cc + filestore/LFNIndex.cc + filestore/WBThrottle.cc + filestore/ZFSFileStoreBackend.cc + memstore/MemStore.cc + kstore/KStore.cc + kstore/kstore_types.cc + bluestore/kv.cc + bluestore/Allocator.cc + bluestore/BitmapFreelistManager.cc + bluestore/BlockDevice.cc + bluestore/BlueFS.cc + bluestore/bluefs_types.cc + bluestore/BlueRocksEnv.cc + bluestore/BlueStore.cc + bluestore/bluestore_types.cc + bluestore/ExtentFreelistManager.cc + bluestore/FreelistManager.cc + bluestore/KernelDevice.cc + bluestore/StupidAllocator.cc + bluestore/BitMapAllocator.cc + bluestore/BitAllocator.cc + fs/FS.cc + ${libos_xfs_srcs}) + +if(HAVE_LIBFUSE) + list(APPEND libos_srcs + FuseStore.cc) +endif() + +if(WITH_SPDK) + list(APPEND libos_srcs + bluestore/NVMEDevice.cc) +endif() + +add_library(os STATIC ${libos_srcs} $) + +if(HAVE_LIBAIO) + target_link_libraries(os aio) +endif() + +if(HAVE_LIBFUSE) + target_link_libraries(os ${FUSE_LIBRARIES}) +endif() + +if(WITH_SPDK) + target_link_libraries(os + ${SPDK_LIBRARIES} + ${DPDK_LIBRARIES} + ${PCIACCESS_LIBRARIES}) + target_include_directories(os + PRIVATE + ${DPDK_INCLUDE_DIR} + ${PCIACCESS_INCLUDE_DIR}) +endif(WITH_SPDK) + +if(WITH_LTTNG) + add_dependencies(os os-tp) +endif() + +target_link_libraries(os kv) + +add_dependencies(os compressor_plugins) + +if(HAVE_LIBAIO) + add_executable(ceph-bluefs-tool + bluestore/bluefs_tool.cc) + target_link_libraries(ceph-bluefs-tool + os global) + install(TARGETS ceph-bluefs-tool + DESTINATION bin) +endif() + +if(WITH_SPDK) + add_custom_target(build_spdk + COMMAND + $(MAKE) DPDK_INC_DIR=${DPDK_INCLUDE_DIR} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/spdk/lib + COMMENT "spdk building") + # TODO: should use add_library(spdk INTERFACE IMPORTED) instead in new cmake, + # if INTERFACE is supported. + foreach(lib nvme memory util) + add_library(spdk_${lib} STATIC IMPORTED) + add_dependencies(spdk_${lib} build_spdk) + set_target_properties(spdk_${lib} PROPERTIES + IMPORTED_LOCATION "${CMAKE_SOURCE_DIR}/src/spdk/lib/${lib}/libspdk_${lib}.a" + INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/src/spdk/include") + list(APPEND SPDK_LIBRARIES spdk_${lib}) + endforeach() +endif(WITH_SPDK) diff --git a/src/osd/CMakeLists.txt b/src/osd/CMakeLists.txt new file mode 100644 index 0000000000000..300538671654f --- /dev/null +++ b/src/osd/CMakeLists.txt @@ -0,0 +1,39 @@ +set(osdc_osd_srcs + ${CMAKE_SOURCE_DIR}/src/osdc/Objecter.cc + ${CMAKE_SOURCE_DIR}/src/osdc/Striper.cc) + +set(osd_srcs + OSD.cc + Watch.cc + ClassHandler.cc + OpRequest.cc + PG.cc + PGLog.cc + ReplicatedPG.cc + ReplicatedBackend.cc + ECBackend.cc + ECTransaction.cc + PGBackend.cc + OSDCap.cc + Watch.cc + ClassHandler.cc + SnapMapper.cc + ScrubStore.cc + osd_types.cc + ECUtil.cc + ${CMAKE_SOURCE_DIR}/src/common/TrackedOp.cc + ${osdc_osd_srcs}) +if(HAS_VTA) + set_source_files_properties(osdcap.cc + PROPERTIES COMPILE_FLAGS -fno-var-tracking-assignments) +endif() +add_library(osd STATIC ${osd_srcs} + $ + $ + $ + $ + $) +target_link_libraries(osd leveldb ${CMAKE_DL_LIBS} ${ALLOC_LIBS}) +if(WITH_LTTNG) + add_dependencies(osd osd-tp) +endif() diff --git a/src/osdc/CMakeLists.txt b/src/osdc/CMakeLists.txt new file mode 100644 index 0000000000000..5335e2aea6b07 --- /dev/null +++ b/src/osdc/CMakeLists.txt @@ -0,0 +1,8 @@ +set(osdc_files + Objecter.cc + Filer.cc) +set(osdc_rbd_files + ObjectCacher.cc + Striper.cc) +add_library(osdc_rbd_objs OBJECT ${osdc_rbd_files}) +add_library(osdc STATIC ${osdc_files} $) diff --git a/src/rbd_fuse/CMakeLists.txt b/src/rbd_fuse/CMakeLists.txt new file mode 100644 index 0000000000000..efeda706cc8a5 --- /dev/null +++ b/src/rbd_fuse/CMakeLists.txt @@ -0,0 +1,5 @@ +add_executable(rbd-fuse + rbd-fuse.cc) +target_link_libraries(rbd-fuse + librbd librados ${FUSE_LIBRARIES}) +install(TARGETS rbd-fuse DESTINATION bin) diff --git a/src/rgw/CMakeLists.txt b/src/rgw/CMakeLists.txt index eb259d093e532..fa66eb4ba5303 100644 --- a/src/rgw/CMakeLists.txt +++ b/src/rgw/CMakeLists.txt @@ -14,3 +14,150 @@ install(TARGETS ceph_rgw_jsonparser ceph_rgw_multiparser DESTINATION bin) + + +set(rgw_a_srcs + rgw_acl.cc + rgw_acl_s3.cc + rgw_acl_swift.cc + rgw_auth.cc + rgw_auth_s3.cc + rgw_basic_types.cc + rgw_bucket.cc + rgw_cache.cc + rgw_client_io.cc + rgw_common.cc + rgw_cors.cc + rgw_cors_s3.cc + rgw_dencoder.cc + rgw_env.cc + rgw_fcgi.cc + rgw_formats.cc + rgw_frontend.cc + rgw_gc.cc + rgw_http_client.cc + rgw_json_enc.cc + rgw_keystone.cc + rgw_ldap.cc + rgw_loadgen.cc + rgw_log.cc + rgw_metadata.cc + rgw_multi.cc + rgw_multi_del.cc + rgw_sync.cc + rgw_data_sync.cc + rgw_period_history.cc + rgw_period_puller.cc + rgw_period_pusher.cc + rgw_realm_reloader.cc + rgw_realm_watcher.cc + rgw_coroutine.cc + rgw_cr_rados.cc + rgw_object_expirer_core.cc + rgw_op.cc + rgw_os_lib.cc + rgw_policy_s3.cc + rgw_process.cc + rgw_quota.cc + rgw_rados.cc + rgw_replica_log.cc + rgw_request.cc + rgw_resolve.cc + rgw_rest_bucket.cc + rgw_rest.cc + rgw_rest_client.cc + rgw_rest_config.cc + rgw_rest_conn.cc + rgw_rest_log.cc + rgw_rest_metadata.cc + rgw_rest_opstate.cc + rgw_rest_realm.cc + rgw_rest_replica_log.cc + rgw_rest_s3.cc + rgw_rest_swift.cc + rgw_rest_usage.cc + rgw_rest_user.cc + rgw_swift_auth.cc + rgw_tools.cc + rgw_usage.cc + rgw_user.cc + rgw_website.cc + rgw_xml.cc + rgw_xml_enc.cc) + +add_library(rgw_a STATIC ${rgw_a_srcs}) +target_include_directories(rgw_a PUBLIC ${FCGI_INCLUDE_DIR}) +target_link_libraries(rgw_a librados cls_rgw_client cls_refcount_client + cls_log_client cls_statelog_client cls_timeindex_client cls_version_client + cls_replica_log_client cls_user_client curl global expat ${OPENLDAP_LIBS} + ${CRYPTO_LIBS}) + +set(radosgw_srcs + rgw_fcgi_process.cc + rgw_loadgen_process.cc + rgw_civetweb.cc + rgw_civetweb_frontend.cc + rgw_civetweb_log.cc + rgw_main.cc) +add_executable(radosgw ${radosgw_srcs} $) +target_link_libraries(radosgw rgw_a librados + cls_rgw_client cls_lock_client cls_refcount_client + cls_log_client cls_statelog_client cls_timeindex_client + cls_version_client cls_replica_log_client cls_user_client + curl expat global fcgi resolv ${SSL_LIBRARIES} ${BLKID_LIBRARIES} + ${ALLOC_LIBS}) +# radosgw depends on cls libraries at runtime, but not as link dependencies +add_dependencies(radosgw cls_rgw cls_lock cls_refcount + cls_log cls_statelog cls_timeindex + cls_version cls_replica_log cls_user) +install(TARGETS radosgw DESTINATION bin) + +set(radosgw_admin_srcs + rgw_admin.cc + rgw_orphan.cc) +add_executable(radosgw-admin ${radosgw_admin_srcs}) +target_link_libraries(radosgw-admin rgw_a librados + cls_rgw_client cls_lock_client cls_refcount_client + cls_log_client cls_statelog_client cls_timeindex_client + cls_version_client cls_replica_log_client cls_user_client + curl expat global fcgi resolv ${SSL_LIBRARIES} ${BLKID_LIBRARIES}) +install(TARGETS radosgw-admin DESTINATION bin) + +set(radosgw_token_srcs + rgw_token.cc) +add_executable(radosgw-token ${radosgw_token_srcs}) +target_link_libraries(radosgw-token librados + global ${ALLOC_LIBS}) +install(TARGETS radosgw-token DESTINATION bin) + +set(radosgw_object_expirer_srcs + rgw_object_expirer.cc) +add_executable(radosgw-object-expirer ${radosgw_object_expirer_srcs}) +target_link_libraries(radosgw-object-expirer rgw_a librados + cls_rgw_client cls_lock_client cls_refcount_client + cls_log_client cls_statelog_client cls_timeindex_client + cls_version_client cls_replica_log_client cls_user_client + curl expat global fcgi resolv) +install(TARGETS radosgw-object-expirer DESTINATION bin) + +set(librgw_srcs + librgw.cc + rgw_file.cc) +add_library(rgw SHARED ${librgw_srcs}) +target_link_libraries(rgw LINK_PRIVATE + rgw_a + librados + cls_rgw_client + cls_lock_client + cls_refcount_client + cls_log_client + cls_statelog_client + cls_timeindex_client + cls_version_client + cls_replica_log_client + cls_user_client + curl expat global + resolv) +set_target_properties(rgw PROPERTIES OUTPUT_NAME rgw VERSION 2.0.0 + SOVERSION 1) +install(TARGETS rgw DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt index 85a3943f571cb..a93a96add5291 100644 --- a/src/tools/CMakeLists.txt +++ b/src/tools/CMakeLists.txt @@ -1,3 +1,42 @@ +set(rados_srcs + rados/rados.cc + RadosDump.cc + rados/RadosImport.cc + rados/PoolDump.cc + ${PROJECT_SOURCE_DIR}/src/common/obj_bencher.cc) +add_executable(rados ${rados_srcs}) +target_link_libraries(rados librados global ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS} radosstriper) +install(TARGETS rados DESTINATION bin) + +add_executable(ceph_scratchtool scratchtool.c) +target_link_libraries(ceph_scratchtool librados global) +install(TARGETS ceph_scratchtool DESTINATION bin) + +add_executable(ceph_scratchtoolpp scratchtoolpp.cc) +target_link_libraries(ceph_scratchtoolpp librados global) +install(TARGETS ceph_scratchtoolpp DESTINATION bin) + +add_executable(ceph_radosacl radosacl.cc) +target_link_libraries(ceph_radosacl librados global) +install(TARGETS ceph_radosacl DESTINATION bin) + +add_executable(ceph-osdomap-tool ceph_osdomap_tool.cc) +target_link_libraries(ceph-osdomap-tool os global ${Boost_PROGRAM_OPTIONS_LIBRARY}) +install(TARGETS ceph-osdomap-tool DESTINATION bin) + +add_executable(ceph-monstore-tool ceph_monstore_tool.cc) +target_link_libraries(ceph-monstore-tool os global ${Boost_PROGRAM_OPTIONS_LIBRARY}) +install(TARGETS ceph-monstore-tool DESTINATION bin) +install(PROGRAMS + ceph-monstore-update-crush.sh + DESTINATION ${CMAKE_INSTALL_LIBDIR}/ceph) + +add_executable(ceph-objectstore-tool + ceph_objectstore_tool.cc + RadosDump.cc) +target_link_libraries(ceph-objectstore-tool osd os global ${Boost_PROGRAM_OPTIONS_LIBRARY} ${CMAKE_DL_LIBS} fuse) +install(TARGETS ceph-objectstore-tool DESTINATION bin) + add_executable(ceph-client-debug ceph-client-debug.cc) target_link_libraries(ceph-client-debug cephfs librados global common) install(TARGETS ceph-client-debug DESTINATION bin) @@ -11,6 +50,11 @@ add_executable(ceph-conf ${ceph_conf_srcs}) target_link_libraries(ceph-conf global) install(TARGETS ceph-conf DESTINATION bin) +set(crushtool_srcs crushtool.cc) +add_executable(crushtool ${crushtool_srcs}) +target_link_libraries(crushtool global) +install(TARGETS crushtool DESTINATION bin) + set(monmaptool_srcs monmaptool.cc) add_executable(monmaptool ${monmaptool_srcs}) target_link_libraries(monmaptool global) @@ -31,6 +75,10 @@ add_executable(ceph-authtool ${ceph_authtool_srcs}) target_link_libraries(ceph-authtool global ${EXTRALIBS} ${CRYPTO_LIBS}) install(TARGETS ceph-authtool DESTINATION bin) +if(WITH_CEPHFS) + add_subdirectory(cephfs) +endif(WITH_CEPHFS) + if(WITH_RBD) add_subdirectory(rbd) add_subdirectory(rbd_mirror) diff --git a/src/tools/cephfs/CMakeLists.txt b/src/tools/cephfs/CMakeLists.txt new file mode 100644 index 0000000000000..03fcf7243ad60 --- /dev/null +++ b/src/tools/cephfs/CMakeLists.txt @@ -0,0 +1,38 @@ +set(cephfs_journal_tool_srcs + cephfs-journal-tool.cc + JournalTool.cc + JournalFilter.cc + JournalScanner.cc + EventOutput.cc + Dumper.cc + Resetter.cc + RoleSelector.cc + MDSUtility.cc) +add_executable(cephfs-journal-tool ${cephfs_journal_tool_srcs}) +target_link_libraries(cephfs-journal-tool librados mds osdc global + ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS}) + +set(cephfs_table_tool_srcs + cephfs-table-tool.cc + TableTool.cc + RoleSelector.cc + MDSUtility.cc) +add_executable(cephfs-table-tool ${cephfs_table_tool_srcs}) +target_link_libraries(cephfs-table-tool librados mds osdc global + ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS}) + +set(cephfs_data_scan_srcs + cephfs-data-scan.cc + DataScan.cc + RoleSelector.cc + MDSUtility.cc) +add_executable(cephfs-data-scan ${cephfs_data_scan_srcs}) +target_link_libraries(cephfs-data-scan librados mds osdc global + cls_cephfs_client + ${BLKID_LIBRARIES} ${CMAKE_DL_LIBS}) + +install(TARGETS + cephfs-journal-tool + cephfs-table-tool + cephfs-data-scan + DESTINATION bin)