]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/librbd/CMakeLists.txt
import quincy beta 17.1.0
[ceph.git] / ceph / src / librbd / CMakeLists.txt
index 52cfbd8ac182638589f4fc5b06891f3b8d071e83..ad23f0975fdd4388fdb7101670fbf9d8205e12a0 100644 (file)
@@ -1,13 +1,28 @@
-add_library(rbd_types STATIC
+set(librbd_types_srcs
   journal/Types.cc
   mirroring_watcher/Types.cc
+  trash_watcher/Types.cc
   watcher/Types.cc
   WatchNotifyTypes.cc)
 
+if(WITH_RBD_RWL OR WITH_RBD_SSD_CACHE)
+ list(APPEND librbd_types_srcs cache/pwl/Types.cc)
+endif()
+
+add_library(rbd_types STATIC
+  ${librbd_types_srcs})
+
+if (WITH_RBD_RWL)
+  target_link_libraries(rbd_types
+    PUBLIC pmem::pmemobj)
+endif()
+
 set(librbd_internal_srcs
+  AsioEngine.cc
   AsyncObjectThrottle.cc
-  AsyncOperation.cc
   AsyncRequest.cc
+  ConfigWatcher.cc
+  DeepCopyRequest.cc
   ExclusiveLock.cc
   ImageCtx.cc
   ImageState.cc
@@ -15,46 +30,101 @@ set(librbd_internal_srcs
   internal.cc
   Journal.cc
   LibrbdAdminSocketHook.cc
-  LibrbdWriteback.cc
   ManagedLock.cc
   MirroringWatcher.cc
   ObjectMap.cc
   Operations.cc
+  PluginRegistry.cc
+  TrashWatcher.cc
   Utils.cc
   Watcher.cc
+  api/Config.cc
   api/DiffIterate.cc
   api/Group.cc
   api/Image.cc
+  api/Io.cc
+  api/Migration.cc
   api/Mirror.cc
+  api/Namespace.cc
+  api/Pool.cc
+  api/PoolMetadata.cc
+  api/Snapshot.cc
+  api/Trash.cc
+  api/Utils.cc
+  asio/ContextWQ.cc
   cache/ImageWriteback.cc
-  cache/PassthroughImageCache.cc
+  cache/ObjectCacherObjectDispatch.cc
+  cache/ObjectCacherWriteback.cc
+  cache/WriteAroundObjectDispatch.cc
+  crypto/BlockCrypto.cc
+  crypto/CryptoContextPool.cc
+  crypto/CryptoImageDispatch.cc
+  crypto/CryptoObjectDispatch.cc
+  crypto/FormatRequest.cc
+  crypto/LoadRequest.cc
+  crypto/ShutDownCryptoRequest.cc
+  crypto/Utils.cc
+  crypto/openssl/DataCryptor.cc
+  deep_copy/ImageCopyRequest.cc
+  deep_copy/MetadataCopyRequest.cc
+  deep_copy/ObjectCopyRequest.cc
+  deep_copy/SetHeadRequest.cc
+  deep_copy/SnapshotCopyRequest.cc
+  deep_copy/SnapshotCreateRequest.cc
+  deep_copy/Utils.cc
   exclusive_lock/AutomaticPolicy.cc
+  exclusive_lock/ImageDispatch.cc
   exclusive_lock/PreAcquireRequest.cc
   exclusive_lock/PostAcquireRequest.cc
   exclusive_lock/PreReleaseRequest.cc
   exclusive_lock/StandardPolicy.cc
+  image/AttachChildRequest.cc
+  image/AttachParentRequest.cc
   image/CloneRequest.cc
   image/CloseRequest.cc
   image/CreateRequest.cc
+  image/DetachChildRequest.cc
+  image/DetachParentRequest.cc
+  image/GetMetadataRequest.cc
+  image/ListWatchersRequest.cc
   image/OpenRequest.cc
+  image/PreRemoveRequest.cc
   image/RefreshParentRequest.cc
   image/RefreshRequest.cc
   image/RemoveRequest.cc
   image/SetFlagsRequest.cc
   image/SetSnapRequest.cc
+  image/ValidatePoolRequest.cc
   image_watcher/NotifyLockOwner.cc
   io/AioCompletion.cc
+  io/AsyncOperation.cc
   io/CopyupRequest.cc
+  io/FlushTracker.cc
+  io/ImageDispatch.cc
+  io/ImageDispatchSpec.cc
+  io/ImageDispatcher.cc
   io/ImageRequest.cc
-  io/ImageRequestWQ.cc
+  io/ObjectDispatch.cc
+  io/ObjectDispatchSpec.cc
+  io/ObjectDispatcher.cc
   io/ObjectRequest.cc
+  io/QosImageDispatch.cc
+  io/QueueImageDispatch.cc
   io/ReadResult.cc
+  io/RefreshImageDispatch.cc
+  io/SimpleSchedulerObjectDispatch.cc
+  io/Types.cc
+  io/Utils.cc
+  io/WriteBlockImageDispatch.cc
+  io/IoOperations.cc
   journal/CreateRequest.cc
   journal/DemoteRequest.cc
+  journal/ObjectDispatch.cc
   journal/OpenRequest.cc
   journal/PromoteRequest.cc
   journal/RemoveRequest.cc
   journal/Replay.cc
+  journal/ResetRequest.cc
   journal/StandardPolicy.cc
   journal/Utils.cc
   managed_lock/AcquireRequest.cc
@@ -63,13 +133,41 @@ set(librbd_internal_srcs
   managed_lock/ReacquireRequest.cc
   managed_lock/ReleaseRequest.cc
   managed_lock/Utils.cc
+  migration/FileStream.cc
+  migration/HttpClient.cc
+  migration/HttpStream.cc
+  migration/ImageDispatch.cc
+  migration/NativeFormat.cc
+  migration/OpenSourceImageRequest.cc
+  migration/QCOWFormat.cc
+  migration/RawFormat.cc
+  migration/RawSnapshot.cc
+  migration/S3Stream.cc
+  migration/SourceSpecBuilder.cc
+  migration/Utils.cc
   mirror/DemoteRequest.cc
   mirror/DisableRequest.cc
   mirror/EnableRequest.cc
   mirror/GetInfoRequest.cc
   mirror/GetStatusRequest.cc
+  mirror/GetUuidRequest.cc
+  mirror/ImageRemoveRequest.cc
+  mirror/ImageStateUpdateRequest.cc
   mirror/PromoteRequest.cc
+  mirror/snapshot/CreateNonPrimaryRequest.cc
+  mirror/snapshot/CreatePrimaryRequest.cc
+  mirror/snapshot/DemoteRequest.cc
+  mirror/snapshot/GetImageStateRequest.cc
+  mirror/snapshot/ImageMeta.cc
+  mirror/snapshot/PromoteRequest.cc
+  mirror/snapshot/RemoveImageStateRequest.cc
+  mirror/snapshot/SetImageStateRequest.cc
+  mirror/snapshot/Types.cc
+  mirror/snapshot/UnlinkPeerRequest.cc
+  mirror/snapshot/Utils.cc
+  mirror/snapshot/WriteImageStateRequest.cc
   object_map/CreateRequest.cc
+  object_map/DiffRequest.cc
   object_map/InvalidateRequest.cc
   object_map/LockRequest.cc
   object_map/RefreshRequest.cc
@@ -86,6 +184,7 @@ set(librbd_internal_srcs
   operation/FlattenRequest.cc
   operation/MetadataRemoveRequest.cc
   operation/MetadataSetRequest.cc
+  operation/MigrateRequest.cc
   operation/ObjectMapIterate.cc
   operation/RebuildObjectMapRequest.cc
   operation/RenameRequest.cc
@@ -98,50 +197,160 @@ set(librbd_internal_srcs
   operation/SnapshotRollbackRequest.cc
   operation/SnapshotUnprotectRequest.cc
   operation/SnapshotLimitRequest.cc
+  operation/SparsifyRequest.cc
   operation/TrimRequest.cc
+  plugin/Api.cc
+  trash/MoveRequest.cc
+  trash/RemoveRequest.cc
   watcher/Notifier.cc
   watcher/RewatchRequest.cc
   ${CMAKE_SOURCE_DIR}/src/common/ContextCompletion.cc)
 
+if(WITH_EVENTTRACE)
+  list(APPEND librbd_internal_srcs ../common/EventTrace.cc)
+endif()
+
+if(LINUX AND HAVE_LIBCRYPTSETUP)
+  list(APPEND librbd_internal_srcs
+          crypto/luks/EncryptionFormat.cc
+          crypto/luks/Header.cc
+          crypto/luks/FormatRequest.cc
+          crypto/luks/LoadRequest.cc)
+endif()
+
 add_library(rbd_api STATIC librbd.cc)
 add_library(rbd_internal STATIC
   ${librbd_internal_srcs}
   $<TARGET_OBJECTS:rados_snap_set_diff_obj>)
 if(WITH_LTTNG)
+  # librbd.cc includes tracing/librbd.h
+  add_dependencies(rbd_api librbd-tp)
+  # io/AioCompletion.cc includes tracing/librbd.h
   add_dependencies(rbd_internal librbd-tp)
 endif()
+if(WITH_EVENTTRACE)
+  add_dependencies(rbd_internal eventtrace_tp)
+endif()
+target_link_libraries(rbd_internal PRIVATE
+  osdc rbd_types
+  OpenSSL::SSL)
+target_include_directories(rbd_internal PRIVATE ${OPENSSL_INCLUDE_DIR})
+if(LINUX AND HAVE_LIBCRYPTSETUP)
+  target_include_directories(rbd_internal PRIVATE ${LIBCRYPTSETUP_INCLUDE_DIR})
+  target_link_libraries(rbd_internal PRIVATE ${LIBCRYPTSETUP_LIBRARIES})
+endif()
+
+add_custom_target(librbd_plugins)
+set(librbd_plugins_dir ${CEPH_INSTALL_PKGLIBDIR}/librbd)
+
+set(rbd_plugin_parent_cache_srcs
+  cache/ParentCacheObjectDispatch.cc
+  plugin/ParentCache.cc)
+add_library(librbd_plugin_parent_cache SHARED
+  ${rbd_plugin_parent_cache_srcs})
+target_link_libraries(librbd_plugin_parent_cache PRIVATE
+  ceph_immutable_object_cache_lib ceph-common librbd
+  libneorados
+  librados)
+set_target_properties(librbd_plugin_parent_cache PROPERTIES
+  OUTPUT_NAME ceph_librbd_parent_cache
+  VERSION 1.0.0
+  SOVERSION 1)
+install(TARGETS librbd_plugin_parent_cache DESTINATION ${librbd_plugins_dir})
+add_dependencies(librbd_plugins librbd_plugin_parent_cache)
+
+if(WITH_RBD_RWL OR WITH_RBD_SSD_CACHE)
+  set(rbd_plugin_pwl_srcs
+    cache/WriteLogImageDispatch.cc
+    cache/pwl/AbstractWriteLog.cc
+    cache/pwl/DiscardRequest.cc
+    cache/pwl/ImageCacheState.cc
+    cache/pwl/InitRequest.cc
+    cache/pwl/LogEntry.cc
+    cache/pwl/LogMap.cc
+    cache/pwl/LogOperation.cc
+    cache/pwl/Request.cc
+    cache/pwl/ShutdownRequest.cc
+    cache/pwl/SyncPoint.cc
+    cache/pwl/Types.cc
+    plugin/WriteLogImageCache.cc)
+
+    if(WITH_RBD_SSD_CACHE)
+      set(rbd_plugin_pwl_srcs
+        ${rbd_plugin_pwl_srcs}
+        cache/pwl/ssd/LogEntry.cc
+        cache/pwl/ssd/LogOperation.cc
+        cache/pwl/ssd/ReadRequest.cc
+        cache/pwl/ssd/Request.cc
+        cache/pwl/ssd/WriteLog.cc)
+    endif()
+    if(WITH_RBD_RWL)
+      set(rbd_plugin_pwl_srcs
+        ${rbd_plugin_pwl_srcs}
+        cache/pwl/rwl/WriteLog.cc
+        cache/pwl/rwl/LogEntry.cc
+        cache/pwl/rwl/LogOperation.cc
+        cache/pwl/rwl/ReadRequest.cc
+        cache/pwl/rwl/Request.cc)
+    endif()
+
+  add_library(librbd_plugin_pwl_cache SHARED
+    ${rbd_plugin_pwl_srcs})
+  target_link_libraries(librbd_plugin_pwl_cache PRIVATE
+    blk
+    ceph-common
+    cls_rbd_client
+    libneorados
+    librados
+    StdFilesystem::filesystem)
+
+  if(WITH_RBD_RWL)
+    target_link_libraries(librbd_plugin_pwl_cache
+      PUBLIC pmem::pmemobj
+      PRIVATE pmem::pmem)
+  endif()
+
+  set_target_properties(librbd_plugin_pwl_cache PROPERTIES
+    OUTPUT_NAME ceph_librbd_pwl_cache
+    VERSION 1.0.0
+    SOVERSION 1)
+  install(TARGETS librbd_plugin_pwl_cache DESTINATION ${librbd_plugins_dir})
+  add_dependencies(librbd_plugins librbd_plugin_pwl_cache)
+endif()
 
 add_library(librbd ${CEPH_SHARED}
   librbd.cc)
+if(WITH_LTTNG)
+  add_dependencies(librbd librbd-tp)
+endif()
 
-target_link_libraries(librbd LINK_PRIVATE 
+target_link_libraries(librbd PRIVATE
   rbd_internal
   rbd_types
   journal
-  librados 
-  osdc
-  cls_rbd_client 
-  cls_lock_client 
-  cls_journal_client 
+  cls_rbd_client
+  cls_lock_client
+  cls_journal_client
+  libneorados
+  librados
   ceph-common
   pthread
   ${CMAKE_DL_LIBS}
-  ${EXTRALIBS})
+  ${EXTRALIBS} ${GSSAPI_LIBRARIES})
 if(HAVE_UDEV)
-  target_link_libraries(librbd LINK_PRIVATE
+  target_link_libraries(librbd PRIVATE
     udev)
 endif()
 if(ENABLE_SHARED)
   set_target_properties(librbd PROPERTIES
     OUTPUT_NAME rbd
-    VERSION 1.12.0
+    VERSION 1.17.0
     SOVERSION 1
-    COMPILE_FLAGS "-fvisibility=hidden -fvisibility-inlines-hidden"
-    LINK_FLAGS "-Wl,--exclude-libs,ALL")
+    CXX_VISIBILITY_PRESET hidden
+    VISIBILITY_INLINES_HIDDEN ON)
+    if(NOT APPLE AND NOT WIN32)
+      set_property(TARGET librbd APPEND_STRING PROPERTY
+        LINK_FLAGS " -Wl,--exclude-libs,ALL")
+    endif()
 endif(ENABLE_SHARED)
 install(TARGETS librbd DESTINATION ${CMAKE_INSTALL_LIBDIR})
-
-if(WITH_EMBEDDED)
-  add_library(cephd_rbd_base STATIC librbd.cc ${CMAKE_SOURCE_DIR}/src/common/ContextCompletion.cc)
-  merge_static_libraries(cephd_rbd cephd_rbd_base rbd_internal rbd_types journal)
-endif()