]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake: LTTng functionality added
authorAli Maredia <amaredia@redhat.com>
Thu, 31 Dec 2015 03:01:52 +0000 (22:01 -0500)
committerAli Maredia <amaredia@redhat.com>
Tue, 5 Jan 2016 20:42:06 +0000 (15:42 -0500)
Set LTTNG option to ON by default, added
Findlttng.cmake, added CMakeLists.txt in
src/tracing that generates .h files using
lttng-gen-tp, added WITH_LTTNG to
config-h.in.cmake.

Signed-off-by: Ali Maredia <amaredia@redhat.com>
CMakeLists.txt
cmake/modules/Findlttng-ust.cmake [new file with mode: 0644]
src/CMakeLists.txt
src/common/TracepointProvider.h
src/include/config-h.in.cmake
src/osd/ReplicatedPG.cc
src/test/CMakeLists.txt
src/tracing/CMakeLists.txt [new file with mode: 0644]

index dd74fc7ef2bd9275d0160c7428c53f1082258d82..e37e03cba5f57ccec1224381fc7e9e71f75885b3 100644 (file)
@@ -246,6 +246,13 @@ set(HAVE_LIBROCKSDB 1)
 find_package(ZLIB REQUIRED)
 find_package(BZip2 REQUIRED)
 
+#option for LTTng
+option(WITH_LTTNG "LTTng tracing is enabled" ON)
+if(${WITH_LTTNG})
+  find_package(lttng-ust)
+  set(WITH_LTTNG ${LTTNG_FOUND})
+endif(${WITH_LTTNG})
+
 # Now create a useable config.h
 configure_file(
   ${PROJECT_SOURCE_DIR}/src/include/config-h.in.cmake
diff --git a/cmake/modules/Findlttng-ust.cmake b/cmake/modules/Findlttng-ust.cmake
new file mode 100644 (file)
index 0000000..c04a474
--- /dev/null
@@ -0,0 +1,70 @@
+# - Find LTTng
+# Find the Linux Trace Toolkit - next generation with associated includes path.
+# See http://lttng.org/
+#
+# This module accepts the following optional variables:
+#    LTTNG_PATH_HINT   = A hint on LTTNG install path.
+#
+# This module defines the following variables:
+#    LTTNG_FOUND       = Was LTTng found or not?
+#    LTTNG_EXECUTABLE  = The path to lttng command
+#    LTTNG_LIBRARIES   = The list of libraries to link to when using LTTng
+#    LTTNG_INCLUDE_DIR = The path to LTTng include directory
+#
+# On can set LTTNG_PATH_HINT before using find_package(LTTng) and the
+# module with use the PATH as a hint to find LTTng.
+#
+# The hint can be given on the command line too:
+#   cmake -DLTTNG_PATH_HINT=/DATA/ERIC/LTTng /path/to/source
+
+if(LTTNG_PATH_HINT)
+  message(STATUS "FindLTTng: using PATH HINT: ${LTTNG_PATH_HINT}")
+else()
+  set(LTTNG_PATH_HINT)
+endif()
+
+#One can add his/her own builtin PATH.
+#FILE(TO_CMAKE_PATH "/DATA/ERIC/LTTng" MYPATH)
+#list(APPEND LTTNG_PATH_HINT ${MYPATH})
+
+find_path(LTTNG_INCLUDE_DIR
+          NAMES lttng/tracepoint.h
+          PATHS ${LTTNG_PATH_HINT}
+          PATH_SUFFIXES include
+          DOC "The LTTng include headers")
+
+find_path(LTTNG_LIBRARY_DIR
+          NAMES liblttng-ust.so
+          PATHS ${LTTNG_PATH_HINT}
+          PATH_SUFFIXES lib lib64
+          DOC "The LTTng libraries")
+
+find_library(LTTNG_UST_LIBRARY lttng-ust PATHS ${LTTNG_LIBRARY_DIR})
+find_library(URCU_LIBRARY urcu-bp PATHS ${LTTNG_LIBRARY_DIR})
+find_library(UUID_LIBRARY uuid)
+
+set(LTTNG_LIBRARIES ${LTTNG_UST_LIBRARY} ${URCU_LIBRARY} ${UUID_LIBRARY})
+
+message(STATUS "Looking for lttng executable...")
+set(LTTNG_NAMES "lttng;lttng-ctl")
+# FIND_PROGRAM twice using NO_DEFAULT_PATH on first shot
+find_program(LTTNG_EXECUTABLE
+  NAMES ${LTTNG_NAMES}
+  PATHS ${LTTNG_PATH_HINT}/bin
+  NO_DEFAULT_PATH
+  DOC "The LTTNG command line tool")
+find_program(LEX_PROGRAM
+  NAMES ${LTTNG_NAMES}
+  PATHS ${LTTNG_PATH_HINT}/bin
+  DOC "The LTTNG command line tool")
+
+# handle the QUIETLY and REQUIRED arguments and set PRELUDE_FOUND to TRUE if
+# all listed variables are TRUE
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(LTTNG
+                                  REQUIRED_VARS LTTNG_INCLUDE_DIR LTTNG_LIBRARY_DIR)
+# VERSION FPHSA options not handled by CMake version < 2.8.2)
+#                                  VERSION_VAR)
+mark_as_advanced(LTTNG_INCLUDE_DIR)
+mark_as_advanced(LTTNG_LIBRARY_DIR)
+
index a8ff8b80de9678f9acf17048755e261ef1f35b5b..6541036099f27bf045d2e8ac595b3d6a77af7a35 100644 (file)
@@ -355,7 +355,11 @@ endif(${HAVE_GPERFTOOLS})
 
 add_library(common_utf8 STATIC common/utf8.c)
 
-target_link_libraries( common json_spirit common_utf8 erasure_code rt uuid ${CRYPTO_LIBS} ${Boost_LIBRARIES} ${BLKID_LIBRARIES})
+target_link_libraries(common json_spirit common_utf8 erasure_code rt uuid ${CRYPTO_LIBS} ${Boost_LIBRARIES} ${BLKID_LIBRARIES})
+
+if(${WITH_LTTNG})
+  add_subdirectory(tracing)
+endif(${WITH_LTTNG})
 
 set(libglobal_srcs
   global/global_init.cc
@@ -368,6 +372,9 @@ add_library(global STATIC ${libglobal_srcs}
   $<TARGET_OBJECTS:global_common_objs>)
 target_link_libraries(global common ${CMAKE_THREAD_LIBS_INIT} ${CRYPTO_LIBS}
   ${EXTRALIBS})
+if(${WITH_LTTNG})
+  target_link_libraries(global lttng-ust dl) 
+endif(${WITH_LTTNG})
 if(${ENABLE_SHARED})
   set_target_properties(global PROPERTIES
     OUTPUT_NAME ceph-global VERSION "1.0.0" SOVERSION "1")
@@ -401,6 +408,9 @@ add_dependencies(librados osdc)
 target_link_libraries(librados PRIVATE osdc osd os global common cls_lock_client
   ${BLKID_LIBRARIES}
   ${CRYPTO_LIBS} ${EXTRALIBS} ${ALLOC_LIBS})
+if(${WITH_LTTNG})
+  target_link_libraries(librados PUBLIC librados_tp)
+endif(${WITH_LTTNG})
 if(${ENABLE_SHARED})
   set_target_properties(librados PROPERTIES OUTPUT_NAME rados VERSION 2.0.0
     SOVERSION 2)
@@ -633,6 +643,9 @@ add_library(os STATIC ${libos_srcs} $<TARGET_OBJECTS:kv_objs>)
 if(${HAVE_LIBAIO})
   target_link_libraries(os aio)
 endif(${HAVE_LIBAIO})
+if(${WITH_LTTNG})
+  target_link_libraries(os libos_tp)
+endif(${WITH_LTTNG})
 target_link_libraries(os kv leveldb snappy rocksdb)
 
 set(cls_references_files objclass/class_api.cc)
@@ -671,6 +684,9 @@ add_library(osd_mon_objs OBJECT ${osd_mon_files})
 add_library(osd STATIC ${osd_srcs} $<TARGET_OBJECTS:osd_mon_objs>
   $<TARGET_OBJECTS:cls_references_objs>)
 target_link_libraries(osd dl leveldb)
+if(${WITH_LTTNG})
+  target_link_libraries(osd libosd_tp) 
+endif(${WITH_LTTNG})
 
 set(ceph_osd_srcs
   ceph_osd.cc
@@ -951,6 +967,9 @@ if(${WITH_RBD})
   target_link_libraries(librbd PRIVATE librados common journal
     cls_lock_client cls_rbd_client cls_journal_client
     ${CMAKE_DL_LIBS})
+  if(${WITH_LTTNG})
+    target_link_libraries(librbd PUBLIC librbd_tp)
+  endif(${WITH_LTTNG})
   if(${ENABLE_SHARED})
     set_target_properties(librbd PROPERTIES VERSION "1.0.0" SOVERSION "1"
       OUTPUT_NAME rbd)
index e54a037f90ecd64afd2eeadbd63e775bd434851e..447e2dec07ce314b3a1b17227befe54b31f787c3 100644 (file)
@@ -56,7 +56,7 @@ public:
 
   template <const Traits &traits>
   static void initialize(CephContext *cct) {
-#if WITH_LTTNG
+#ifdef WITH_LTTNG
     TypedSingleton<traits> *singleton;
     cct->lookup_or_create_singleton_object(singleton, traits.library);
 #endif
index 7e5efc9dadb42fc59b20346210feed855c69cbcc..af68a4036891c9b770b43ea81021145d302a084d 100644 (file)
 /* Defined if XIO */
 #cmakedefine HAVE_XIO
 
+/* Defined if LTTNG */
+#cmakedefine WITH_LTTNG 1
+
 /* Defined if you have librocksdb enabled */
 #cmakedefine HAVE_LIBROCKSDB
 
index c72ef991fd235fa984f7e9f56136248dba242d00..97c89544af7b336824ef048861b5acbb6345730b 100644 (file)
@@ -63,7 +63,7 @@
 #include "include/rados/rados_types.hpp"
 
 #ifdef WITH_LTTNG
-#include "tracing/osd.h" // ??
+#include "tracing/osd.h"
 #else
 #define tracepoint(...)
 #endif
index bcf1bd6fc3a03e70982cb7f4a342b65fe60400a1..c872d5204db202974756ef555379d3da77d522f8 100644 (file)
@@ -1636,6 +1636,9 @@ add_executable(unittest_librbd EXCLUDE_FROM_ALL
 add_dependencies(check unittest_librbd)
 set_target_properties(unittest_librbd PROPERTIES COMPILE_FLAGS
   ${UNITTEST_CXX_FLAGS})
+if(${WITH_LTTNG})
+  target_link_libraries(unittest_librbd librbd_tp)
+endif(${WITH_LTTNG})
 target_link_libraries(unittest_librbd
   librbd
   librados
diff --git a/src/tracing/CMakeLists.txt b/src/tracing/CMakeLists.txt
new file mode 100644 (file)
index 0000000..cf996ce
--- /dev/null
@@ -0,0 +1,38 @@
+add_custom_target(lttng_gen_tp
+  ALL
+  COMMAND 
+  lttng-gen-tp tracing/librados.tp -o tracing/librados.h && 
+  lttng-gen-tp tracing/librbd.tp -o tracing/librbd.h && 
+  lttng-gen-tp tracing/objectstore.tp -o tracing/objectstore.h && 
+  lttng-gen-tp tracing/oprequest.tp -o tracing/oprequest.h &&
+  lttng-gen-tp tracing/osd.tp -o tracing/osd.h &&
+  lttng-gen-tp tracing/pg.tp -o tracing/pg.h
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src
+  COMMENT "lttng-gen-tp generated .h files")
+
+add_library(libosd_tp STATIC
+  oprequest.c
+  osd.c
+  pg.c)
+target_link_libraries(libosd_tp lttng-ust dl)
+target_include_directories(libosd_tp PUBLIC ${CMAKE_SOURCE_DIR}/src/tracing)
+add_dependencies(libosd_tp lttng_gen_tp)
+set_target_properties(libosd_tp PROPERTIES OUTPUT_NAME osd_tp VERSION 1.0.0 SOVERSION 1)
+
+add_library(librados_tp STATIC librados.c)
+target_link_libraries(librados_tp lttng-ust dl)
+target_include_directories(librados_tp PUBLIC ${CMAKE_SOURCE_DIR}/src/tracing)
+add_dependencies(librados_tp lttng_gen_tp)
+set_target_properties(librados_tp PROPERTIES OUTPUT_NAME rados_tp VERSION 2.0.0 SOVERSION 2)
+
+add_library(librbd_tp STATIC librbd.c)
+target_link_libraries(librbd_tp lttng-ust dl)
+target_include_directories(librbd_tp PUBLIC ${CMAKE_SOURCE_DIR}/src/tracing)
+add_dependencies(librbd_tp lttng_gen_tp)
+set_target_properties(librbd_tp PROPERTIES OUTPUT_NAME rbd_tp VERSION 1.0.0 SOVERSION 1)
+
+add_library(libos_tp STATIC objectstore.c)
+target_link_libraries(libos_tp lttng-ust dl)
+target_include_directories(libos_tp PUBLIC ${CMAKE_SOURCE_DIR}/src/tracing)
+add_dependencies(libos_tp lttng_gen_tp)
+set_target_properties(libos_tp PROPERTIES OUTPUT_NAME os_tp VERSION 1.0.0 SOVERSION 1)