From: Sage Weil Date: Thu, 21 Aug 2014 22:05:40 +0000 (-0700) Subject: Revert "Merge pull request #2253 from adamcrume/wip-lttng" X-Git-Tag: v0.86~232 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=01ce249718fa92ef95221467de7b4ca93b97d9ff;p=ceph.git Revert "Merge pull request #2253 from adamcrume/wip-lttng" This reverts commit 5b9ade5058f72116eb3dc920f442361c2a33b46b, reversing changes made to b0aa846b3f81225a779de00100e15334fb8156b3. I merged the wrong version of wip-lttng. Signed-off-by: Sage Weil --- diff --git a/.gitignore b/.gitignore index 364d3f76f642..bcc150f07f4a 100644 --- a/.gitignore +++ b/.gitignore @@ -81,4 +81,3 @@ GSYMS GTAGS /examples/librados/.libs/ /examples/librados/librados_hello_world -/examples/librados/librados_hello_world_c diff --git a/ceph.spec.in b/ceph.spec.in index 8308d082b90a..c76492655d3f 100644 --- a/ceph.spec.in +++ b/ceph.spec.in @@ -250,7 +250,6 @@ License: LGPL-2.0 Requires: librados2 = %{version}-%{release} Requires: librbd1 = %{version}-%{release} Requires: libcephfs1 = %{version}-%{release} -BuildRequires: lttng-ust-devel %description -n ceph-test This package contains Ceph benchmarks and test tools. @@ -721,10 +720,6 @@ ln -sf %{_libdir}/librbd.so.1 /usr/lib64/qemu/librbd.so.1 %{_bindir}/ceph-monstore-tool %{_bindir}/ceph-osdomap-tool %{_bindir}/ceph-kvstore-tool -%{_mandir}/man8/rbd-replay.8* -%{_mandir}/man8/rbd-replay-prep.8* -%{_bindir}/rbd-replay -%{_bindir}/rbd-replay-prep %files -n libcephfs_jni1 %defattr(-,root,root,-) diff --git a/configure.ac b/configure.ac index cd9409500460..38c6deaba9e9 100644 --- a/configure.ac +++ b/configure.ac @@ -799,56 +799,6 @@ AC_CHECK_HEADERS([linux/types.h]) AC_CHECK_TYPES([__u8, __s8, __u16, __s16, __u32, __s32, __u64, __s64, __le16, __be16, __le32, __be32, __le64, __be64], [], [], [[#include ]]) - -AC_ARG_WITH([lttng], - [AS_HELP_STRING([--with-lttng], [Trace with LTTng])]) -AS_IF([test "x$with_lttng" = "xno"], [use_lttng=no], - [test "x$with_lttng" = "xyes"], [use_lttng=yes], - [AC_CHECK_HEADERS([lttng/tracepoint.h], [use_lttng=yes], [use_lttng=no])]) -AM_CONDITIONAL([WITH_LTTNG], test x"$use_lttng" = x"yes") -AM_COND_IF([WITH_LTTNG], [ - AC_DEFINE([WITH_LTTNG], [1], [Define if you want to use LTTng]) - - AC_CHECK_HEADER([lttng/tracepoint.h], [], - AC_MSG_ERROR([lttng/tracepoint.h not found (liblttng-ust-dev)])) - - AC_CHECK_PROG([LTTNG_GEN_TP_CHECK], [lttng-gen-tp], [yes]) - if test x"$LTTNG_GEN_TP_CHECK" != "xyes"; then - AC_MSG_FAILURE([lttng-gen-tp not found]) - fi - AC_SUBST([LTTNG_GEN_TP_PROG], [lttng-gen-tp]) - - AC_MSG_CHECKING([if time_t is an integer]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], [[ - struct { - unsigned int time_t_is_integer: ((time_t) 1.5 == 1) ? 1 : -1; - } x; - return 0; - ]])], [ - AC_MSG_RESULT([yes]) - ], [ - AC_MSG_RESULT([no]) - AC_MSG_FAILURE([time_t is not an integer. We assume this for tracing.]) - ]) - - AC_MSG_CHECKING([if time_t fits in uint64_t]) - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include - #include ]], [[ - struct { - unsigned int time_t_fits_in_uin64_t: (sizeof(time_t) <= sizeof(uint64_t)) ? 1 : -1; - } x; - return 0; - ]])], [ - AC_MSG_RESULT([yes]) - ], [ - AC_MSG_RESULT([no]) - AC_MSG_FAILURE([time_t is larger than uint64_t. We assume it can be cast to uint64_t, for tracing.]) - ]) -], [ - AC_DEFINE([tracepoint(...)], [], [LTTng is disabled, so define this macro to be nothing.]) -]) - - # Checks for typedefs, structures, and compiler characteristics. #AC_HEADER_STDBOOL #AC_C_CONST @@ -908,7 +858,6 @@ AC_CONFIG_FILES([Makefile src/ocf/ceph src/ocf/rbd src/java/Makefile - src/tracing/Makefile man/Makefile ceph.spec]) AC_OUTPUT diff --git a/debian/ceph-test.install b/debian/ceph-test.install index 58c7f362e313..ac790553648a 100644 --- a/debian/ceph-test.install +++ b/debian/ceph-test.install @@ -26,7 +26,3 @@ usr/bin/ceph-monstore-tool usr/bin/ceph-osdomap-tool usr/bin/ceph-kvstore-tool usr/share/java/libcephfs-test.jar -usr/bin/rbd-replay -usr/bin/rbd-replay-prep -usr/share/man/man8/rbd-replay.8 -usr/share/man/man8/rbd-replay-prep.8 diff --git a/debian/control b/debian/control index 7388ea44df2f..c0064e8cc990 100644 --- a/debian/control +++ b/debian/control @@ -32,7 +32,6 @@ Build-Depends: autoconf, libleveldb-dev, libnss3-dev, libsnappy-dev, - liblttng-ust-dev, libtool, libudev-dev, libxml2-dev, diff --git a/debian/rules b/debian/rules index 09397a4c3007..1fd2d6660098 100755 --- a/debian/rules +++ b/debian/rules @@ -33,13 +33,6 @@ ifeq ($(DEB_HOST_ARCH), armel) extraopts += --without-libatomic-ops endif -ifeq ($(shell dpkg-vendor --derives-from ubuntu && echo yes),yes) - codename = $(shell lsb_release -a | sed -rn 's/Codename:\s([^\s]*)/\1/p') - ifeq ($(codename),trusty) - extraopts += --without-lttng - endif -endif - configure: configure-stamp configure-stamp: dh_testdir diff --git a/doc/man/8/rbd-replay-prep.rst b/doc/man/8/rbd-replay-prep.rst deleted file mode 100644 index 9bc93be6ff48..000000000000 --- a/doc/man/8/rbd-replay-prep.rst +++ /dev/null @@ -1,46 +0,0 @@ -==================================================================================== - rbd-replay-prep -- prepare captured rados block device (RBD) workloads for replay -==================================================================================== - -.. program:: rbd-replay-prep - -Synopsis -======== - -| **rbd-replay-prep** [ --window *seconds* ] *trace_dir* *replay_file* - - -Description -=========== - -**rbd-replay-prep** processes raw rados block device (RBD) traces to prepare them for **rbd-replay**. - - -Options -======= - -.. option:: --window seconds - - Requests further apart than 'seconds' seconds are assumed to be independent. - - -Examples -======== - -To prepare workload1-trace for replay:: - - rbd-replay-prep workload1-trace/ust/uid/1000/64-bit workload1 - - -Availability -============ - -**rbd-replay-prep** is part of the Ceph distributed storage system. Please refer to -the Ceph documentation at http://ceph.com/docs for more information. - - -See also -======== - -:doc:`rbd-replay `\(8), -:doc:`rbd `\(8) diff --git a/doc/man/8/rbd-replay.rst b/doc/man/8/rbd-replay.rst deleted file mode 100644 index 55a607f897c7..000000000000 --- a/doc/man/8/rbd-replay.rst +++ /dev/null @@ -1,68 +0,0 @@ -========================================================= - rbd-replay -- replay rados block device (RBD) workloads -========================================================= - -.. program:: rbd-replay - -Synopsis -======== - -| **rbd-replay** [ *options* ] *replay_file* - - -Description -=========== - -**rbd-replay** is a utility for replaying rados block device (RBD) workloads. - - -Options -======= - -.. option:: -c ceph.conf, --conf ceph.conf - - Use ceph.conf configuration file instead of the default /etc/ceph/ceph.conf to - determine monitor addresses during startup. - -.. option:: -p pool, --pool pool - - Interact with the given pool. Defaults to 'rbd'. - -.. option:: --latency-multiplier - - Multiplies inter-request latencies. Default: 1. - -.. option:: --read-only - - Only replay non-destructive requests. - -.. option:: --map-image rule - - Add a rule to map image names in the trace to image names in the replay cluster. - A rule of image1@snap1=image2@snap2 would map snap1 of image1 to snap2 of image2. - - -Examples -======== - -To replay workload1 as fast as possible:: - - rbd-replay --latency-multiplier=0 workload1 - -To replay workload1 but use test_image instead of prod_image:: - - rbd-replay --map-image=prod_image=test_image workload1 - - -Availability -============ - -**rbd-replay** is part of the Ceph distributed storage system. Please refer to -the Ceph documentation at http://ceph.com/docs for more information. - - -See also -======== - -:doc:`rbd-replay-prep `\(8), -:doc:`rbd `\(8) diff --git a/examples/librados/Makefile b/examples/librados/Makefile index 190cca251a89..a40051facd52 100644 --- a/examples/librados/Makefile +++ b/examples/librados/Makefile @@ -1,13 +1,5 @@ -all: librados_hello_world librados_hello_world_c - -librados_hello_world: hello_world.cc - g++ -g -c hello_world.cc -o hello_world.o $(CFLAGS) - g++ -g hello_world.o -lrados -o librados_hello_world $(LDFLAGS) - -librados_hello_world_c: hello_world_c.c - cc -g -c hello_world_c.c -o hello_world_c.o $(CFLAGS) - cc -g hello_world_c.o -lrados -o librados_hello_world_c $(LDFLAGS) - +all: hello_world.cc + g++ -g -c hello_world.cc -o hello_world.o + g++ -g hello_world.o -lrados -o librados_hello_world clean: - rm hello_world.o librados_hello_world - rm hello_world_c.o librados_hello_world_c + rm hello_world.o librados_hello_world \ No newline at end of file diff --git a/examples/librados/hello_world_c.c b/examples/librados/hello_world_c.c deleted file mode 100644 index b5e2a4519eb2..000000000000 --- a/examples/librados/hello_world_c.c +++ /dev/null @@ -1,313 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * Copyright 2013 Inktank - */ - -// install the librados-dev package to get this -#include -#include -#include - -int main(int argc, const char **argv) -{ - int ret = 0; - - // we will use all of these below - const char *pool_name = "hello_world_pool"; - const char* hello = "hello world!"; - const char* object_name = "hello_object"; - rados_ioctx_t io_ctx = NULL; - int pool_created = 0; - - // first, we create a Rados object and initialize it - rados_t rados = NULL; - { - ret = rados_create(&rados, "admin"); // just use the client.admin keyring - if (ret < 0) { // let's handle any error that might have come back - printf("couldn't initialize rados! error %d\n", ret); - ret = EXIT_FAILURE; - goto out; - } else { - printf("we just set up a rados cluster object\n"); - } - } - - /* - * Now we need to get the rados object its config info. It can - * parse argv for us to find the id, monitors, etc, so let's just - * use that. - */ - { - ret = rados_conf_parse_argv(rados, argc, argv); - if (ret < 0) { - // This really can't happen, but we need to check to be a good citizen. - printf("failed to parse config options! error %d\n", ret); - ret = EXIT_FAILURE; - goto out; - } else { - printf("we just parsed our config options\n"); - // We also want to apply the config file if the user specified - // one, and conf_parse_argv won't do that for us. - int i; - for (i = 0; i < argc; ++i) { - if ((strcmp(argv[i], "-c") == 0) || (strcmp(argv[i], "--conf") == 0)) { - ret = rados_conf_read_file(rados, argv[i+1]); - if (ret < 0) { - // This could fail if the config file is malformed, but it'd be hard. - printf("failed to parse config file %s! error %d\n", argv[i+1], ret); - ret = EXIT_FAILURE; - goto out; - } - break; - } - } - } - } - - /* - * next, we actually connect to the cluster - */ - { - ret = rados_connect(rados); - if (ret < 0) { - printf("couldn't connect to cluster! error %d\n", ret); - ret = EXIT_FAILURE; - goto out; - } else { - printf("we just connected to the rados cluster\n"); - } - } - - /* - * let's create our own pool instead of scribbling over real data. - * Note that this command creates pools with default PG counts specified - * by the monitors, which may not be appropriate for real use -- it's fine - * for testing, though. - */ - { - ret = rados_pool_create(rados, pool_name); - if (ret < 0) { - printf("couldn't create pool! error %d\n", ret); - return EXIT_FAILURE; - } else { - printf("we just created a new pool named %s\n", pool_name); - } - pool_created = 1; - } - - /* - * create an "IoCtx" which is used to do IO to a pool - */ - { - ret = rados_ioctx_create(rados, pool_name, &io_ctx); - if (ret < 0) { - printf("couldn't set up ioctx! error %d\n", ret); - ret = EXIT_FAILURE; - goto out; - } else { - printf("we just created an ioctx for our pool\n"); - } - } - - /* - * now let's do some IO to the pool! We'll write "hello world!" to a - * new object. - */ - { - /* - * now that we have the data to write, let's send it to an object. - * We'll use the synchronous interface for simplicity. - */ - ret = rados_write_full(io_ctx, object_name, hello, strlen(hello)); - if (ret < 0) { - printf("couldn't write object! error %d\n", ret); - ret = EXIT_FAILURE; - goto out; - } else { - printf("we just wrote new object %s, with contents '%s'\n", object_name, hello); - } - } - - /* - * now let's read that object back! Just for fun, we'll do it using - * async IO instead of synchronous. (This would be more useful if we - * wanted to send off multiple reads at once; see - * http://ceph.com/docs/master/rados/api/librados/#asychronous-io ) - */ - { - int read_len = 4194304; // this is way more than we need - char* read_buf = malloc(read_len + 1); // add one for the terminating 0 we'll add later - if (!read_buf) { - printf("couldn't allocate read buffer\n"); - ret = EXIT_FAILURE; - goto out; - } - // allocate the completion from librados - rados_completion_t read_completion; - ret = rados_aio_create_completion(NULL, NULL, NULL, &read_completion); - if (ret < 0) { - printf("couldn't create completion! error %d\n", ret); - ret = EXIT_FAILURE; - free(read_buf); - goto out; - } else { - printf("we just created a new completion\n"); - } - // send off the request. - ret = rados_aio_read(io_ctx, object_name, read_completion, read_buf, read_len, 0); - if (ret < 0) { - printf("couldn't start read object! error %d\n", ret); - ret = EXIT_FAILURE; - free(read_buf); - rados_aio_release(read_completion); - goto out; - } - // wait for the request to complete, and check that it succeeded. - rados_aio_wait_for_complete(read_completion); - ret = rados_aio_get_return_value(read_completion); - if (ret < 0) { - printf("couldn't read object! error %d\n", ret); - ret = EXIT_FAILURE; - free(read_buf); - rados_aio_release(read_completion); - goto out; - } else { - read_buf[ret] = 0; // null-terminate the string - printf("we read our object %s, and got back %d bytes with contents\n%s\n", object_name, ret, read_buf); - } - - free(read_buf); - rados_aio_release(read_completion); - } - - /* - * We can also use xattrs that go alongside the object. - */ - { - const char* version = "1"; - ret = rados_setxattr(io_ctx, object_name, "version", version, strlen(version)); - if (ret < 0) { - printf("failed to set xattr version entry! error %d\n", ret); - ret = EXIT_FAILURE; - goto out; - } else { - printf("we set the xattr 'version' on our object!\n"); - } - } - - /* - * And if we want to be really cool, we can do multiple things in a single - * atomic operation. For instance, we can update the contents of our object - * and set the version at the same time. - */ - { - const char* content = "v2"; - rados_write_op_t write_op = rados_create_write_op(); - if (!write_op) { - printf("failed to allocate write op\n"); - ret = EXIT_FAILURE; - goto out; - } - rados_write_op_write_full(write_op, content, strlen(content)); - const char* version = "2"; - rados_write_op_setxattr(write_op, "version", version, strlen(version)); - ret = rados_write_op_operate(write_op, io_ctx, object_name, NULL, 0); - if (ret < 0) { - printf("failed to do compound write! error %d\n", ret); - ret = EXIT_FAILURE; - rados_release_write_op(write_op); - goto out; - } else { - printf("we overwrote our object %s with contents\n%s\n", object_name, content); - } - rados_release_write_op(write_op); - } - - /* - * And to be even cooler, we can make sure that the object looks the - * way we expect before doing the write! Notice how this attempt fails - * because the xattr differs. - */ - { - rados_write_op_t failed_write_op = rados_create_write_op(); - if (!failed_write_op) { - printf("failed to allocate write op\n"); - ret = EXIT_FAILURE; - goto out; - } - const char* content = "v2"; - const char* version = "2"; - const char* old_version = "1"; - rados_write_op_cmpxattr(failed_write_op, "version", LIBRADOS_CMPXATTR_OP_EQ, old_version, strlen(old_version)); - rados_write_op_write_full(failed_write_op, content, strlen(content)); - rados_write_op_setxattr(failed_write_op, "version", version, strlen(version)); - ret = rados_write_op_operate(failed_write_op, io_ctx, object_name, NULL, 0); - if (ret < 0) { - printf("we just failed a write because the xattr wasn't as specified\n"); - } else { - printf("we succeeded on writing despite an xattr comparison mismatch!\n"); - ret = EXIT_FAILURE; - rados_release_write_op(failed_write_op); - goto out; - } - rados_release_write_op(failed_write_op); - - /* - * Now let's do the update with the correct xattr values so it - * actually goes through - */ - content = "v3"; - old_version = "2"; - version = "3"; - rados_write_op_t update_op = rados_create_write_op(); - if (!failed_write_op) { - printf("failed to allocate write op\n"); - ret = EXIT_FAILURE; - goto out; - } - rados_write_op_cmpxattr(update_op, "version", LIBRADOS_CMPXATTR_OP_EQ, old_version, strlen(old_version)); - rados_write_op_write_full(update_op, content, strlen(content)); - rados_write_op_setxattr(update_op, "version", version, strlen(version)); - ret = rados_write_op_operate(update_op, io_ctx, object_name, NULL, 0); - if (ret < 0) { - printf("failed to do a compound write update! error %d\n", ret); - ret = EXIT_FAILURE; - rados_release_write_op(update_op); - goto out; - } else { - printf("we overwrote our object %s following an xattr test with contents\n%s\n", object_name, content); - } - rados_release_write_op(update_op); - } - - ret = EXIT_SUCCESS; - - out: - if (io_ctx) { - rados_ioctx_destroy(io_ctx); - } - - if (pool_created) { - /* - * And now we're done, so let's remove our pool and then - * shut down the connection gracefully. - */ - int delete_ret = rados_pool_delete(rados, pool_name); - if (delete_ret < 0) { - // be careful not to - printf("We failed to delete our test pool!\n"); - ret = EXIT_FAILURE; - } - } - - rados_shutdown(rados); - - return ret; -} diff --git a/examples/rbd-replay/.gitignore b/examples/rbd-replay/.gitignore deleted file mode 100644 index f9e70539ce7d..000000000000 --- a/examples/rbd-replay/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -/*.log -/replayer -/traces diff --git a/examples/rbd-replay/create-image b/examples/rbd-replay/create-image deleted file mode 100755 index 3486d98d9db8..000000000000 --- a/examples/rbd-replay/create-image +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -pool=rbd -image=my-image -size=10G -export LD_LIBRARY_PATH=../../src/.libs -#qemu-img create -f raw rbd:$pool/$image:conf=../../src/ceph.conf $size -qemu-img convert linux-0.2.img -O raw rbd:$pool/$image:conf=../../src/ceph.conf diff --git a/examples/rbd-replay/replay b/examples/rbd-replay/replay deleted file mode 100755 index 42f4f2081776..000000000000 --- a/examples/rbd-replay/replay +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -lttng create -lttng enable-event -u 'librbd:*' -lttng add-context -u -t pthread_id -lttng start -../../src/rbd-replay --conf=../../src/ceph.conf replay.bin "$@" | tee replay.log -lttng stop -lttng view > replay-trace.log diff --git a/examples/rbd-replay/run-rbd-replay-prep b/examples/rbd-replay/run-rbd-replay-prep deleted file mode 100755 index 28f4876008a5..000000000000 --- a/examples/rbd-replay/run-rbd-replay-prep +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -../../src/rbd-replay-prep traces/ust/uid/10002/64-bit replay.bin diff --git a/examples/rbd-replay/trace b/examples/rbd-replay/trace deleted file mode 100755 index 02a53589ef9d..000000000000 --- a/examples/rbd-replay/trace +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -mkdir -p traces -lttng create -o traces librbd -lttng enable-event -u 'librbd:*' -lttng add-context -u -t pthread_id -lttng start -LD_LIBRARY_PATH=../../src/.libs/ qemu-system-i386 -m 1024 rbd:rbd/my-image:conf=../../src/ceph.conf -lttng stop -lttng view > trace.log diff --git a/man/Makefile.am b/man/Makefile.am index 4dc71cc208d2..e29154ae7c28 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -26,6 +26,4 @@ dist_man_MANS = \ ceph-rest-api.8 \ ceph-rbdnamer.8 \ ceph-post-file.8 \ - rbd-fuse.8 \ - rbd-replay.8 \ - rbd-replay-prep.8 + rbd-fuse.8 diff --git a/man/rbd-replay-prep.8 b/man/rbd-replay-prep.8 deleted file mode 100644 index 707fe73448c5..000000000000 --- a/man/rbd-replay-prep.8 +++ /dev/null @@ -1,98 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "RBD-REPLAY-PREP" "8" "August 11, 2014" "dev" "Ceph" -.SH NAME -rbd-replay-prep \- prepare captured rados block device (RBD) workloads for replay -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.nf -\fBrbd\-replay\-prep\fP [ \-\-window \fIseconds\fP ] \fItrace_dir\fP \fIreplay_file\fP -.fi -.sp -.SH DESCRIPTION -.sp -\fBrbd\-replay\-prep\fP processes raw rados block device (RBD) traces to prepare them for \fBrbd\-replay\fP\&. -.SH OPTIONS -.INDENT 0.0 -.TP -.B \-\-window seconds -Requests further apart than \(aqseconds\(aq seconds are assumed to be independent. -.UNINDENT -.SH EXAMPLES -.sp -To prepare workload1\-trace for replay: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -rbd\-replay\-prep workload1\-trace/ust/uid/1000/64\-bit workload1 -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AVAILABILITY -.sp -\fBrbd\-replay\-prep\fP is part of the Ceph distributed storage system. Please refer to -the Ceph documentation at \fI\%http://ceph.com/docs\fP for more information. -.SH SEE ALSO -.sp -\fBrbd\-replay\fP(8), -\fBrbd\fP(8) -.SH COPYRIGHT -2010-2014, Inktank Storage, Inc. and contributors. Licensed under Creative Commons BY-SA -.\" Generated by docutils manpage writer. -. diff --git a/man/rbd-replay.8 b/man/rbd-replay.8 deleted file mode 100644 index 87cde1388ad9..000000000000 --- a/man/rbd-replay.8 +++ /dev/null @@ -1,132 +0,0 @@ -.\" Man page generated from reStructuredText. -. -.TH "RBD-REPLAY" "8" "August 07, 2014" "dev" "Ceph" -.SH NAME -rbd-replay \- replay rados block device (RBD) workloads -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -. -.nr rst2man-indent-level 0 -. -.de1 rstReportMargin -\\$1 \\n[an-margin] -level \\n[rst2man-indent-level] -level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] -- -\\n[rst2man-indent0] -\\n[rst2man-indent1] -\\n[rst2man-indent2] -.. -.de1 INDENT -.\" .rstReportMargin pre: -. RS \\$1 -. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] -. nr rst2man-indent-level +1 -.\" .rstReportMargin post: -.. -.de UNINDENT -. RE -.\" indent \\n[an-margin] -.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] -.nr rst2man-indent-level -1 -.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] -.in \\n[rst2man-indent\\n[rst2man-indent-level]]u -.. -.SH SYNOPSIS -.nf -\fBrbd\-replay\fP [ \fIoptions\fP ] \fIreplay_file\fP -.fi -.sp -.SH DESCRIPTION -.sp -\fBrbd\-replay\fP is a utility for replaying rados block device (RBD) workloads. -.SH OPTIONS -.INDENT 0.0 -.TP -.B \-c ceph.conf, \-\-conf ceph.conf -Use ceph.conf configuration file instead of the default /etc/ceph/ceph.conf to -determine monitor addresses during startup. -.UNINDENT -.INDENT 0.0 -.TP -.B \-p pool, \-\-pool pool -Interact with the given pool. Defaults to \(aqrbd\(aq. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-latency\-multiplier -Multiplies inter\-request latencies. Default: 1. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-read\-only -Only replay non\-destructive requests. -.UNINDENT -.INDENT 0.0 -.TP -.B \-\-map\-image rule -Add a rule to map image names in the trace to image names in the replay cluster. -A rule of image1@snap1=image2@snap2 would map snap1 of image1 to snap2 of image2. -.UNINDENT -.SH EXAMPLES -.sp -To replay workload1 as fast as possible: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -rbd\-replay \-\-latency\-multiplier=0 workload1 -.ft P -.fi -.UNINDENT -.UNINDENT -.sp -To replay workload1 but use test_image instead of prod_image: -.INDENT 0.0 -.INDENT 3.5 -.sp -.nf -.ft C -rbd\-replay \-\-map\-image=prod_image=test_image workload1 -.ft P -.fi -.UNINDENT -.UNINDENT -.SH AVAILABILITY -.sp -\fBrbd\-replay\fP is part of the Ceph distributed storage system. Please refer to -the Ceph documentation at \fI\%http://ceph.com/docs\fP for more information. -.SH SEE ALSO -.sp -\fBceph\fP(8), -\fBrbd\fP(8) -.SH COPYRIGHT -2010-2014, Inktank Storage, Inc. and contributors. Licensed under Creative Commons BY-SA -.\" Generated by docutils manpage writer. -. diff --git a/src/.gitignore b/src/.gitignore index 2482e1a8a280..fec9f70c31d8 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -66,8 +66,6 @@ Makefile /radosgw-admin /rbd /rbd-fuse -/rbd-replay -/rbd-replay-prep /rest-bench /sample.fetch_config /TAGS diff --git a/src/Makefile-env.am b/src/Makefile-env.am index f2ab6558bc84..57fa8d7968cf 100644 --- a/src/Makefile-env.am +++ b/src/Makefile-env.am @@ -156,10 +156,6 @@ LIBRBD = librbd.la LIBKRBD = libkrbd.la LIBCEPHFS = libcephfs.la LIBERASURE_CODE = liberasure_code.la -LIBOSD_TP = tracing/libosd_tp.la -LIBRADOS_TP = tracing/librados_tp.la -LIBRBD_TP = tracing/librbd_tp.la -LIBOS_TP = tracing/libos_tp.la if WITH_LIBAIO LIBOS += -laio diff --git a/src/Makefile.am b/src/Makefile.am index b954f3f8d051..0f5dc732a9b5 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -1,7 +1,7 @@ include Makefile-env.am -SUBDIRS += ocf java tracing -DIST_SUBDIRS += gtest ocf libs3 java tracing +SUBDIRS += ocf java +DIST_SUBDIRS += gtest ocf libs3 java @@ -32,7 +32,6 @@ include librbd/Makefile.am include rgw/Makefile.am include cls/Makefile.am include key_value_store/Makefile.am -include rbd_replay/Makefile.am include test/Makefile.am include tools/Makefile.am @@ -644,12 +643,6 @@ TESTS = \ check-local: $(srcdir)/test/encoding/readable.sh ../ceph-object-corpus -if WITH_LTTNG -# TODO: If we're running the parallel test harness (the preferred harness), this should be AM_TESTS_ENVIRONMENT instead. -# See: https://www.gnu.org/software/automake/manual/html_node/Scripts_002dbased-Testsuites.html -# I don't see the serial-tests Automake option anywhere, but my AM_TESTS_ENVIRONMENT was being ignored. -TESTS_ENVIRONMENT = LD_PRELOAD=liblttng-ust-fork.so; export LD_PRELOAD; echo "LD_PRELOAD=$${LD_PRELOAD}"; -endif # base targets diff --git a/src/common/Mutex.cc b/src/common/Mutex.cc index a0c1202183dc..f1e9a550c81b 100644 --- a/src/common/Mutex.cc +++ b/src/common/Mutex.cc @@ -77,32 +77,20 @@ Mutex::~Mutex() { } void Mutex::Lock(bool no_lockdep) { - utime_t start; - int r; - if (lockdep && g_lockdep && !no_lockdep) _will_lock(); if (TryLock()) { - goto out; + return; } + utime_t start; if (logger && cct && cct->_conf->mutex_perf_counter) start = ceph_clock_now(cct); - r = pthread_mutex_lock(&_m); + int r = pthread_mutex_lock(&_m); if (logger && cct && cct->_conf->mutex_perf_counter) logger->tinc(l_mutex_wait, ceph_clock_now(cct) - start); assert(r == 0); if (lockdep && g_lockdep) _locked(); _post_lock(); - -out: - ; -} - -void Mutex::Unlock() { - _pre_unlock(); - if (lockdep && g_lockdep) _will_unlock(); - int r = pthread_mutex_unlock(&_m); - assert(r == 0); } diff --git a/src/common/Mutex.h b/src/common/Mutex.h index e2ebe1fa6e8f..e26a090703d2 100644 --- a/src/common/Mutex.h +++ b/src/common/Mutex.h @@ -101,7 +101,12 @@ public: assert(nlock == 0); } } - void Unlock(); + void Unlock() { + _pre_unlock(); + if (lockdep && g_lockdep) _will_unlock(); + int r = pthread_mutex_unlock(&_m); + assert(r == 0); + } friend class Cond; diff --git a/src/common/assert.cc b/src/common/assert.cc index 67c43df1b782..7889ad043a69 100644 --- a/src/common/assert.cc +++ b/src/common/assert.cc @@ -77,75 +77,6 @@ namespace ceph { throw FailedAssertion(bt); } - void __ceph_assertf_fail(const char *assertion, const char *file, int line, const char *func, const char* msg, ...) - { - ostringstream tss; - tss << ceph_clock_now(g_assert_context); - - class BufAppender { - public: - BufAppender(char* buf, int size) : bufptr(buf), remaining(size) { - } - - void printf(const char * format, ...) { - va_list args; - va_start(args, format); - this->vprintf(format, args); - va_end(args); - } - - void vprintf(const char * format, va_list args) { - int n = vsnprintf(bufptr, remaining, format, args); - if (n >= 0) { - if (n < remaining) { - remaining -= n; - bufptr += n; - } else { - remaining = 0; - } - } - } - - private: - char* bufptr; - int remaining; - }; - - char buf[8096]; - BufAppender ba(buf, sizeof(buf)); - BackTrace *bt = new BackTrace(1); - ba.printf("%s: In function '%s' thread %llx time %s\n" - "%s: %d: FAILED assert(%s)\n", - file, func, (unsigned long long)pthread_self(), tss.str().c_str(), - file, line, assertion); - ba.printf("Assertion details: "); - va_list args; - va_start(args, msg); - ba.vprintf(msg, args); - va_end(args); - ba.printf("\n"); - dout_emergency(buf); - - // TODO: get rid of this memory allocation. - ostringstream oss; - bt->print(oss); - dout_emergency(oss.str()); - - dout_emergency(" NOTE: a copy of the executable, or `objdump -rdS ` " - "is needed to interpret this.\n"); - - if (g_assert_context) { - lderr(g_assert_context) << buf << std::endl; - bt->print(*_dout); - *_dout << " NOTE: a copy of the executable, or `objdump -rdS ` " - << "is needed to interpret this.\n" << dendl; - - g_assert_context->_log->dump_recent(); - } - - throw FailedAssertion(bt); - } - void __ceph_assert_warn(const char *assertion, const char *file, int line, const char *func) { diff --git a/src/common/config_opts.h b/src/common/config_opts.h index ad9ba2623a15..d4c4b5d1a9f8 100644 --- a/src/common/config_opts.h +++ b/src/common/config_opts.h @@ -72,7 +72,6 @@ SUBSYS(striper, 0, 1) SUBSYS(objecter, 0, 1) SUBSYS(rados, 0, 5) SUBSYS(rbd, 0, 5) -SUBSYS(rbd_replay, 0, 5) SUBSYS(journaler, 0, 5) SUBSYS(objectcacher, 0, 5) SUBSYS(client, 0, 5) diff --git a/src/include/assert.h b/src/include/assert.h index ec0aa34d601f..5ff41ba69d7a 100644 --- a/src/include/assert.h +++ b/src/include/assert.h @@ -68,8 +68,6 @@ struct FailedAssertion { extern void register_assert_context(CephContext *cct); extern void __ceph_assert_fail(const char *assertion, const char *file, int line, const char *function) __attribute__ ((__noreturn__)); -extern void __ceph_assertf_fail(const char *assertion, const char *file, int line, const char *function, const char* msg, ...) - __attribute__ ((__noreturn__)); extern void __ceph_assert_warn(const char *assertion, const char *file, int line, const char *function); #define ceph_assert(expr) \ @@ -140,9 +138,3 @@ using namespace ceph; ? __CEPH_ASSERT_VOID_CAST (0) \ : __ceph_assert_fail (__STRING(expr), __FILE__, __LINE__, __CEPH_ASSERT_FUNCTION)) -// Named by analogy with printf. Along with an expression, takes a format -// string and parameters which are printed if the assertion fails. -#define assertf(expr, ...) \ - ((expr) \ - ? __CEPH_ASSERT_VOID_CAST (0) \ - : __ceph_assertf_fail (__STRING(expr), __FILE__, __LINE__, __CEPH_ASSERT_FUNCTION, __VA_ARGS__)) diff --git a/src/include/rbd/librbd.hpp b/src/include/rbd/librbd.hpp index f85e090e7652..7107f5848253 100644 --- a/src/include/rbd/librbd.hpp +++ b/src/include/rbd/librbd.hpp @@ -60,9 +60,6 @@ public: RBD(); ~RBD(); - // This must be dynamically allocated with new, and - // must be released with release(). - // Do not use delete. struct AioCompletion { void *pc; AioCompletion(void *cb_arg, callback_t complete_cb); diff --git a/src/librados/Makefile.am b/src/librados/Makefile.am index 75a1683dc5a9..a7d02ad853c8 100644 --- a/src/librados/Makefile.am +++ b/src/librados/Makefile.am @@ -9,10 +9,6 @@ librados_la_SOURCES = \ librados_la_CXXFLAGS = ${AM_CXXFLAGS} LIBRADOS_DEPS += libcls_lock_client.la $(LIBOSDC) $(LIBCOMMON) -if WITH_LTTNG -LIBRADOS_DEPS += $(LIBRADOS_TP) -endif - librados_la_LIBADD = $(LIBRADOS_DEPS) $(PTHREAD_LIBS) $(CRYPTO_LIBS) $(EXTRALIBS) librados_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0 if LINUX diff --git a/src/librados/librados.cc b/src/librados/librados.cc index e123d6cc98ad..60665dd024c9 100644 --- a/src/librados/librados.cc +++ b/src/librados/librados.cc @@ -37,10 +37,6 @@ #include #include -#ifdef WITH_LTTNG -#include "tracing/librados.h" -#endif - using std::string; using std::map; using std::set; @@ -1831,14 +1827,11 @@ int rados_create_common(rados_t *pcluster, extern "C" int rados_create(rados_t *pcluster, const char * const id) { - tracepoint(librados, rados_create_enter, id); CephInitParameters iparams(CEPH_ENTITY_TYPE_CLIENT); if (id) { iparams.name.set(CEPH_ENTITY_TYPE_CLIENT, id); } - int retval = rados_create_common(pcluster, "ceph", &iparams); - tracepoint(librados, rados_create_exit, retval, *pcluster); - return retval; + return rados_create_common(pcluster, "ceph", &iparams); } // as above, but @@ -1850,17 +1843,12 @@ extern "C" int rados_create(rados_t *pcluster, const char * const id) extern "C" int rados_create2(rados_t *pcluster, const char *const clustername, const char * const name, uint64_t flags) { - tracepoint(librados, rados_create2_enter, clustername, name, flags); // client is assumed, but from_str will override CephInitParameters iparams(CEPH_ENTITY_TYPE_CLIENT); - if (!name || !iparams.name.from_str(name)) { - tracepoint(librados, rados_create2_exit, -EINVAL, *pcluster); + if (!name || !iparams.name.from_str(name)) return -EINVAL; - } - int retval = rados_create_common(pcluster, clustername, &iparams); - tracepoint(librados, rados_create2_exit, retval, *pcluster); - return retval; + return rados_create_common(pcluster, clustername, &iparams); } /* This function is intended for use by Ceph daemons. These daemons have @@ -1869,105 +1857,75 @@ extern "C" int rados_create2(rados_t *pcluster, const char *const clustername, */ extern "C" int rados_create_with_context(rados_t *pcluster, rados_config_t cct_) { - tracepoint(librados, rados_create_with_context_enter, cct_); CephContext *cct = (CephContext *)cct_; librados::RadosClient *radosp = new librados::RadosClient(cct); *pcluster = (void *)radosp; - int retval = 0; - tracepoint(librados, rados_create_with_context_exit, retval, *pcluster); - return retval; + return 0; } extern "C" rados_config_t rados_cct(rados_t cluster) { - tracepoint(librados, rados_cct_enter, cluster); librados::RadosClient *client = (librados::RadosClient *)cluster; - rados_config_t retval = (rados_config_t)client->cct; - tracepoint(librados, rados_cct_exit, retval); - return retval; + return (rados_config_t)client->cct; } extern "C" int rados_connect(rados_t cluster) { - tracepoint(librados, rados_connect_enter, cluster); librados::RadosClient *client = (librados::RadosClient *)cluster; - int retval = client->connect(); - tracepoint(librados, rados_connect_exit, retval); - return retval; + return client->connect(); } extern "C" void rados_shutdown(rados_t cluster) { - tracepoint(librados, rados_shutdown_enter, cluster); librados::RadosClient *radosp = (librados::RadosClient *)cluster; radosp->shutdown(); delete radosp; - tracepoint(librados, rados_shutdown_exit); } extern "C" uint64_t rados_get_instance_id(rados_t cluster) { - tracepoint(librados, rados_get_instance_id_enter, cluster); librados::RadosClient *client = (librados::RadosClient *)cluster; - uint64_t retval = client->get_instance_id(); - tracepoint(librados, rados_get_instance_id_exit, retval); - return retval; + return client->get_instance_id(); } extern "C" void rados_version(int *major, int *minor, int *extra) { - tracepoint(librados, rados_version_enter, major, minor, extra); if (major) *major = LIBRADOS_VER_MAJOR; if (minor) *minor = LIBRADOS_VER_MINOR; if (extra) *extra = LIBRADOS_VER_EXTRA; - tracepoint(librados, rados_version_exit, LIBRADOS_VER_MAJOR, LIBRADOS_VER_MINOR, LIBRADOS_VER_EXTRA); } // -- config -- extern "C" int rados_conf_read_file(rados_t cluster, const char *path_list) { - tracepoint(librados, rados_conf_read_file_enter, cluster, path_list); librados::RadosClient *client = (librados::RadosClient *)cluster; md_config_t *conf = client->cct->_conf; std::deque parse_errors; int ret = conf->parse_config_files(path_list, &parse_errors, NULL, 0); - if (ret) { - tracepoint(librados, rados_conf_read_file_exit, ret); + if (ret) return ret; - } conf->parse_env(); // environment variables override conf->apply_changes(NULL); complain_about_parse_errors(client->cct, &parse_errors); - int retval = 0; - tracepoint(librados, rados_conf_read_file_exit, retval); - return retval; + return 0; } extern "C" int rados_conf_parse_argv(rados_t cluster, int argc, const char **argv) { - tracepoint(librados, rados_conf_parse_argv_enter, cluster, argc); - int i; - for(i = 0; i < argc; i++) { - tracepoint(librados, rados_conf_parse_argv_arg, argv[i]); - } librados::RadosClient *client = (librados::RadosClient *)cluster; md_config_t *conf = client->cct->_conf; vector args; argv_to_vec(argc, argv, args); int ret = conf->parse_argv(args); - if (ret) { - tracepoint(librados, rados_conf_parse_argv_exit, ret); + if (ret) return ret; - } conf->apply_changes(NULL); - int retval = 0; - tracepoint(librados, rados_conf_parse_argv_exit, retval); - return retval; + return 0; } // like above, but return the remainder of argv to contain remaining @@ -1979,73 +1937,53 @@ extern "C" int rados_conf_parse_argv_remainder(rados_t cluster, int argc, const char **argv, const char **remargv) { - tracepoint(librados, rados_conf_parse_argv_remainder_enter, cluster, argc); - unsigned int i; - for(i = 0; i < (unsigned int) argc; i++) { - tracepoint(librados, rados_conf_parse_argv_remainder_arg, argv[i]); - } librados::RadosClient *client = (librados::RadosClient *)cluster; md_config_t *conf = client->cct->_conf; vector args; for (int i=0; iparse_argv(args); - if (ret) { - tracepoint(librados, rados_conf_parse_argv_remainder_exit, ret); + if (ret) return ret; - } conf->apply_changes(NULL); assert(args.size() <= (unsigned int)argc); + unsigned int i; for (i = 0; i < (unsigned int)argc; ++i) { if (i < args.size()) remargv[i] = args[i]; else remargv[i] = (const char *)NULL; - tracepoint(librados, rados_conf_parse_argv_remainder_remarg, remargv[i]); } - int retval = 0; - tracepoint(librados, rados_conf_parse_argv_remainder_exit, retval); - return retval; + return 0; } extern "C" int rados_conf_parse_env(rados_t cluster, const char *env) { - tracepoint(librados, rados_conf_parse_env_enter, cluster, env); librados::RadosClient *client = (librados::RadosClient *)cluster; md_config_t *conf = client->cct->_conf; vector args; env_to_vec(args, env); int ret = conf->parse_argv(args); - if (ret) { - tracepoint(librados, rados_conf_parse_env_exit, ret); + if (ret) return ret; - } conf->apply_changes(NULL); - int retval = 0; - tracepoint(librados, rados_conf_parse_env_exit, retval); - return retval; + return 0; } extern "C" int rados_conf_set(rados_t cluster, const char *option, const char *value) { - tracepoint(librados, rados_conf_set_enter, cluster, option, value); librados::RadosClient *client = (librados::RadosClient *)cluster; md_config_t *conf = client->cct->_conf; int ret = conf->set_val(option, value); - if (ret) { - tracepoint(librados, rados_conf_set_exit, ret); + if (ret) return ret; - } conf->apply_changes(NULL); - int retval = 0; - tracepoint(librados, rados_conf_set_exit, retval); - return retval; + return 0; } /* cluster info */ extern "C" int rados_cluster_stat(rados_t cluster, rados_cluster_stat_t *result) { - tracepoint(librados, rados_cluster_stat_enter, cluster); librados::RadosClient *client = (librados::RadosClient *)cluster; ceph_statfs stats; @@ -2054,92 +1992,65 @@ extern "C" int rados_cluster_stat(rados_t cluster, rados_cluster_stat_t *result) result->kb_used = stats.kb_used; result->kb_avail = stats.kb_avail; result->num_objects = stats.num_objects; - tracepoint(librados, rados_cluster_stat_exit, r, result->kb, result->kb_used, result->kb_avail, result->num_objects); return r; } extern "C" int rados_conf_get(rados_t cluster, const char *option, char *buf, size_t len) { - tracepoint(librados, rados_conf_get_enter, cluster, option, len); char *tmp = buf; librados::RadosClient *client = (librados::RadosClient *)cluster; md_config_t *conf = client->cct->_conf; - int retval = conf->get_val(option, &tmp, len); - tracepoint(librados, rados_conf_get_exit, retval, retval ? "" : option); - return retval; + return conf->get_val(option, &tmp, len); } extern "C" int64_t rados_pool_lookup(rados_t cluster, const char *name) { - tracepoint(librados, rados_pool_lookup_enter, cluster, name); librados::RadosClient *radosp = (librados::RadosClient *)cluster; - int64_t retval = radosp->lookup_pool(name); - tracepoint(librados, rados_pool_lookup_exit, retval); - return retval; + return radosp->lookup_pool(name); } extern "C" int rados_pool_reverse_lookup(rados_t cluster, int64_t id, char *buf, size_t maxlen) { - tracepoint(librados, rados_pool_reverse_lookup_enter, cluster, id, maxlen); librados::RadosClient *radosp = (librados::RadosClient *)cluster; std::string name; int r = radosp->pool_get_name(id, &name); - if (r < 0) { - tracepoint(librados, rados_pool_reverse_lookup_exit, r, ""); + if (r < 0) return r; - } - if (name.length() >= maxlen) { - tracepoint(librados, rados_pool_reverse_lookup_exit, -ERANGE, ""); + if (name.length() >= maxlen) return -ERANGE; - } strcpy(buf, name.c_str()); - int retval = name.length(); - tracepoint(librados, rados_pool_reverse_lookup_exit, retval, buf); - return retval; + return name.length(); } extern "C" int rados_cluster_fsid(rados_t cluster, char *buf, size_t maxlen) { - tracepoint(librados, rados_cluster_fsid_enter, cluster, maxlen); librados::RadosClient *radosp = (librados::RadosClient *)cluster; std::string fsid; radosp->get_fsid(&fsid); - if (fsid.length() >= maxlen) { - tracepoint(librados, rados_cluster_fsid_exit, -ERANGE, ""); + if (fsid.length() >= maxlen) return -ERANGE; - } strcpy(buf, fsid.c_str()); - int retval = fsid.length(); - tracepoint(librados, rados_cluster_fsid_exit, retval, buf); - return retval; + return fsid.length(); } extern "C" int rados_wait_for_latest_osdmap(rados_t cluster) { - tracepoint(librados, rados_wait_for_latest_osdmap_enter, cluster); librados::RadosClient *radosp = (librados::RadosClient *)cluster; - int retval = radosp->wait_for_latest_osdmap(); - tracepoint(librados, rados_wait_for_latest_osdmap_exit, retval); - return retval; + return radosp->wait_for_latest_osdmap(); } extern "C" int rados_pool_list(rados_t cluster, char *buf, size_t len) { - tracepoint(librados, rados_pool_list_enter, cluster, len); librados::RadosClient *client = (librados::RadosClient *)cluster; std::list pools; int r = client->pool_list(pools); - if (r < 0) { - tracepoint(librados, rados_pool_list_exit, r); + if (r < 0) return r; - } - if (len > 0 && !buf) { - tracepoint(librados, rados_pool_list_exit, -EINVAL); + if (len > 0 && !buf) return -EINVAL; - } char *b = buf; if (b) @@ -2151,9 +2062,7 @@ extern "C" int rados_pool_list(rados_t cluster, char *buf, size_t len) int rl = i->length() + 1; if (len < (unsigned)rl) break; - const char* pool = i->c_str(); - tracepoint(librados, rados_pool_list_pool, pool); - strncat(b, pool, rl); + strncat(b, i->c_str(), rl); needed += rl; len -= rl; b += rl; @@ -2162,9 +2071,7 @@ extern "C" int rados_pool_list(rados_t cluster, char *buf, size_t len) int rl = i->length() + 1; needed += rl; } - int retval = needed + 1; - tracepoint(librados, rados_pool_list_exit, retval); - return retval; + return needed + 1; } static void do_out_buffer(bufferlist& outbl, char **outbuf, size_t *outbuflen) @@ -2198,20 +2105,16 @@ static void do_out_buffer(string& outbl, char **outbuf, size_t *outbuflen) extern "C" int rados_ping_monitor(rados_t cluster, const char *mon_id, char **outstr, size_t *outstrlen) { - tracepoint(librados, rados_ping_monitor_enter, cluster, mon_id); librados::RadosClient *client = (librados::RadosClient *)cluster; string str; - if (!mon_id) { - tracepoint(librados, rados_ping_monitor_exit, -EINVAL, NULL, NULL); + if (!mon_id) return -EINVAL; - } int ret = client->ping_monitor(mon_id, &str); if (ret == 0 && !str.empty() && outstr && outstrlen) { do_out_buffer(str, outstr, outstrlen); } - tracepoint(librados, rados_ping_monitor_exit, ret, ret < 0 ? NULL : outstr, ret < 0 ? NULL : outstrlen); return ret; } @@ -2221,24 +2124,20 @@ extern "C" int rados_mon_command(rados_t cluster, const char **cmd, char **outbuf, size_t *outbuflen, char **outs, size_t *outslen) { - tracepoint(librados, rados_mon_command_enter, cluster, cmdlen, inbuf, inbuflen); librados::RadosClient *client = (librados::RadosClient *)cluster; bufferlist inbl; bufferlist outbl; string outstring; vector cmdvec; - for (size_t i = 0; i < cmdlen; i++) { - tracepoint(librados, rados_mon_command_cmd, cmd[i]); + for (size_t i = 0; i < cmdlen; i++) cmdvec.push_back(cmd[i]); - } inbl.append(inbuf, inbuflen); int ret = client->mon_command(cmdvec, inbl, &outbl, &outstring); do_out_buffer(outbl, outbuf, outbuflen); do_out_buffer(outstring, outs, outslen); - tracepoint(librados, rados_mon_command_exit, ret, outbuf, outbuflen, outs, outslen); return ret; } @@ -2249,7 +2148,6 @@ extern "C" int rados_mon_command_target(rados_t cluster, const char *name, char **outbuf, size_t *outbuflen, char **outs, size_t *outslen) { - tracepoint(librados, rados_mon_command_target_enter, cluster, name, cmdlen, inbuf, inbuflen); librados::RadosClient *client = (librados::RadosClient *)cluster; bufferlist inbl; bufferlist outbl; @@ -2267,10 +2165,8 @@ extern "C" int rados_mon_command_target(rados_t cluster, const char *name, rank = -1; } - for (size_t i = 0; i < cmdlen; i++) { - tracepoint(librados, rados_mon_command_target_cmd, cmd[i]); + for (size_t i = 0; i < cmdlen; i++) cmdvec.push_back(cmd[i]); - } inbl.append(inbuf, inbuflen); int ret; @@ -2281,7 +2177,6 @@ extern "C" int rados_mon_command_target(rados_t cluster, const char *name, do_out_buffer(outbl, outbuf, outbuflen); do_out_buffer(outstring, outs, outslen); - tracepoint(librados, rados_mon_command_target_exit, ret, outbuf, outbuflen, outs, outslen); return ret; } @@ -2291,24 +2186,20 @@ extern "C" int rados_osd_command(rados_t cluster, int osdid, const char **cmd, char **outbuf, size_t *outbuflen, char **outs, size_t *outslen) { - tracepoint(librados, rados_osd_command_enter, cluster, osdid, cmdlen, inbuf, inbuflen); librados::RadosClient *client = (librados::RadosClient *)cluster; bufferlist inbl; bufferlist outbl; string outstring; vector cmdvec; - for (size_t i = 0; i < cmdlen; i++) { - tracepoint(librados, rados_osd_command_cmd, cmd[i]); + for (size_t i = 0; i < cmdlen; i++) cmdvec.push_back(cmd[i]); - } inbl.append(inbuf, inbuflen); int ret = client->osd_command(osdid, cmdvec, inbl, &outbl, &outstring); do_out_buffer(outbl, outbuf, outbuflen); do_out_buffer(outstring, outs, outslen); - tracepoint(librados, rados_osd_command_exit, ret, outbuf, outbuflen, outs, outslen); return ret; } @@ -2320,7 +2211,6 @@ extern "C" int rados_pg_command(rados_t cluster, const char *pgstr, char **outbuf, size_t *outbuflen, char **outs, size_t *outslen) { - tracepoint(librados, rados_pg_command_enter, cluster, pgstr, cmdlen, inbuf, inbuflen); librados::RadosClient *client = (librados::RadosClient *)cluster; bufferlist inbl; bufferlist outbl; @@ -2328,10 +2218,8 @@ extern "C" int rados_pg_command(rados_t cluster, const char *pgstr, pg_t pgid; vector cmdvec; - for (size_t i = 0; i < cmdlen; i++) { - tracepoint(librados, rados_pg_command_cmd, cmd[i]); + for (size_t i = 0; i < cmdlen; i++) cmdvec.push_back(cmd[i]); - } inbl.append(inbuf, inbuflen); if (!pgid.parse(pgstr)) @@ -2341,68 +2229,52 @@ extern "C" int rados_pg_command(rados_t cluster, const char *pgstr, do_out_buffer(outbl, outbuf, outbuflen); do_out_buffer(outstring, outs, outslen); - tracepoint(librados, rados_pg_command_exit, ret, outbuf, outbuflen, outs, outslen); return ret; } extern "C" void rados_buffer_free(char *buf) { - tracepoint(librados, rados_buffer_free_enter, buf); if (buf) free(buf); - tracepoint(librados, rados_buffer_free_exit); } extern "C" int rados_monitor_log(rados_t cluster, const char *level, rados_log_callback_t cb, void *arg) { - tracepoint(librados, rados_monitor_log_enter, cluster, level, cb, arg); librados::RadosClient *client = (librados::RadosClient *)cluster; - int retval = client->monitor_log(level, cb, arg); - tracepoint(librados, rados_monitor_log_exit, retval); - return retval; + return client->monitor_log(level, cb, arg); } extern "C" int rados_ioctx_create(rados_t cluster, const char *name, rados_ioctx_t *io) { - tracepoint(librados, rados_ioctx_create_enter, cluster, name); librados::RadosClient *client = (librados::RadosClient *)cluster; librados::IoCtxImpl *ctx; int r = client->create_ioctx(name, &ctx); - if (r < 0) { - tracepoint(librados, rados_ioctx_create_exit, r, NULL); + if (r < 0) return r; - } *io = ctx; ctx->get(); - int retval = 0; - tracepoint(librados, rados_ioctx_create_exit, retval, ctx); - return retval; + return 0; } extern "C" void rados_ioctx_destroy(rados_ioctx_t io) { - tracepoint(librados, rados_ioctx_destroy_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; ctx->put(); - tracepoint(librados, rados_ioctx_destroy_exit); } extern "C" int rados_ioctx_pool_stat(rados_ioctx_t io, struct rados_pool_stat_t *stats) { - tracepoint(librados, rados_ioctx_pool_stat_enter, io); librados::IoCtxImpl *io_ctx_impl = (librados::IoCtxImpl *)io; list ls; ls.push_back(io_ctx_impl->pool_name); map rawresult; int err = io_ctx_impl->client->get_pool_stats(ls, rawresult); - if (err) { - tracepoint(librados, rados_ioctx_pool_stat_exit, err, stats); + if (err) return err; - } ::pool_stat_t& r = rawresult[io_ctx_impl->pool_name]; stats->num_kb = SHIFT_ROUND_UP(r.stats.sum.num_bytes, 10); @@ -2419,113 +2291,83 @@ extern "C" int rados_ioctx_pool_stat(rados_ioctx_t io, struct rados_pool_stat_t stats->num_rd_kb = r.stats.sum.num_rd_kb; stats->num_wr = r.stats.sum.num_wr; stats->num_wr_kb = r.stats.sum.num_wr_kb; - int retval = 0; - tracepoint(librados, rados_ioctx_pool_stat_exit, retval, stats); - return retval; + return 0; } extern "C" rados_config_t rados_ioctx_cct(rados_ioctx_t io) { - tracepoint(librados, rados_ioctx_cct_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - rados_config_t retval = (rados_config_t)ctx->client->cct; - tracepoint(librados, rados_ioctx_cct_exit, retval); - return retval; + return (rados_config_t)ctx->client->cct; } extern "C" void rados_ioctx_snap_set_read(rados_ioctx_t io, rados_snap_t seq) { - tracepoint(librados, rados_ioctx_snap_set_read_enter, io, seq); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; ctx->set_snap_read((snapid_t)seq); - tracepoint(librados, rados_ioctx_snap_set_read_exit); } extern "C" int rados_ioctx_selfmanaged_snap_set_write_ctx(rados_ioctx_t io, rados_snap_t seq, rados_snap_t *snaps, int num_snaps) { - tracepoint(librados, rados_ioctx_selfmanaged_snap_set_write_ctx_enter, io, seq, snaps, num_snaps); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; vector snv; snv.resize(num_snaps); - for (int i=0; iset_snap_write_context((snapid_t)seq, snv); - tracepoint(librados, rados_ioctx_selfmanaged_snap_set_write_ctx_exit, retval); - return retval; + return ctx->set_snap_write_context((snapid_t)seq, snv); } extern "C" int rados_write(rados_ioctx_t io, const char *o, const char *buf, size_t len, uint64_t off) { - tracepoint(librados, rados_write_enter, io, o, buf, len, off); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist bl; bl.append(buf, len); - int retval = ctx->write(oid, bl, len, off); - tracepoint(librados, rados_write_exit, retval); - return retval; + return ctx->write(oid, bl, len, off); } extern "C" int rados_append(rados_ioctx_t io, const char *o, const char *buf, size_t len) { - tracepoint(librados, rados_append_enter, io, o, buf, len); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist bl; bl.append(buf, len); - int retval = ctx->append(oid, bl, len); - tracepoint(librados, rados_append_exit, retval); - return retval; + return ctx->append(oid, bl, len); } extern "C" int rados_write_full(rados_ioctx_t io, const char *o, const char *buf, size_t len) { - tracepoint(librados, rados_write_full_enter, io, o, buf, len); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist bl; bl.append(buf, len); - int retval = ctx->write_full(oid, bl); - tracepoint(librados, rados_write_full_exit, retval); - return retval; + return ctx->write_full(oid, bl); } extern "C" int rados_clone_range(rados_ioctx_t io, const char *dst, uint64_t dst_off, const char *src, uint64_t src_off, size_t len) { - tracepoint(librados, rados_clone_range_enter, io, dst, dst_off, src, src_off, len); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t dst_oid(dst), src_oid(src); - int retval = ctx->clone_range(dst_oid, dst_off, src_oid, src_off, len); - tracepoint(librados, rados_clone_range_exit, retval); - return retval; + return ctx->clone_range(dst_oid, dst_off, src_oid, src_off, len); } extern "C" int rados_trunc(rados_ioctx_t io, const char *o, uint64_t size) { - tracepoint(librados, rados_trunc_enter, io, o, size); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); - int retval = ctx->trunc(oid, size); - tracepoint(librados, rados_trunc_exit, retval); - return retval; + return ctx->trunc(oid, size); } extern "C" int rados_remove(rados_ioctx_t io, const char *o) { - tracepoint(librados, rados_remove_enter, io, o); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); - int retval = ctx->remove(oid); - tracepoint(librados, rados_remove_exit, retval); - return retval; + return ctx->remove(oid); } extern "C" int rados_read(rados_ioctx_t io, const char *o, char *buf, size_t len, uint64_t off) { - tracepoint(librados, rados_read_enter, io, o, buf, len, off); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; int ret; object_t oid(o); @@ -2536,198 +2378,141 @@ extern "C" int rados_read(rados_ioctx_t io, const char *o, char *buf, size_t len ret = ctx->read(oid, bl, len, off); if (ret >= 0) { - if (bl.length() > len) { - tracepoint(librados, rados_read_exit, -ERANGE, NULL); + if (bl.length() > len) return -ERANGE; - } if (bl.c_str() != buf) bl.copy(0, bl.length(), buf); ret = bl.length(); // hrm :/ } - tracepoint(librados, rados_read_exit, ret, buf); return ret; } extern "C" uint64_t rados_get_last_version(rados_ioctx_t io) { - tracepoint(librados, rados_get_last_version_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - uint64_t retval = ctx->last_version(); - tracepoint(librados, rados_get_last_version_exit, retval); - return retval; + return ctx->last_version(); } extern "C" int rados_pool_create(rados_t cluster, const char *name) { - tracepoint(librados, rados_pool_create_enter, cluster, name); librados::RadosClient *radosp = (librados::RadosClient *)cluster; string sname(name); - int retval = radosp->pool_create(sname); - tracepoint(librados, rados_pool_create_exit, retval); - return retval; + return radosp->pool_create(sname); } extern "C" int rados_pool_create_with_auid(rados_t cluster, const char *name, uint64_t auid) { - tracepoint(librados, rados_pool_create_with_auid_enter, cluster, name, auid); librados::RadosClient *radosp = (librados::RadosClient *)cluster; string sname(name); - int retval = radosp->pool_create(sname, auid); - tracepoint(librados, rados_pool_create_with_auid_exit, retval); - return retval; + return radosp->pool_create(sname, auid); } extern "C" int rados_pool_create_with_crush_rule(rados_t cluster, const char *name, __u8 crush_rule_num) { - tracepoint(librados, rados_pool_create_with_crush_rule_enter, cluster, name, crush_rule_num); librados::RadosClient *radosp = (librados::RadosClient *)cluster; string sname(name); - int retval = radosp->pool_create(sname, 0, crush_rule_num); - tracepoint(librados, rados_pool_create_with_crush_rule_exit, retval); - return retval; + return radosp->pool_create(sname, 0, crush_rule_num); } extern "C" int rados_pool_create_with_all(rados_t cluster, const char *name, uint64_t auid, __u8 crush_rule_num) { - tracepoint(librados, rados_pool_create_with_all_enter, cluster, name, auid, crush_rule_num); librados::RadosClient *radosp = (librados::RadosClient *)cluster; string sname(name); - int retval = radosp->pool_create(sname, auid, crush_rule_num); - tracepoint(librados, rados_pool_create_with_all_exit, retval); - return retval; + return radosp->pool_create(sname, auid, crush_rule_num); } extern "C" int rados_pool_delete(rados_t cluster, const char *pool_name) { - tracepoint(librados, rados_pool_delete_enter, cluster, pool_name); librados::RadosClient *client = (librados::RadosClient *)cluster; - int retval = client->pool_delete(pool_name); - tracepoint(librados, rados_pool_delete_exit, retval); - return retval; + return client->pool_delete(pool_name); } extern "C" int rados_ioctx_pool_set_auid(rados_ioctx_t io, uint64_t auid) { - tracepoint(librados, rados_ioctx_pool_set_auid_enter, io, auid); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->pool_change_auid(auid); - tracepoint(librados, rados_ioctx_pool_set_auid_exit, retval); - return retval; + return ctx->pool_change_auid(auid); } extern "C" int rados_ioctx_pool_get_auid(rados_ioctx_t io, uint64_t *auid) { - tracepoint(librados, rados_ioctx_pool_get_auid_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->client->pool_get_auid(ctx->get_id(), (unsigned long long *)auid); - tracepoint(librados, rados_ioctx_pool_get_auid_exit, retval, *auid); - return retval; + return ctx->client->pool_get_auid(ctx->get_id(), (unsigned long long *)auid); } extern "C" int rados_ioctx_pool_requires_alignment(rados_ioctx_t io) { - tracepoint(librados, rados_ioctx_pool_requires_alignment_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->client->pool_requires_alignment(ctx->get_id()); - tracepoint(librados, rados_ioctx_pool_requires_alignment_exit, retval); - return retval; + return ctx->client->pool_requires_alignment(ctx->get_id()); } extern "C" uint64_t rados_ioctx_pool_required_alignment(rados_ioctx_t io) { - tracepoint(librados, rados_ioctx_pool_required_alignment_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - uint64_t retval = ctx->client->pool_required_alignment(ctx->get_id()); - tracepoint(librados, rados_ioctx_pool_required_alignment_exit, retval); - return retval; + return ctx->client->pool_required_alignment(ctx->get_id()); } extern "C" void rados_ioctx_locator_set_key(rados_ioctx_t io, const char *key) { - tracepoint(librados, rados_ioctx_locator_set_key_enter, io, key); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; if (key) ctx->oloc.key = key; else ctx->oloc.key = ""; - tracepoint(librados, rados_ioctx_locator_set_key_exit); } extern "C" void rados_ioctx_set_namespace(rados_ioctx_t io, const char *nspace) { - tracepoint(librados, rados_ioctx_set_namespace_enter, io, nspace); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; if (nspace) ctx->oloc.nspace = nspace; else ctx->oloc.nspace = ""; - tracepoint(librados, rados_ioctx_set_namespace_exit); } extern "C" rados_t rados_ioctx_get_cluster(rados_ioctx_t io) { - tracepoint(librados, rados_ioctx_get_cluster_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - rados_t retval = (rados_t)ctx->client; - tracepoint(librados, rados_ioctx_get_cluster_exit, retval); - return retval; + return (rados_t)ctx->client; } extern "C" int64_t rados_ioctx_get_id(rados_ioctx_t io) { - tracepoint(librados, rados_ioctx_get_id_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int64_t retval = ctx->get_id(); - tracepoint(librados, rados_ioctx_get_id_exit, retval); - return retval; + return ctx->get_id(); } extern "C" int rados_ioctx_get_pool_name(rados_ioctx_t io, char *s, unsigned maxlen) { - tracepoint(librados, rados_ioctx_get_pool_name_enter, io, maxlen); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - if (ctx->pool_name.length() >= maxlen) { - tracepoint(librados, rados_ioctx_get_pool_name_exit, -ERANGE, ""); + if (ctx->pool_name.length() >= maxlen) return -ERANGE; - } strcpy(s, ctx->pool_name.c_str()); - int retval = ctx->pool_name.length(); - tracepoint(librados, rados_ioctx_get_pool_name_exit, retval, s); - return retval; + return ctx->pool_name.length(); } // snaps extern "C" int rados_ioctx_snap_create(rados_ioctx_t io, const char *snapname) { - tracepoint(librados, rados_ioctx_snap_create_enter, io, snapname); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->snap_create(snapname); - tracepoint(librados, rados_ioctx_snap_create_exit, retval); - return retval; + return ctx->snap_create(snapname); } extern "C" int rados_ioctx_snap_remove(rados_ioctx_t io, const char *snapname) { - tracepoint(librados, rados_ioctx_snap_remove_enter, io, snapname); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->snap_remove(snapname); - tracepoint(librados, rados_ioctx_snap_remove_exit, retval); - return retval; + return ctx->snap_remove(snapname); } extern "C" int rados_ioctx_snap_rollback(rados_ioctx_t io, const char *oid, const char *snapname) { - tracepoint(librados, rados_ioctx_snap_rollback_enter, io, oid, snapname); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->rollback(oid, snapname); - tracepoint(librados, rados_ioctx_snap_rollback_exit, retval); - return retval; + return ctx->rollback(oid, snapname); } // Deprecated name kept for backward compatibility @@ -2740,136 +2525,97 @@ extern "C" int rados_rollback(rados_ioctx_t io, const char *oid, extern "C" int rados_ioctx_selfmanaged_snap_create(rados_ioctx_t io, uint64_t *snapid) { - tracepoint(librados, rados_ioctx_selfmanaged_snap_create_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->selfmanaged_snap_create(snapid); - tracepoint(librados, rados_ioctx_selfmanaged_snap_create_exit, retval, *snapid); - return retval; + return ctx->selfmanaged_snap_create(snapid); } extern "C" int rados_ioctx_selfmanaged_snap_remove(rados_ioctx_t io, uint64_t snapid) { - tracepoint(librados, rados_ioctx_selfmanaged_snap_remove_enter, io, snapid); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->selfmanaged_snap_remove(snapid); - tracepoint(librados, rados_ioctx_selfmanaged_snap_remove_exit, retval); - return retval; + return ctx->selfmanaged_snap_remove(snapid); } extern "C" int rados_ioctx_selfmanaged_snap_rollback(rados_ioctx_t io, const char *oid, uint64_t snapid) { - tracepoint(librados, rados_ioctx_selfmanaged_snap_rollback_enter, io, oid, snapid); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->selfmanaged_snap_rollback_object(oid, ctx->snapc, snapid); - tracepoint(librados, rados_ioctx_selfmanaged_snap_rollback_exit, retval); - return retval; + return ctx->selfmanaged_snap_rollback_object(oid, ctx->snapc, snapid); } extern "C" int rados_ioctx_snap_list(rados_ioctx_t io, rados_snap_t *snaps, int maxlen) { - tracepoint(librados, rados_ioctx_snap_list_enter, io, maxlen); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; vector snapvec; int r = ctx->snap_list(&snapvec); - if (r < 0) { - tracepoint(librados, rados_ioctx_snap_list_exit, r, snaps, 0); + if (r < 0) return r; - } if ((int)snapvec.size() <= maxlen) { - for (unsigned i=0; isnap_lookup(name, (uint64_t *)id); - tracepoint(librados, rados_ioctx_snap_lookup_exit, retval, *id); - return retval; + return ctx->snap_lookup(name, (uint64_t *)id); } extern "C" int rados_ioctx_snap_get_name(rados_ioctx_t io, rados_snap_t id, char *name, int maxlen) { - tracepoint(librados, rados_ioctx_snap_get_name_enter, io, id, maxlen); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; std::string sname; int r = ctx->snap_get_name(id, &sname); - if (r < 0) { - tracepoint(librados, rados_ioctx_snap_get_name_exit, r, ""); + if (r < 0) return r; - } - if ((int)sname.length() >= maxlen) { - int retval = -ERANGE; - tracepoint(librados, rados_ioctx_snap_get_name_exit, retval, ""); - return retval; - } + if ((int)sname.length() >= maxlen) + return -ERANGE; strncpy(name, sname.c_str(), maxlen); - int retval = 0; - tracepoint(librados, rados_ioctx_snap_get_name_exit, retval, name); - return retval; + return 0; } extern "C" int rados_ioctx_snap_get_stamp(rados_ioctx_t io, rados_snap_t id, time_t *t) { - tracepoint(librados, rados_ioctx_snap_get_stamp_enter, io, id); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->snap_get_stamp(id, t); - tracepoint(librados, rados_ioctx_snap_get_stamp_exit, retval, *t); - return retval; + return ctx->snap_get_stamp(id, t); } extern "C" int rados_getxattr(rados_ioctx_t io, const char *o, const char *name, char *buf, size_t len) { - tracepoint(librados, rados_getxattr_enter, io, o, name, len); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; int ret; object_t oid(o); bufferlist bl; ret = ctx->getxattr(oid, name, bl); if (ret >= 0) { - if (bl.length() > len) { - tracepoint(librados, rados_getxattr_exit, -ERANGE, buf, 0); + if (bl.length() > len) return -ERANGE; - } bl.copy(0, bl.length(), buf); ret = bl.length(); } - tracepoint(librados, rados_getxattr_exit, ret, buf, ret); return ret; } extern "C" int rados_getxattrs(rados_ioctx_t io, const char *oid, rados_xattrs_iter_t *iter) { - tracepoint(librados, rados_getxattrs_enter, io, oid); librados::RadosXattrsIter *it = new librados::RadosXattrsIter(); - if (!it) { - tracepoint(librados, rados_getxattrs_exit, -ENOMEM, NULL); + if (!it) return -ENOMEM; - } librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t obj(oid); int ret = ctx->getxattrs(obj, it->attrset); if (ret) { delete it; - tracepoint(librados, rados_getxattrs_exit, ret, NULL); return ret; } it->i = it->attrset.begin(); @@ -2877,20 +2623,17 @@ extern "C" int rados_getxattrs(rados_ioctx_t io, const char *oid, librados::RadosXattrsIter **iret = (librados::RadosXattrsIter**)iter; *iret = it; *iter = it; - tracepoint(librados, rados_getxattrs_exit, 0, *iter); return 0; } extern "C" int rados_getxattrs_next(rados_xattrs_iter_t iter, const char **name, const char **val, size_t *len) { - tracepoint(librados, rados_getxattrs_next_enter, iter); librados::RadosXattrsIter *it = static_cast(iter); if (it->i == it->attrset.end()) { *name = NULL; *val = NULL; *len = 0; - tracepoint(librados, rados_getxattrs_next_exit, 0, NULL, NULL, 0); return 0; } free(it->val); @@ -2899,117 +2642,86 @@ extern "C" int rados_getxattrs_next(rados_xattrs_iter_t iter, bufferlist &bl(it->i->second); size_t bl_len = bl.length(); it->val = (char*)malloc(bl_len); - if (!it->val) { - tracepoint(librados, rados_getxattrs_next_exit, -ENOMEM, *name, NULL, 0); + if (!it->val) return -ENOMEM; - } memcpy(it->val, bl.c_str(), bl_len); *val = it->val; *len = bl_len; ++it->i; - tracepoint(librados, rados_getxattrs_next_exit, 0, *name, *val, *len); return 0; } extern "C" void rados_getxattrs_end(rados_xattrs_iter_t iter) { - tracepoint(librados, rados_getxattrs_end_enter, iter); librados::RadosXattrsIter *it = static_cast(iter); delete it; - tracepoint(librados, rados_getxattrs_end_exit); } extern "C" int rados_setxattr(rados_ioctx_t io, const char *o, const char *name, const char *buf, size_t len) { - tracepoint(librados, rados_setxattr_enter, io, o, name, buf, len); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist bl; bl.append(buf, len); - int retval = ctx->setxattr(oid, name, bl); - tracepoint(librados, rados_setxattr_exit, retval); - return retval; + return ctx->setxattr(oid, name, bl); } extern "C" int rados_rmxattr(rados_ioctx_t io, const char *o, const char *name) { - tracepoint(librados, rados_rmxattr_enter, io, o, name); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); - int retval = ctx->rmxattr(oid, name); - tracepoint(librados, rados_rmxattr_exit, retval); - return retval; + return ctx->rmxattr(oid, name); } extern "C" int rados_stat(rados_ioctx_t io, const char *o, uint64_t *psize, time_t *pmtime) { - tracepoint(librados, rados_stat_enter, io, o); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); - int retval = ctx->stat(oid, psize, pmtime); - tracepoint(librados, rados_stat_exit, retval, psize, pmtime); - return retval; + return ctx->stat(oid, psize, pmtime); } extern "C" int rados_tmap_update(rados_ioctx_t io, const char *o, const char *cmdbuf, size_t cmdbuflen) { - tracepoint(librados, rados_tmap_update_enter, io, o, cmdbuf, cmdbuflen); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist cmdbl; cmdbl.append(cmdbuf, cmdbuflen); - int retval = ctx->tmap_update(oid, cmdbl); - tracepoint(librados, rados_tmap_update_exit, retval); - return retval; + return ctx->tmap_update(oid, cmdbl); } extern "C" int rados_tmap_put(rados_ioctx_t io, const char *o, const char *buf, size_t buflen) { - tracepoint(librados, rados_tmap_put_enter, io, o, buf, buflen); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist bl; bl.append(buf, buflen); - int retval = ctx->tmap_put(oid, bl); - tracepoint(librados, rados_tmap_put_exit, retval); - return retval; + return ctx->tmap_put(oid, bl); } extern "C" int rados_tmap_get(rados_ioctx_t io, const char *o, char *buf, size_t buflen) { - tracepoint(librados, rados_tmap_get_enter, io, o, buflen); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist bl; int r = ctx->tmap_get(oid, bl); - if (r < 0) { - tracepoint(librados, rados_tmap_get_exit, r, buf, 0); + if (r < 0) return r; - } - if (bl.length() > buflen) { - tracepoint(librados, rados_tmap_get_exit, -ERANGE, buf, 0); + if (bl.length() > buflen) return -ERANGE; - } bl.copy(0, bl.length(), buf); - int retval = bl.length(); - tracepoint(librados, rados_tmap_get_exit, retval, buf, retval); - return retval; + return bl.length(); } extern "C" int rados_tmap_to_omap(rados_ioctx_t io, const char *o, bool nullok) { - tracepoint(librados, rados_tmap_to_omap_enter, io, o, nullok); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); - int retval = ctx->tmap_to_omap(oid, nullok); - tracepoint(librados, rados_tmap_to_omap_exit, retval); - return retval; + return ctx->tmap_to_omap(oid, nullok); } extern "C" int rados_exec(rados_ioctx_t io, const char *o, const char *cls, const char *method, const char *inbuf, size_t in_len, char *buf, size_t out_len) { - tracepoint(librados, rados_exec_enter, io, o, cls, method, inbuf, in_len, out_len); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist inbl, outbl; @@ -3018,15 +2730,12 @@ extern "C" int rados_exec(rados_ioctx_t io, const char *o, const char *cls, cons ret = ctx->exec(oid, cls, method, inbl, outbl); if (ret >= 0) { if (outbl.length()) { - if (outbl.length() > out_len) { - tracepoint(librados, rados_exec_exit, -ERANGE, buf, 0); + if (outbl.length() > out_len) return -ERANGE; - } outbl.copy(0, outbl.length(), buf); ret = outbl.length(); // hrm :/ } } - tracepoint(librados, rados_exec_exit, ret, buf, ret); return ret; } @@ -3034,49 +2743,38 @@ extern "C" int rados_exec(rados_ioctx_t io, const char *o, const char *cls, cons extern "C" int rados_objects_list_open(rados_ioctx_t io, rados_list_ctx_t *listh) { - tracepoint(librados, rados_objects_list_open_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; Objecter::ListContext *h = new Objecter::ListContext; h->pool_id = ctx->poolid; h->pool_snap_seq = ctx->snap_seq; h->nspace = ctx->oloc.nspace; *listh = (void *)new librados::ObjListCtx(ctx, h); - int retval = 0; - tracepoint(librados, rados_objects_list_open_exit, retval, *listh); - return retval; + return 0; } extern "C" void rados_objects_list_close(rados_list_ctx_t h) { - tracepoint(librados, rados_objects_list_close_enter, h); librados::ObjListCtx *lh = (librados::ObjListCtx *)h; delete lh; - tracepoint(librados, rados_objects_list_close_exit); } extern "C" uint32_t rados_objects_list_seek(rados_list_ctx_t listctx, uint32_t pos) { - tracepoint(librados, rados_objects_list_seek_enter, listctx, pos); librados::ObjListCtx *lh = (librados::ObjListCtx *)listctx; uint32_t r = lh->ctx->list_seek(lh->lc, pos); - tracepoint(librados, rados_objects_list_seek_exit, r); return r; } extern "C" uint32_t rados_objects_list_get_pg_hash_position( rados_list_ctx_t listctx) { - tracepoint(librados, rados_objects_list_get_pg_hash_position_enter, listctx); librados::ObjListCtx *lh = (librados::ObjListCtx *)listctx; - uint32_t retval = lh->lc->get_pg_hash_position(); - tracepoint(librados, rados_objects_list_get_pg_hash_position_exit, retval); - return retval; + return lh->lc->get_pg_hash_position(); } extern "C" int rados_objects_list_next(rados_list_ctx_t listctx, const char **entry, const char **key) { - tracepoint(librados, rados_objects_list_next_enter, listctx); librados::ObjListCtx *lh = (librados::ObjListCtx *)listctx; Objecter::ListContext *h = lh->lc; @@ -3087,14 +2785,10 @@ extern "C" int rados_objects_list_next(rados_list_ctx_t listctx, const char **en if (h->list.empty()) { int ret = lh->ctx->list(lh->lc, RADOS_LIST_MAX_ENTRIES); - if (ret < 0) { - tracepoint(librados, rados_objects_list_next_exit, ret, NULL, NULL); + if (ret < 0) return ret; - } - if (h->list.empty()) { - tracepoint(librados, rados_objects_list_next_exit, -ENOENT, NULL, NULL); + if (h->list.empty()) return -ENOENT; - } } *entry = h->list.front().first.name.c_str(); @@ -3105,9 +2799,7 @@ extern "C" int rados_objects_list_next(rados_list_ctx_t listctx, const char **en else *key = NULL; } - int retval = 0; - tracepoint(librados, rados_objects_list_next_exit, 0, *entry, key); - return retval; + return 0; } @@ -3120,205 +2812,146 @@ extern "C" int rados_aio_create_completion(void *cb_arg, rados_callback_t cb_safe, rados_completion_t *pc) { - tracepoint(librados, rados_aio_create_completion_enter, cb_arg, cb_complete, cb_safe); librados::AioCompletionImpl *c = new librados::AioCompletionImpl; if (cb_complete) c->set_complete_callback(cb_arg, cb_complete); if (cb_safe) c->set_safe_callback(cb_arg, cb_safe); *pc = c; - int retval = 0; - tracepoint(librados, rados_aio_create_completion_exit, retval, *pc); - return retval; + return 0; } extern "C" int rados_aio_wait_for_complete(rados_completion_t c) { - tracepoint(librados, rados_aio_wait_for_complete_enter, c); - int retval = ((librados::AioCompletionImpl*)c)->wait_for_complete(); - tracepoint(librados, rados_aio_wait_for_complete_exit, retval); - return retval; + return ((librados::AioCompletionImpl*)c)->wait_for_complete(); } extern "C" int rados_aio_wait_for_safe(rados_completion_t c) { - tracepoint(librados, rados_aio_wait_for_safe_enter, c); - int retval = ((librados::AioCompletionImpl*)c)->wait_for_safe(); - tracepoint(librados, rados_aio_wait_for_safe_exit, retval); - return retval; + return ((librados::AioCompletionImpl*)c)->wait_for_safe(); } extern "C" int rados_aio_is_complete(rados_completion_t c) { - tracepoint(librados, rados_aio_is_complete_enter, c); - int retval = ((librados::AioCompletionImpl*)c)->is_complete(); - tracepoint(librados, rados_aio_is_complete_exit, retval); - return retval; + return ((librados::AioCompletionImpl*)c)->is_complete(); } extern "C" int rados_aio_is_safe(rados_completion_t c) { - tracepoint(librados, rados_aio_is_safe_enter, c); - int retval = ((librados::AioCompletionImpl*)c)->is_safe(); - tracepoint(librados, rados_aio_is_safe_exit, retval); - return retval; + return ((librados::AioCompletionImpl*)c)->is_safe(); } extern "C" int rados_aio_wait_for_complete_and_cb(rados_completion_t c) { - tracepoint(librados, rados_aio_wait_for_complete_and_cb_enter, c); - int retval = ((librados::AioCompletionImpl*)c)->wait_for_complete_and_cb(); - tracepoint(librados, rados_aio_wait_for_complete_and_cb_exit, retval); - return retval; + return ((librados::AioCompletionImpl*)c)->wait_for_complete_and_cb(); } extern "C" int rados_aio_wait_for_safe_and_cb(rados_completion_t c) { - tracepoint(librados, rados_aio_wait_for_safe_and_cb_enter, c); - int retval = ((librados::AioCompletionImpl*)c)->wait_for_safe_and_cb(); - tracepoint(librados, rados_aio_wait_for_safe_and_cb_exit, retval); - return retval; + return ((librados::AioCompletionImpl*)c)->wait_for_safe_and_cb(); } extern "C" int rados_aio_is_complete_and_cb(rados_completion_t c) { - tracepoint(librados, rados_aio_is_complete_and_cb_enter, c); - int retval = ((librados::AioCompletionImpl*)c)->is_complete_and_cb(); - tracepoint(librados, rados_aio_is_complete_and_cb_exit, retval); - return retval; + return ((librados::AioCompletionImpl*)c)->is_complete_and_cb(); } extern "C" int rados_aio_is_safe_and_cb(rados_completion_t c) { - tracepoint(librados, rados_aio_is_safe_and_cb_enter, c); - int retval = ((librados::AioCompletionImpl*)c)->is_safe_and_cb(); - tracepoint(librados, rados_aio_is_safe_and_cb_exit, retval); - return retval; + return ((librados::AioCompletionImpl*)c)->is_safe_and_cb(); } extern "C" int rados_aio_get_return_value(rados_completion_t c) { - tracepoint(librados, rados_aio_get_return_value_enter, c); - int retval = ((librados::AioCompletionImpl*)c)->get_return_value(); - tracepoint(librados, rados_aio_get_return_value_exit, retval); - return retval; + return ((librados::AioCompletionImpl*)c)->get_return_value(); } extern "C" uint64_t rados_aio_get_version(rados_completion_t c) { - tracepoint(librados, rados_aio_get_version_enter, c); - uint64_t retval = ((librados::AioCompletionImpl*)c)->get_version(); - tracepoint(librados, rados_aio_get_version_exit, retval); - return retval; + return ((librados::AioCompletionImpl*)c)->get_version(); } extern "C" void rados_aio_release(rados_completion_t c) { - tracepoint(librados, rados_aio_release_enter, c); ((librados::AioCompletionImpl*)c)->put(); - tracepoint(librados, rados_aio_release_exit); } extern "C" int rados_aio_read(rados_ioctx_t io, const char *o, rados_completion_t completion, char *buf, size_t len, uint64_t off) { - tracepoint(librados, rados_aio_read_enter, io, o, completion, len, off); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); - int retval = ctx->aio_read(oid, (librados::AioCompletionImpl*)completion, + return ctx->aio_read(oid, (librados::AioCompletionImpl*)completion, buf, len, off, ctx->snap_seq); - tracepoint(librados, rados_aio_read_exit, retval); - return retval; } extern "C" int rados_aio_write(rados_ioctx_t io, const char *o, rados_completion_t completion, const char *buf, size_t len, uint64_t off) { - tracepoint(librados, rados_aio_write_enter, io, o, completion, buf, len, off); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist bl; bl.append(buf, len); - int retval = ctx->aio_write(oid, (librados::AioCompletionImpl*)completion, + return ctx->aio_write(oid, (librados::AioCompletionImpl*)completion, bl, len, off); - tracepoint(librados, rados_aio_write_exit, retval); - return retval; } extern "C" int rados_aio_append(rados_ioctx_t io, const char *o, rados_completion_t completion, const char *buf, size_t len) { - tracepoint(librados, rados_aio_append_enter, io, o, completion, buf, len); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist bl; bl.append(buf, len); - int retval = ctx->aio_append(oid, (librados::AioCompletionImpl*)completion, + return ctx->aio_append(oid, (librados::AioCompletionImpl*)completion, bl, len); - tracepoint(librados, rados_aio_append_exit, retval); - return retval; } extern "C" int rados_aio_write_full(rados_ioctx_t io, const char *o, rados_completion_t completion, const char *buf, size_t len) { - tracepoint(librados, rados_aio_write_full_enter, io, o, completion, buf, len); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist bl; bl.append(buf, len); - int retval = ctx->aio_write_full(oid, (librados::AioCompletionImpl*)completion, bl); - tracepoint(librados, rados_aio_write_full_exit, retval); - return retval; + return ctx->aio_write_full(oid, (librados::AioCompletionImpl*)completion, bl); } extern "C" int rados_aio_remove(rados_ioctx_t io, const char *o, rados_completion_t completion) { - tracepoint(librados, rados_aio_remove_enter, io, o, completion); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); - int retval = ctx->aio_remove(oid, (librados::AioCompletionImpl*)completion); - tracepoint(librados, rados_aio_remove_exit, retval); - return retval; + return ctx->aio_remove(oid, (librados::AioCompletionImpl*)completion); } extern "C" int rados_aio_flush_async(rados_ioctx_t io, rados_completion_t completion) { - tracepoint(librados, rados_aio_flush_async_enter, io, completion); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; ctx->flush_aio_writes_async((librados::AioCompletionImpl*)completion); - int retval = 0; - tracepoint(librados, rados_aio_flush_async_exit, retval); - return retval; + return 0; } extern "C" int rados_aio_flush(rados_ioctx_t io) { - tracepoint(librados, rados_aio_flush_enter, io); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; ctx->flush_aio_writes(); - int retval = 0; - tracepoint(librados, rados_aio_flush_exit, retval); - return retval; + return 0; } extern "C" int rados_aio_stat(rados_ioctx_t io, const char *o, rados_completion_t completion, uint64_t *psize, time_t *pmtime) { - tracepoint(librados, rados_aio_stat_enter, io, o, completion); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); - int retval = ctx->aio_stat(oid, (librados::AioCompletionImpl*)completion, + return ctx->aio_stat(oid, (librados::AioCompletionImpl*)completion, psize, pmtime); - tracepoint(librados, rados_aio_stat_exit, retval); - return retval; } @@ -3334,30 +2967,23 @@ struct C_WatchCB : public librados::WatchCtx { int rados_watch(rados_ioctx_t io, const char *o, uint64_t ver, uint64_t *handle, rados_watchcb_t watchcb, void *arg) { - tracepoint(librados, rados_watch_enter, io, o, ver, watchcb, arg); uint64_t *cookie = handle; librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); C_WatchCB *wc = new C_WatchCB(watchcb, arg); - int retval = ctx->watch(oid, ver, cookie, wc); - tracepoint(librados, rados_watch_exit, retval, *handle); - return retval; + return ctx->watch(oid, ver, cookie, wc); } int rados_unwatch(rados_ioctx_t io, const char *o, uint64_t handle) { - tracepoint(librados, rados_unwatch_enter, io, o, handle); uint64_t cookie = handle; librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); - int retval = ctx->unwatch(oid, cookie); - tracepoint(librados, rados_unwatch_exit, retval); - return retval; + return ctx->unwatch(oid, cookie); } int rados_notify(rados_ioctx_t io, const char *o, uint64_t ver, const char *buf, int buf_len) { - tracepoint(librados, rados_notify_enter, io, o, ver, buf, buf_len); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); bufferlist bl; @@ -3366,21 +2992,16 @@ int rados_notify(rados_ioctx_t io, const char *o, uint64_t ver, const char *buf, memcpy(p.c_str(), buf, buf_len); bl.push_back(p); } - int retval = ctx->notify(oid, ver, bl); - tracepoint(librados, rados_notify_exit, retval); - return retval; + return ctx->notify(oid, ver, bl); } extern "C" int rados_set_alloc_hint(rados_ioctx_t io, const char *o, uint64_t expected_object_size, uint64_t expected_write_size) { - tracepoint(librados, rados_set_alloc_hint_enter, io, o, expected_object_size, expected_write_size); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; object_t oid(o); - int retval = ctx->set_alloc_hint(oid, expected_object_size, expected_write_size); - tracepoint(librados, rados_set_alloc_hint_exit, retval); - return retval; + return ctx->set_alloc_hint(oid, expected_object_size, expected_write_size); } extern "C" int rados_lock_exclusive(rados_ioctx_t io, const char * o, @@ -3388,13 +3009,10 @@ extern "C" int rados_lock_exclusive(rados_ioctx_t io, const char * o, const char * desc, struct timeval * duration, uint8_t flags) { - tracepoint(librados, rados_lock_exclusive_enter, io, o, name, cookie, desc, duration, flags); librados::IoCtx ctx; librados::IoCtx::from_rados_ioctx_t(io, ctx); - int retval = ctx.lock_exclusive(o, name, cookie, desc, duration, flags); - tracepoint(librados, rados_lock_exclusive_exit, retval); - return retval; + return ctx.lock_exclusive(o, name, cookie, desc, duration, flags); } extern "C" int rados_lock_shared(rados_ioctx_t io, const char * o, @@ -3402,24 +3020,19 @@ extern "C" int rados_lock_shared(rados_ioctx_t io, const char * o, const char * tag, const char * desc, struct timeval * duration, uint8_t flags) { - tracepoint(librados, rados_lock_shared_enter, io, o, name, cookie, tag, desc, duration, flags); librados::IoCtx ctx; librados::IoCtx::from_rados_ioctx_t(io, ctx); - int retval = ctx.lock_shared(o, name, cookie, tag, desc, duration, flags); - tracepoint(librados, rados_lock_shared_exit, retval); - return retval; + return ctx.lock_shared(o, name, cookie, tag, desc, duration, flags); } extern "C" int rados_unlock(rados_ioctx_t io, const char *o, const char *name, const char *cookie) { - tracepoint(librados, rados_unlock_enter, io, o, name, cookie); librados::IoCtx ctx; librados::IoCtx::from_rados_ioctx_t(io, ctx); - int retval = ctx.unlock(o, name, cookie); - tracepoint(librados, rados_unlock_exit, retval); - return retval; + return ctx.unlock(o, name, cookie); + } extern "C" ssize_t rados_list_lockers(rados_ioctx_t io, const char *o, @@ -3429,7 +3042,6 @@ extern "C" ssize_t rados_list_lockers(rados_ioctx_t io, const char *o, char *cookies, size_t *cookies_len, char *addrs, size_t *addrs_len) { - tracepoint(librados, rados_list_lockers_enter, io, o, name, *tag_len, *clients_len, *cookies_len, *addrs_len); librados::IoCtx ctx; librados::IoCtx::from_rados_ioctx_t(io, ctx); std::string name_str = name; @@ -3438,10 +3050,8 @@ extern "C" ssize_t rados_list_lockers(rados_ioctx_t io, const char *o, int tmp_exclusive; std::list lockers; int r = ctx.list_lockers(oid, name_str, &tmp_exclusive, &tag_str, &lockers); - if (r < 0) { - tracepoint(librados, rados_list_lockers_exit, r, *exclusive, "", *tag_len, *clients_len, *cookies_len, *addrs_len); + if (r < 0) return r; - } size_t clients_total = 0; size_t cookies_total = 0; @@ -3461,10 +3071,8 @@ extern "C" ssize_t rados_list_lockers(rados_ioctx_t io, const char *o, *cookies_len = cookies_total; *addrs_len = addrs_total; *tag_len = tag_str.length() + 1; - if (too_short) { - tracepoint(librados, rados_list_lockers_exit, -ERANGE, *exclusive, "", *tag_len, *clients_len, *cookies_len, *addrs_len); + if (too_short) return -ERANGE; - } strcpy(tag, tag_str.c_str()); char *clients_p = clients; @@ -3472,11 +3080,10 @@ extern "C" ssize_t rados_list_lockers(rados_ioctx_t io, const char *o, char *addrs_p = addrs; for (it = lockers.begin(); it != lockers.end(); ++it) { strcpy(clients_p, it->client.c_str()); - strcpy(cookies_p, it->cookie.c_str()); - strcpy(addrs_p, it->address.c_str()); - tracepoint(librados, rados_list_lockers_locker, clients_p, cookies_p, addrs_p); clients_p += it->client.length() + 1; + strcpy(cookies_p, it->cookie.c_str()); cookies_p += it->cookie.length() + 1; + strcpy(addrs_p, it->address.c_str()); addrs_p += it->address.length() + 1; } if (tmp_exclusive) @@ -3484,51 +3091,37 @@ extern "C" ssize_t rados_list_lockers(rados_ioctx_t io, const char *o, else *exclusive = 0; - int retval = lockers.size(); - tracepoint(librados, rados_list_lockers_exit, retval, *exclusive, tag, *tag_len, *clients_len, *cookies_len, *addrs_len); - return retval; + return lockers.size(); } extern "C" int rados_break_lock(rados_ioctx_t io, const char *o, const char *name, const char *client, const char *cookie) { - tracepoint(librados, rados_break_lock_enter, io, o, name, client, cookie); librados::IoCtx ctx; librados::IoCtx::from_rados_ioctx_t(io, ctx); - int retval = ctx.break_lock(o, name, client, cookie); - tracepoint(librados, rados_break_lock_exit, retval); - return retval; + return ctx.break_lock(o, name, client, cookie); } extern "C" rados_write_op_t rados_create_write_op() { - tracepoint(librados, rados_create_write_op_enter); - rados_write_op_t retval = new (std::nothrow)::ObjectOperation; - tracepoint(librados, rados_create_write_op_exit, retval); - return retval; + return new (std::nothrow)::ObjectOperation; } extern "C" void rados_release_write_op(rados_write_op_t write_op) { - tracepoint(librados, rados_release_write_op_enter, write_op); delete (::ObjectOperation*)write_op; - tracepoint(librados, rados_release_write_op_exit); } extern "C" void rados_write_op_set_flags(rados_write_op_t write_op, int flags) { - tracepoint(librados, rados_write_op_set_flags_enter, write_op, flags); set_op_flags((::ObjectOperation *)write_op, flags); - tracepoint(librados, rados_write_op_set_flags_exit); } extern "C" void rados_write_op_assert_exists(rados_write_op_t write_op) { - tracepoint(librados, rados_write_op_assert_exists_enter, write_op); ((::ObjectOperation *)write_op)->stat(NULL, (utime_t *)NULL, NULL); - tracepoint(librados, rados_write_op_assert_exists_exit); } extern "C" void rados_write_op_cmpxattr(rados_write_op_t write_op, @@ -3537,14 +3130,12 @@ extern "C" void rados_write_op_cmpxattr(rados_write_op_t write_op, const char *value, size_t value_len) { - tracepoint(librados, rados_write_op_cmpxattr_enter, write_op, name, comparison_operator, value, value_len); bufferlist bl; bl.append(value, value_len); ((::ObjectOperation *)write_op)->cmpxattr(name, comparison_operator, CEPH_OSD_CMPXATTR_MODE_STRING, bl); - tracepoint(librados, rados_write_op_cmpxattr_exit); } static void rados_c_omap_cmp(ObjectOperation *op, @@ -3568,10 +3159,8 @@ extern "C" void rados_write_op_omap_cmp(rados_write_op_t write_op, size_t val_len, int *prval) { - tracepoint(librados, rados_write_op_omap_cmp_enter, write_op, key, comparison_operator, val, val_len, prval); rados_c_omap_cmp((::ObjectOperation *)write_op, key, comparison_operator, val, val_len, prval); - tracepoint(librados, rados_write_op_omap_cmp_exit); } extern "C" void rados_write_op_setxattr(rados_write_op_t write_op, @@ -3579,34 +3168,28 @@ extern "C" void rados_write_op_setxattr(rados_write_op_t write_op, const char *value, size_t value_len) { - tracepoint(librados, rados_write_op_setxattr_enter, write_op, name, value, value_len); bufferlist bl; bl.append(value, value_len); ((::ObjectOperation *)write_op)->setxattr(name, bl); - tracepoint(librados, rados_write_op_setxattr_exit); } extern "C" void rados_write_op_rmxattr(rados_write_op_t write_op, const char *name) { - tracepoint(librados, rados_write_op_rmxattr_enter, write_op, name); bufferlist bl; ((::ObjectOperation *)write_op)->rmxattr(name); - tracepoint(librados, rados_write_op_rmxattr_exit); } extern "C" void rados_write_op_create(rados_write_op_t write_op, int exclusive, const char* category) { - tracepoint(librados, rados_write_op_create_enter, write_op, exclusive, category); ::ObjectOperation *oo = (::ObjectOperation *) write_op; if(category) { oo->create(exclusive, category); } else { oo->create(!!exclusive); } - tracepoint(librados, rados_write_op_create_exit); } extern "C" void rados_write_op_write(rados_write_op_t write_op, @@ -3614,57 +3197,45 @@ extern "C" void rados_write_op_write(rados_write_op_t write_op, size_t len, uint64_t offset) { - tracepoint(librados, rados_write_op_write_enter, write_op, buffer, len, offset); bufferlist bl; bl.append(buffer,len); ((::ObjectOperation *)write_op)->write(offset, bl); - tracepoint(librados, rados_write_op_write_exit); } extern "C" void rados_write_op_write_full(rados_write_op_t write_op, const char *buffer, size_t len) { - tracepoint(librados, rados_write_op_write_full_enter, write_op, buffer, len); bufferlist bl; bl.append(buffer,len); ((::ObjectOperation *)write_op)->write_full(bl); - tracepoint(librados, rados_write_op_write_full_exit); } extern "C" void rados_write_op_append(rados_write_op_t write_op, const char *buffer, size_t len) { - tracepoint(librados, rados_write_op_append_enter, write_op, buffer, len); bufferlist bl; bl.append(buffer,len); ((::ObjectOperation *)write_op)->append(bl); - tracepoint(librados, rados_write_op_append_exit); } extern "C" void rados_write_op_remove(rados_write_op_t write_op) { - tracepoint(librados, rados_write_op_remove_enter, write_op); ((::ObjectOperation *)write_op)->remove(); - tracepoint(librados, rados_write_op_remove_exit); } extern "C" void rados_write_op_truncate(rados_write_op_t write_op, uint64_t offset) { - tracepoint(librados, rados_write_op_truncate_enter, write_op, offset); ((::ObjectOperation *)write_op)->truncate(offset); - tracepoint(librados, rados_write_op_truncate_exit); } extern "C" void rados_write_op_zero(rados_write_op_t write_op, uint64_t offset, uint64_t len) { - tracepoint(librados, rados_write_op_zero_enter, write_op, offset, len); ((::ObjectOperation *)write_op)->zero(offset, len); - tracepoint(librados, rados_write_op_zero_exit); } extern "C" void rados_write_op_exec(rados_write_op_t write_op, @@ -3674,11 +3245,9 @@ extern "C" void rados_write_op_exec(rados_write_op_t write_op, size_t in_len, int *prval) { - tracepoint(librados, rados_write_op_exec_enter, write_op, cls, method, in_buf, in_len, prval); bufferlist inbl; inbl.append(in_buf, in_len); ((::ObjectOperation *)write_op)->call(cls, method, inbl, NULL, NULL, prval); - tracepoint(librados, rados_write_op_exec_exit); } extern "C" void rados_write_op_omap_set(rados_write_op_t write_op, @@ -3687,46 +3256,34 @@ extern "C" void rados_write_op_omap_set(rados_write_op_t write_op, const size_t *lens, size_t num) { - tracepoint(librados, rados_write_op_omap_set_enter, write_op, num); std::map entries; for (size_t i = 0; i < num; ++i) { - tracepoint(librados, rados_write_op_omap_set_entry, keys[i], vals[i], lens[i]); bufferlist bl(lens[i]); bl.append(vals[i], lens[i]); entries[keys[i]] = bl; } ((::ObjectOperation *)write_op)->omap_set(entries); - tracepoint(librados, rados_write_op_omap_set_exit); } extern "C" void rados_write_op_omap_rm_keys(rados_write_op_t write_op, char const* const* keys, size_t keys_len) { - tracepoint(librados, rados_write_op_omap_rm_keys_enter, write_op, keys_len); - for(size_t i = 0; i < keys_len; i++) { - tracepoint(librados, rados_write_op_omap_rm_keys_entry, keys[i]); - } std::set to_remove(keys, keys + keys_len); ((::ObjectOperation *)write_op)->omap_rm_keys(to_remove); - tracepoint(librados, rados_write_op_omap_rm_keys_exit); } extern "C" void rados_write_op_omap_clear(rados_write_op_t write_op) { - tracepoint(librados, rados_write_op_omap_clear_enter, write_op); ((::ObjectOperation *)write_op)->omap_clear(); - tracepoint(librados, rados_write_op_omap_clear_exit); } extern "C" void rados_write_op_set_alloc_hint(rados_write_op_t write_op, uint64_t expected_object_size, uint64_t expected_write_size) { - tracepoint(librados, rados_write_op_set_alloc_hint_enter, write_op, expected_object_size, expected_write_size); ((::ObjectOperation *)write_op)->set_alloc_hint(expected_object_size, expected_write_size); - tracepoint(librados, rados_write_op_set_alloc_hint_exit); } extern "C" int rados_write_op_operate(rados_write_op_t write_op, @@ -3735,13 +3292,10 @@ extern "C" int rados_write_op_operate(rados_write_op_t write_op, time_t *mtime, int flags) { - tracepoint(librados, rados_write_op_operate_enter, write_op, io, oid, mtime, flags); object_t obj(oid); ::ObjectOperation *oo = (::ObjectOperation *) write_op; librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->operate(obj, oo, mtime, flags); - tracepoint(librados, rados_write_op_operate_exit, retval); - return retval; + return ctx->operate(obj, oo, mtime, flags); } extern "C" int rados_aio_write_op_operate(rados_write_op_t write_op, @@ -3751,43 +3305,31 @@ extern "C" int rados_aio_write_op_operate(rados_write_op_t write_op, time_t *mtime, int flags) { - tracepoint(librados, rados_aio_write_op_operate_enter, write_op, io, completion, oid, mtime, flags); object_t obj(oid); ::ObjectOperation *oo = (::ObjectOperation *) write_op; librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; librados::AioCompletionImpl *c = (librados::AioCompletionImpl*)completion; - int retval = ctx->aio_operate(obj, oo, c, ctx->snapc, flags); - tracepoint(librados, rados_aio_write_op_operate_exit, retval); - return retval; + return ctx->aio_operate(obj, oo, c, ctx->snapc, flags); } extern "C" rados_read_op_t rados_create_read_op() { - tracepoint(librados, rados_create_read_op_enter); - rados_read_op_t retval = new (std::nothrow)::ObjectOperation; - tracepoint(librados, rados_create_read_op_exit, retval); - return retval; + return new (std::nothrow)::ObjectOperation; } extern "C" void rados_release_read_op(rados_read_op_t read_op) { - tracepoint(librados, rados_release_read_op_enter, read_op); delete (::ObjectOperation *)read_op; - tracepoint(librados, rados_release_read_op_exit); } extern "C" void rados_read_op_set_flags(rados_read_op_t read_op, int flags) { - tracepoint(librados, rados_read_op_set_flags_enter, read_op, flags); set_op_flags((::ObjectOperation *)read_op, flags); - tracepoint(librados, rados_read_op_set_flags_exit); } extern "C" void rados_read_op_assert_exists(rados_read_op_t read_op) { - tracepoint(librados, rados_read_op_assert_exists_enter, read_op); ((::ObjectOperation *)read_op)->stat(NULL, (utime_t *)NULL, NULL); - tracepoint(librados, rados_read_op_assert_exists_exit); } extern "C" void rados_read_op_cmpxattr(rados_read_op_t read_op, @@ -3796,14 +3338,12 @@ extern "C" void rados_read_op_cmpxattr(rados_read_op_t read_op, const char *value, size_t value_len) { - tracepoint(librados, rados_read_op_cmpxattr_enter, read_op, name, comparison_operator, value, value_len); bufferlist bl; bl.append(value, value_len); ((::ObjectOperation *)read_op)->cmpxattr(name, comparison_operator, CEPH_OSD_CMPXATTR_MODE_STRING, bl); - tracepoint(librados, rados_read_op_cmpxattr_exit); } extern "C" void rados_read_op_omap_cmp(rados_read_op_t read_op, @@ -3813,10 +3353,8 @@ extern "C" void rados_read_op_omap_cmp(rados_read_op_t read_op, size_t val_len, int *prval) { - tracepoint(librados, rados_read_op_omap_cmp_enter, read_op, key, comparison_operator, val, val_len, prval); rados_c_omap_cmp((::ObjectOperation *)read_op, key, comparison_operator, val, val_len, prval); - tracepoint(librados, rados_read_op_omap_cmp_exit); } extern "C" void rados_read_op_stat(rados_read_op_t read_op, @@ -3824,9 +3362,7 @@ extern "C" void rados_read_op_stat(rados_read_op_t read_op, time_t *pmtime, int *prval) { - tracepoint(librados, rados_read_op_stat_enter, read_op, psize, pmtime, prval); ((::ObjectOperation *)read_op)->stat(psize, pmtime, prval); - tracepoint(librados, rados_read_op_stat_exit); } class C_bl_to_buf : public Context { @@ -3863,11 +3399,9 @@ extern "C" void rados_read_op_read(rados_read_op_t read_op, size_t *bytes_read, int *prval) { - tracepoint(librados, rados_read_op_read_enter, read_op, offset, len, buf, bytes_read, prval); C_bl_to_buf *ctx = new C_bl_to_buf(buf, len, bytes_read, prval); ctx->out_bl.push_back(buffer::create_static(len, buf)); ((::ObjectOperation *)read_op)->read(offset, len, &ctx->out_bl, prval, ctx); - tracepoint(librados, rados_read_op_read_exit); } class C_out_buffer : public Context { @@ -3893,13 +3427,11 @@ extern "C" void rados_read_op_exec(rados_read_op_t read_op, size_t *out_len, int *prval) { - tracepoint(librados, rados_read_op_exec_enter, read_op, cls, method, in_buf, in_len, out_buf, out_len, prval); bufferlist inbl; inbl.append(in_buf, in_len); C_out_buffer *ctx = new C_out_buffer(out_buf, out_len); ((::ObjectOperation *)read_op)->call(cls, method, inbl, &ctx->out_bl, ctx, prval); - tracepoint(librados, rados_read_op_exec_exit); } extern "C" void rados_read_op_exec_user_buf(rados_read_op_t read_op, @@ -3912,13 +3444,11 @@ extern "C" void rados_read_op_exec_user_buf(rados_read_op_t read_op, size_t *used_len, int *prval) { - tracepoint(librados, rados_read_op_exec_user_buf_enter, read_op, cls, method, in_buf, in_len, out_buf, out_len, used_len, prval); C_bl_to_buf *ctx = new C_bl_to_buf(out_buf, out_len, used_len, prval); bufferlist inbl; inbl.append(in_buf, in_len); ((::ObjectOperation *)read_op)->call(cls, method, inbl, &ctx->out_bl, ctx, prval); - tracepoint(librados, rados_read_op_exec_user_buf_exit); } struct RadosOmapIter { @@ -3948,12 +3478,10 @@ extern "C" void rados_read_op_getxattrs(rados_read_op_t read_op, rados_xattrs_iter_t *iter, int *prval) { - tracepoint(librados, rados_read_op_getxattrs_enter, read_op, prval); librados::RadosXattrsIter *xattrs_iter = new librados::RadosXattrsIter; ((::ObjectOperation *)read_op)->getxattrs(&xattrs_iter->attrset, prval); ((::ObjectOperation *)read_op)->add_handler(new C_XattrsIter(xattrs_iter)); *iter = xattrs_iter; - tracepoint(librados, rados_read_op_getxattrs_exit, *iter); } extern "C" void rados_read_op_omap_get_vals(rados_read_op_t read_op, @@ -3963,7 +3491,6 @@ extern "C" void rados_read_op_omap_get_vals(rados_read_op_t read_op, rados_omap_iter_t *iter, int *prval) { - tracepoint(librados, rados_read_op_omap_get_vals_enter, read_op, start_after, filter_prefix, max_return, prval); RadosOmapIter *omap_iter = new RadosOmapIter; const char *start = start_after ? start_after : ""; const char *filter = filter_prefix ? filter_prefix : ""; @@ -3974,7 +3501,6 @@ extern "C" void rados_read_op_omap_get_vals(rados_read_op_t read_op, prval); ((::ObjectOperation *)read_op)->add_handler(new C_OmapIter(omap_iter)); *iter = omap_iter; - tracepoint(librados, rados_read_op_omap_get_vals_exit, *iter); } struct C_OmapKeysIter : public Context { @@ -3997,14 +3523,12 @@ extern "C" void rados_read_op_omap_get_keys(rados_read_op_t read_op, rados_omap_iter_t *iter, int *prval) { - tracepoint(librados, rados_read_op_omap_get_keys_enter, read_op, start_after, max_return, prval); RadosOmapIter *omap_iter = new RadosOmapIter; C_OmapKeysIter *ctx = new C_OmapKeysIter(omap_iter); ((::ObjectOperation *)read_op)->omap_get_keys(start_after ? start_after : "", max_return, &ctx->keys, prval); ((::ObjectOperation *)read_op)->add_handler(ctx); *iter = omap_iter; - tracepoint(librados, rados_read_op_omap_get_keys_exit, *iter); } extern "C" void rados_read_op_omap_get_vals_by_keys(rados_read_op_t read_op, @@ -4013,7 +3537,6 @@ extern "C" void rados_read_op_omap_get_vals_by_keys(rados_read_op_t read_op, rados_omap_iter_t *iter, int *prval) { - tracepoint(librados, rados_read_op_omap_get_vals_by_keys_enter, read_op, keys, keys_len, iter, prval); std::set to_get(keys, keys + keys_len); RadosOmapIter *omap_iter = new RadosOmapIter; @@ -4022,7 +3545,6 @@ extern "C" void rados_read_op_omap_get_vals_by_keys(rados_read_op_t read_op, prval); ((::ObjectOperation *)read_op)->add_handler(new C_OmapIter(omap_iter)); *iter = omap_iter; - tracepoint(librados, rados_read_op_omap_get_vals_by_keys_exit, *iter); } extern "C" int rados_omap_get_next(rados_omap_iter_t iter, @@ -4030,15 +3552,12 @@ extern "C" int rados_omap_get_next(rados_omap_iter_t iter, char **val, size_t *len) { - tracepoint(librados, rados_omap_get_next_enter, iter); RadosOmapIter *it = (RadosOmapIter *)iter; if (it->i == it->values.end()) { *key = NULL; *val = NULL; *len = 0; - int retval = 0; - tracepoint(librados, rados_omap_get_next_exit, retval, key, val, len); - return retval; + return 0; } if (key) *key = (char*)it->i->first.c_str(); @@ -4047,17 +3566,13 @@ extern "C" int rados_omap_get_next(rados_omap_iter_t iter, if (len) *len = it->i->second.length(); ++it->i; - int retval = 0; - tracepoint(librados, rados_omap_get_next_exit, retval, key, val, len); - return retval; + return 0; } extern "C" void rados_omap_get_end(rados_omap_iter_t iter) { - tracepoint(librados, rados_omap_get_end_enter, iter); RadosOmapIter *it = (RadosOmapIter *)iter; delete it; - tracepoint(librados, rados_omap_get_end_exit); } extern "C" int rados_read_op_operate(rados_read_op_t read_op, @@ -4065,12 +3580,9 @@ extern "C" int rados_read_op_operate(rados_read_op_t read_op, const char *oid, int flags) { - tracepoint(librados, rados_read_op_operate_enter, read_op, io, oid, flags); object_t obj(oid); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->operate_read(obj, (::ObjectOperation *)read_op, NULL, flags); - tracepoint(librados, rados_read_op_operate_exit, retval); - return retval; + return ctx->operate_read(obj, (::ObjectOperation *)read_op, NULL, flags); } extern "C" int rados_aio_read_op_operate(rados_read_op_t read_op, @@ -4079,12 +3591,9 @@ extern "C" int rados_aio_read_op_operate(rados_read_op_t read_op, const char *oid, int flags) { - tracepoint(librados, rados_aio_read_op_operate_enter, read_op, io, completion, oid, flags); object_t obj(oid); librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; librados::AioCompletionImpl *c = (librados::AioCompletionImpl*)completion; - int retval = ctx->aio_operate_read(obj, (::ObjectOperation *)read_op, + return ctx->aio_operate_read(obj, (::ObjectOperation *)read_op, c, flags, NULL); - tracepoint(librados, rados_aio_read_op_operate_exit, retval); - return retval; } diff --git a/src/librbd/AioCompletion.cc b/src/librbd/AioCompletion.cc index 3ff12233b61c..86b5b504ebd3 100644 --- a/src/librbd/AioCompletion.cc +++ b/src/librbd/AioCompletion.cc @@ -11,10 +11,6 @@ #include "librbd/AioCompletion.h" -#ifdef WITH_LTTNG -#include "tracing/librbd.h" -#endif - #define dout_subsys ceph_subsys_rbd #undef dout_prefix #define dout_prefix *_dout << "librbd::AioCompletion: " @@ -34,16 +30,6 @@ namespace librbd { lock.Unlock(); } - int AioCompletion::wait_for_complete() { - tracepoint(librbd, aio_wait_for_complete_enter, this); - lock.Lock(); - while (!done) - cond.Wait(lock); - lock.Unlock(); - tracepoint(librbd, aio_wait_for_complete_exit, 0); - return 0; - } - void AioCompletion::finalize(CephContext *cct, ssize_t rval) { ldout(cct, 20) << "AioCompletion::finalize() " << (void*)this << " rval " << rval << " read_buf " << (void*)read_buf @@ -68,32 +54,6 @@ namespace librbd { } } - void AioCompletion::complete() { - tracepoint(librbd, aio_complete_enter, this, rval); - utime_t elapsed; - assert(lock.is_locked()); - elapsed = ceph_clock_now(ictx->cct) - start_time; - switch (aio_type) { - case AIO_TYPE_READ: - ictx->perfcounter->tinc(l_librbd_aio_rd_latency, elapsed); break; - case AIO_TYPE_WRITE: - ictx->perfcounter->tinc(l_librbd_aio_wr_latency, elapsed); break; - case AIO_TYPE_DISCARD: - ictx->perfcounter->tinc(l_librbd_aio_discard_latency, elapsed); break; - case AIO_TYPE_FLUSH: - ictx->perfcounter->tinc(l_librbd_aio_flush_latency, elapsed); break; - default: - lderr(ictx->cct) << "completed invalid aio_type: " << aio_type << dendl; - break; - } - if (complete_cb) { - complete_cb(rbd_comp, complete_arg); - } - done = true; - cond.Signal(); - tracepoint(librbd, aio_complete_exit); - } - void AioCompletion::complete_request(CephContext *cct, ssize_t r) { ldout(cct, 20) << "AioCompletion::complete_request() " @@ -115,26 +75,6 @@ namespace librbd { put_unlock(); } - bool AioCompletion::is_complete() { - tracepoint(librbd, aio_is_complete_enter, this); - bool done; - { - Mutex::Locker l(lock); - done = this->done; - } - tracepoint(librbd, aio_is_complete_exit, done); - return done; - } - - ssize_t AioCompletion::get_return_value() { - tracepoint(librbd, aio_get_return_value_enter, this); - lock.Lock(); - ssize_t r = rval; - lock.Unlock(); - tracepoint(librbd, aio_get_return_value_exit, r); - return r; - } - void C_AioRead::finish(int r) { ldout(m_cct, 10) << "C_AioRead::finish() " << this << " r = " << r << dendl; diff --git a/src/librbd/AioCompletion.h b/src/librbd/AioCompletion.h index 58eec66b8513..aaccefef9fce 100644 --- a/src/librbd/AioCompletion.h +++ b/src/librbd/AioCompletion.h @@ -72,7 +72,13 @@ namespace librbd { ~AioCompletion() { } - int wait_for_complete(); + int wait_for_complete() { + lock.Lock(); + while (!done) + cond.Wait(lock); + lock.Unlock(); + return 0; + } void add_request() { lock.Lock(); @@ -91,7 +97,29 @@ namespace librbd { start_time = ceph_clock_now(ictx->cct); } - void complete(); + void complete() { + utime_t elapsed; + assert(lock.is_locked()); + elapsed = ceph_clock_now(ictx->cct) - start_time; + switch (aio_type) { + case AIO_TYPE_READ: + ictx->perfcounter->tinc(l_librbd_aio_rd_latency, elapsed); break; + case AIO_TYPE_WRITE: + ictx->perfcounter->tinc(l_librbd_aio_wr_latency, elapsed); break; + case AIO_TYPE_DISCARD: + ictx->perfcounter->tinc(l_librbd_aio_discard_latency, elapsed); break; + case AIO_TYPE_FLUSH: + ictx->perfcounter->tinc(l_librbd_aio_flush_latency, elapsed); break; + default: + lderr(ictx->cct) << "completed invalid aio_type: " << aio_type << dendl; + break; + } + if (complete_cb) { + complete_cb(rbd_comp, complete_arg); + } + done = true; + cond.Signal(); + } void set_complete_cb(void *cb_arg, callback_t cb) { complete_cb = cb; @@ -100,9 +128,17 @@ namespace librbd { void complete_request(CephContext *cct, ssize_t r); - bool is_complete(); + bool is_complete() { + Mutex::Locker l(lock); + return done; + } - ssize_t get_return_value(); + ssize_t get_return_value() { + lock.Lock(); + ssize_t r = rval; + lock.Unlock(); + return r; + } void get() { lock.Lock(); diff --git a/src/librbd/Makefile.am b/src/librbd/Makefile.am index add7d8ea12ae..0a3600da3a24 100644 --- a/src/librbd/Makefile.am +++ b/src/librbd/Makefile.am @@ -10,11 +10,6 @@ librbd_la_LIBADD = \ $(LIBRADOS) $(LIBOSDC) \ libcls_rbd_client.la libcls_lock_client.la \ $(PTHREAD_LIBS) $(EXTRALIBS) - -if WITH_LTTNG -librbd_la_LIBADD += $(LIBRBD_TP) -endif - librbd_la_LDFLAGS = ${AM_LDFLAGS} -version-info 1:0:0 if LINUX librbd_la_LDFLAGS += -export-symbols-regex '^rbd_.*' diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index 8b4ea9e10ec8..53169a531d3c 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -1514,23 +1514,20 @@ reprotect_and_return_err: ldout(cct, 20) << "resize " << ictx << " " << ictx->size << " -> " << size << dendl; - if (ictx->read_only) { + if (ictx->read_only) return -EROFS; - } int r = ictx_check(ictx); - if (r < 0) { + if (r < 0) return r; - } RWLock::WLocker l(ictx->md_lock); if (size < ictx->size && ictx->object_cacher) { // need to invalidate since we're deleting objects, and // ObjectCacher doesn't track non-existent objects r = ictx->invalidate_cache(); - if (r < 0) { + if (r < 0) return r; - } } resize_helper(ictx, size, prog_ctx); @@ -2680,9 +2677,8 @@ reprotect_and_return_err: uint64_t mylen = len; int r = clip_io(ictx, off, &mylen); - if (r < 0) { + if (r < 0) return r; - } Context *ctx = new C_SafeCond(&mylock, &cond, &done, &ret); AioCompletion *c = aio_create_completion_internal(ctx, rbd_ctx_cb); @@ -2698,9 +2694,8 @@ reprotect_and_return_err: cond.Wait(mylock); mylock.Unlock(); - if (ret < 0) { + if (ret < 0) return ret; - } elapsed = ceph_clock_now(ictx->cct) - start_time; ictx->perfcounter->tinc(l_librbd_wr_latency, elapsed); @@ -2735,9 +2730,8 @@ reprotect_and_return_err: cond.Wait(mylock); mylock.Unlock(); - if (ret < 0) { + if (ret < 0) return ret; - } elapsed = ceph_clock_now(ictx->cct) - start_time; ictx->perfcounter->inc(l_librbd_discard_latency, elapsed); @@ -2853,9 +2847,8 @@ reprotect_and_return_err: ldout(cct, 20) << "aio_flush " << ictx << " completion " << c << dendl; int r = ictx_check(ictx); - if (r < 0) { + if (r < 0) return r; - } ictx->user_flushed(); @@ -2884,9 +2877,8 @@ reprotect_and_return_err: ldout(cct, 20) << "flush " << ictx << dendl; int r = ictx_check(ictx); - if (r < 0) { + if (r < 0) return r; - } ictx->user_flushed(); r = _flush(ictx); @@ -2917,13 +2909,11 @@ reprotect_and_return_err: ldout(cct, 20) << "invalidate_cache " << ictx << dendl; int r = ictx_check(ictx); - if (r < 0) { + if (r < 0) return r; - } RWLock::WLocker l(ictx->md_lock); - r = ictx->invalidate_cache(); - return r; + return ictx->invalidate_cache(); } int aio_write(ImageCtx *ictx, uint64_t off, size_t len, const char *buf, @@ -2934,15 +2924,13 @@ reprotect_and_return_err: << len << " buf = " << (void*)buf << dendl; int r = ictx_check(ictx); - if (r < 0) { + if (r < 0) return r; - } uint64_t mylen = len; r = clip_io(ictx, off, &mylen); - if (r < 0) { + if (r < 0) return r; - } ictx->snap_lock.get_read(); snapid_t snap_id = ictx->snap_id; @@ -2953,9 +2941,8 @@ reprotect_and_return_err: ictx->parent_lock.put_read(); ictx->snap_lock.put_read(); - if (snap_id != CEPH_NOSNAP || ictx->read_only) { + if (snap_id != CEPH_NOSNAP || ictx->read_only) return -EROFS; - } ldout(cct, 20) << " parent overlap " << overlap << dendl; @@ -3018,14 +3005,12 @@ reprotect_and_return_err: << len << dendl; int r = ictx_check(ictx); - if (r < 0) { + if (r < 0) return r; - } r = clip_io(ictx, off, &len); - if (r < 0) { + if (r < 0) return r; - } // TODO: check for snap ictx->snap_lock.get_read(); @@ -3037,9 +3022,8 @@ reprotect_and_return_err: ictx->parent_lock.put_read(); ictx->snap_lock.put_read(); - if (snap_id != CEPH_NOSNAP || ictx->read_only) { + if (snap_id != CEPH_NOSNAP || ictx->read_only) return -EROFS; - } // map vector extents; @@ -3122,9 +3106,8 @@ reprotect_and_return_err: ldout(ictx->cct, 20) << "aio_read " << ictx << " completion " << c << " " << image_extents << dendl; int r = ictx_check(ictx); - if (r < 0) { + if (r < 0) return r; - } ictx->snap_lock.get_read(); snap_t snap_id = ictx->snap_id; @@ -3139,9 +3122,8 @@ reprotect_and_return_err: ++p) { uint64_t len = p->second; r = clip_io(ictx, p->first, &len); - if (r < 0) { + if (r < 0) return r; - } if (len == 0) continue; diff --git a/src/librbd/librbd.cc b/src/librbd/librbd.cc index 24e191adfd0f..6fbf3c0afa45 100644 --- a/src/librbd/librbd.cc +++ b/src/librbd/librbd.cc @@ -34,10 +34,6 @@ #include #include -#ifdef WITH_LTTNG -#include "tracing/librbd.h" -#endif - #define dout_subsys ceph_subsys_rbd #undef dout_prefix #define dout_prefix *_dout << "librbd: " @@ -95,16 +91,12 @@ namespace librbd { const char *snap_name) { ImageCtx *ictx = new ImageCtx(name, "", snap_name, io_ctx, false); - tracepoint(librbd, open_image_enter, ictx, ictx->name.c_str(), ictx->id.c_str(), ictx->snap_name.c_str(), ictx->read_only); int r = librbd::open_image(ictx); - if (r < 0) { - tracepoint(librbd, open_image_exit, r); + if (r < 0) return r; - } image.ctx = (image_ctx_t) ictx; - tracepoint(librbd, open_image_exit, 0); return 0; } @@ -112,45 +104,32 @@ namespace librbd { const char *snap_name) { ImageCtx *ictx = new ImageCtx(name, "", snap_name, io_ctx, true); - tracepoint(librbd, open_image_enter, ictx, ictx->name.c_str(), ictx->id.c_str(), ictx->snap_name.c_str(), ictx->read_only); int r = librbd::open_image(ictx); - if (r < 0) { - tracepoint(librbd, open_image_exit, r); + if (r < 0) return r; - } image.ctx = (image_ctx_t) ictx; - tracepoint(librbd, open_image_exit, 0); return 0; } int RBD::create(IoCtx& io_ctx, const char *name, uint64_t size, int *order) { - tracepoint(librbd, create_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, *order); - int r = librbd::create(io_ctx, name, size, order); - tracepoint(librbd, create_exit, r, *order); - return r; + return librbd::create(io_ctx, name, size, order); } int RBD::create2(IoCtx& io_ctx, const char *name, uint64_t size, uint64_t features, int *order) { - tracepoint(librbd, create2_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, features, *order); - int r = librbd::create(io_ctx, name, size, false, features, order, 0, 0); - tracepoint(librbd, create2_exit, r, *order); - return r; + return librbd::create(io_ctx, name, size, false, features, order, 0, 0); } int RBD::create3(IoCtx& io_ctx, const char *name, uint64_t size, uint64_t features, int *order, uint64_t stripe_unit, uint64_t stripe_count) { - tracepoint(librbd, create3_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, features, *order, stripe_unit, stripe_count); - int r = librbd::create(io_ctx, name, size, false, features, order, + return librbd::create(io_ctx, name, size, false, features, order, stripe_unit, stripe_count); - tracepoint(librbd, create3_exit, r, *order); - return r; } int RBD::clone(IoCtx& p_ioctx, const char *p_name, const char *p_snap_name, @@ -171,19 +150,15 @@ namespace librbd { int RBD::remove(IoCtx& io_ctx, const char *name) { - tracepoint(librbd, remove_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name); librbd::NoOpProgressContext prog_ctx; int r = librbd::remove(io_ctx, name, prog_ctx); - tracepoint(librbd, remove_exit, r); return r; } int RBD::remove_with_progress(IoCtx& io_ctx, const char *name, ProgressContext& pctx) { - tracepoint(librbd, remove_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name); int r = librbd::remove(io_ctx, name, pctx); - tracepoint(librbd, remove_exit, r); return r; } @@ -195,9 +170,7 @@ namespace librbd { int RBD::rename(IoCtx& src_io_ctx, const char *srcname, const char *destname) { - tracepoint(librbd, rename_enter, src_io_ctx.get_pool_name().c_str(), src_io_ctx.get_id(), srcname, destname); int r = librbd::rename(src_io_ctx, srcname, destname); - tracepoint(librbd, rename_exit, r); return r; } @@ -246,29 +219,21 @@ namespace librbd { { if (ctx) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, close_image_enter, ictx, ictx->name.c_str(), ictx->id.c_str()); close_image(ictx); - tracepoint(librbd, close_image_exit); } } int Image::resize(uint64_t size) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, resize_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, size); librbd::NoOpProgressContext prog_ctx; - int r = librbd::resize(ictx, size, prog_ctx); - tracepoint(librbd, resize_exit, r); - return r; + return librbd::resize(ictx, size, prog_ctx); } int Image::resize_with_progress(uint64_t size, librbd::ProgressContext& pctx) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, resize_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, size); - int r = librbd::resize(ictx, size, pctx); - tracepoint(librbd, resize_exit, r); - return r; + return librbd::resize(ictx, size, pctx); } int Image::stat(image_info_t& info, size_t infosize) @@ -324,42 +289,30 @@ namespace librbd { int Image::copy(IoCtx& dest_io_ctx, const char *destname) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, copy_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, destname); librbd::NoOpProgressContext prog_ctx; - int r = librbd::copy(ictx, dest_io_ctx, destname, prog_ctx); - tracepoint(librbd, copy_exit, r); - return r; + return librbd::copy(ictx, dest_io_ctx, destname, prog_ctx); } int Image::copy2(Image& dest) { ImageCtx *srcctx = (ImageCtx *)ctx; ImageCtx *destctx = (ImageCtx *)dest.ctx; - tracepoint(librbd, copy2_enter, srcctx, srcctx->name.c_str(), srcctx->snap_name.c_str(), srcctx->read_only, destctx, destctx->name.c_str(), destctx->snap_name.c_str(), destctx->read_only); librbd::NoOpProgressContext prog_ctx; - int r = librbd::copy(srcctx, destctx, prog_ctx); - tracepoint(librbd, copy2_exit, r); - return r; + return librbd::copy(srcctx, destctx, prog_ctx); } int Image::copy_with_progress(IoCtx& dest_io_ctx, const char *destname, librbd::ProgressContext &pctx) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, copy_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, destname); - int r = librbd::copy(ictx, dest_io_ctx, destname, pctx); - tracepoint(librbd, copy_exit, r); - return r; + return librbd::copy(ictx, dest_io_ctx, destname, pctx); } int Image::copy_with_progress2(Image& dest, librbd::ProgressContext &pctx) { ImageCtx *srcctx = (ImageCtx *)ctx; ImageCtx *destctx = (ImageCtx *)dest.ctx; - tracepoint(librbd, copy2_enter, srcctx, srcctx->name.c_str(), srcctx->snap_name.c_str(), srcctx->read_only, destctx, destctx->name.c_str(), destctx->snap_name.c_str(), destctx->read_only); - int r = librbd::copy(srcctx, destctx, pctx); - tracepoint(librbd, copy2_exit, r); - return r; + return librbd::copy(srcctx, destctx, pctx); } int Image::flatten() @@ -477,12 +430,9 @@ namespace librbd { ssize_t Image::read(uint64_t ofs, size_t len, bufferlist& bl) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, read_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, ofs, len); bufferptr ptr(len); bl.push_back(ptr); - int r = librbd::read(ictx, ofs, len, bl.c_str()); - tracepoint(librbd, read_exit, r); - return r; + return librbd::read(ictx, ofs, len, bl.c_str()); } int64_t Image::read_iterate(uint64_t ofs, size_t len, @@ -516,86 +466,58 @@ namespace librbd { ssize_t Image::write(uint64_t ofs, size_t len, bufferlist& bl) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, write_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, ofs, len, bl.length() < len ? NULL : bl.c_str()); - if (bl.length() < len) { - tracepoint(librbd, write_exit, -EINVAL); + if (bl.length() < len) return -EINVAL; - } - int r = librbd::write(ictx, ofs, len, bl.c_str()); - tracepoint(librbd, write_exit, r); - return r; + return librbd::write(ictx, ofs, len, bl.c_str()); } int Image::discard(uint64_t ofs, uint64_t len) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, discard_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, ofs, len); - int r = librbd::discard(ictx, ofs, len); - tracepoint(librbd, discard_exit, r); - return r; + return librbd::discard(ictx, ofs, len); } int Image::aio_write(uint64_t off, size_t len, bufferlist& bl, RBD::AioCompletion *c) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, aio_write_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, off, len, bl.length() < len ? NULL : bl.c_str(), c->pc); - if (bl.length() < len) { - tracepoint(librbd, aio_write_exit, -EINVAL); + if (bl.length() < len) return -EINVAL; - } - int r = librbd::aio_write(ictx, off, len, bl.c_str(), + return librbd::aio_write(ictx, off, len, bl.c_str(), (librbd::AioCompletion *)c->pc); - tracepoint(librbd, aio_write_exit, r); - return r; } int Image::aio_discard(uint64_t off, uint64_t len, RBD::AioCompletion *c) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, aio_discard_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, off, len, c->pc); - int r = librbd::aio_discard(ictx, off, len, (librbd::AioCompletion *)c->pc); - tracepoint(librbd, aio_discard_exit, r); - return r; + return librbd::aio_discard(ictx, off, len, (librbd::AioCompletion *)c->pc); } int Image::aio_read(uint64_t off, size_t len, bufferlist& bl, RBD::AioCompletion *c) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, aio_read_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, off, len, bl.c_str(), c->pc); ldout(ictx->cct, 10) << "Image::aio_read() buf=" << (void *)bl.c_str() << "~" << (void *)(bl.c_str() + len - 1) << dendl; - int r = librbd::aio_read(ictx, off, len, NULL, &bl, (librbd::AioCompletion *)c->pc); - tracepoint(librbd, aio_read_exit, r); - return r; + return librbd::aio_read(ictx, off, len, NULL, &bl, (librbd::AioCompletion *)c->pc); } int Image::flush() { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, flush_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only); - int r = librbd::flush(ictx); - tracepoint(librbd, flush_exit, r); - return r; + return librbd::flush(ictx); } int Image::aio_flush(RBD::AioCompletion *c) { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, aio_flush_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, c->pc); - int r = librbd::aio_flush(ictx, (librbd::AioCompletion *)c->pc); - tracepoint(librbd, aio_flush_exit, r); - return r; + return librbd::aio_flush(ictx, (librbd::AioCompletion *)c->pc); } int Image::invalidate_cache() { ImageCtx *ictx = (ImageCtx *)ctx; - tracepoint(librbd, invalidate_cache_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only); - int r = librbd::invalidate_cache(ictx); - tracepoint(librbd, invalidate_cache_exit, r); - return r; + return librbd::invalidate_cache(ictx); } } // namespace librbd @@ -644,10 +566,7 @@ extern "C" int rbd_create(rados_ioctx_t p, const char *name, uint64_t size, int { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); - tracepoint(librbd, create_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, *order); - int r = librbd::create(io_ctx, name, size, order); - tracepoint(librbd, create_exit, r, *order); - return r; + return librbd::create(io_ctx, name, size, order); } extern "C" int rbd_create2(rados_ioctx_t p, const char *name, @@ -656,10 +575,7 @@ extern "C" int rbd_create2(rados_ioctx_t p, const char *name, { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); - tracepoint(librbd, create2_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, features, *order); - int r = librbd::create(io_ctx, name, size, false, features, order, 0, 0); - tracepoint(librbd, create2_exit, r, *order); - return r; + return librbd::create(io_ctx, name, size, false, features, order, 0, 0); } extern "C" int rbd_create3(rados_ioctx_t p, const char *name, @@ -669,11 +585,8 @@ extern "C" int rbd_create3(rados_ioctx_t p, const char *name, { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); - tracepoint(librbd, create3_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name, size, features, *order, stripe_unit, stripe_count); - int r = librbd::create(io_ctx, name, size, false, features, order, + return librbd::create(io_ctx, name, size, false, features, order, stripe_unit, stripe_count); - tracepoint(librbd, create3_exit, r, *order); - return r; } extern "C" int rbd_clone(rados_ioctx_t p_ioctx, const char *p_name, @@ -703,11 +616,8 @@ extern "C" int rbd_remove(rados_ioctx_t p, const char *name) { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); - tracepoint(librbd, remove_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name); librbd::NoOpProgressContext prog_ctx; - int r = librbd::remove(io_ctx, name, prog_ctx); - tracepoint(librbd, remove_exit, r); - return r; + return librbd::remove(io_ctx, name, prog_ctx); } extern "C" int rbd_remove_with_progress(rados_ioctx_t p, const char *name, @@ -715,11 +625,8 @@ extern "C" int rbd_remove_with_progress(rados_ioctx_t p, const char *name, { librados::IoCtx io_ctx; librados::IoCtx::from_rados_ioctx_t(p, io_ctx); - tracepoint(librbd, remove_enter, io_ctx.get_pool_name().c_str(), io_ctx.get_id(), name); librbd::CProgressContext prog_ctx(cb, cbdata); - int r = librbd::remove(io_ctx, name, prog_ctx); - tracepoint(librbd, remove_exit, r); - return r; + return librbd::remove(io_ctx, name, prog_ctx); } extern "C" int rbd_copy(rbd_image_t image, rados_ioctx_t dest_p, @@ -782,10 +689,7 @@ extern "C" int rbd_rename(rados_ioctx_t src_p, const char *srcname, { librados::IoCtx src_io_ctx; librados::IoCtx::from_rados_ioctx_t(src_p, src_io_ctx); - tracepoint(librbd, rename_enter, src_io_ctx.get_pool_name().c_str(), src_io_ctx.get_id(), srcname, destname); - int r = librbd::rename(src_io_ctx, srcname, destname); - tracepoint(librbd, rename_exit, r); - return r; + return librbd::rename(src_io_ctx, srcname, destname); } extern "C" int rbd_open(rados_ioctx_t p, const char *name, rbd_image_t *image, @@ -795,11 +699,9 @@ extern "C" int rbd_open(rados_ioctx_t p, const char *name, rbd_image_t *image, librados::IoCtx::from_rados_ioctx_t(p, io_ctx); librbd::ImageCtx *ictx = new librbd::ImageCtx(name, "", snap_name, io_ctx, false); - tracepoint(librbd, open_image_enter, ictx, ictx->name.c_str(), ictx->id.c_str(), ictx->snap_name.c_str(), ictx->read_only); int r = librbd::open_image(ictx); if (r >= 0) *image = (rbd_image_t)ictx; - tracepoint(librbd, open_image_exit, r); return r; } @@ -810,42 +712,32 @@ extern "C" int rbd_open_read_only(rados_ioctx_t p, const char *name, librados::IoCtx::from_rados_ioctx_t(p, io_ctx); librbd::ImageCtx *ictx = new librbd::ImageCtx(name, "", snap_name, io_ctx, true); - tracepoint(librbd, open_image_enter, ictx, ictx->name.c_str(), ictx->id.c_str(), ictx->snap_name.c_str(), ictx->read_only); int r = librbd::open_image(ictx); if (r >= 0) *image = (rbd_image_t)ictx; - tracepoint(librbd, open_image_exit, r); return r; } extern "C" int rbd_close(rbd_image_t image) { librbd::ImageCtx *ctx = (librbd::ImageCtx *)image; - tracepoint(librbd, close_image_enter, ctx, ctx->name.c_str(), ctx->id.c_str()); librbd::close_image(ctx); - tracepoint(librbd, close_image_exit); return 0; } extern "C" int rbd_resize(rbd_image_t image, uint64_t size) { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; - tracepoint(librbd, resize_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, size); librbd::NoOpProgressContext prog_ctx; - int r = librbd::resize(ictx, size, prog_ctx); - tracepoint(librbd, resize_exit, r); - return r; + return librbd::resize(ictx, size, prog_ctx); } extern "C" int rbd_resize_with_progress(rbd_image_t image, uint64_t size, librbd_progress_fn_t cb, void *cbdata) { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; - tracepoint(librbd, resize_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, size); librbd::CProgressContext prog_ctx(cb, cbdata); - int r = librbd::resize(ictx, size, prog_ctx); - tracepoint(librbd, resize_exit, r); - return r; + return librbd::resize(ictx, size, prog_ctx); } extern "C" int rbd_stat(rbd_image_t image, rbd_image_info_t *info, @@ -1159,10 +1051,7 @@ extern "C" ssize_t rbd_read(rbd_image_t image, uint64_t ofs, size_t len, char *buf) { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; - tracepoint(librbd, read_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, ofs, len); - int r = librbd::read(ictx, ofs, len, buf); - tracepoint(librbd, read_exit, r); - return r; + return librbd::read(ictx, ofs, len, buf); } extern "C" int64_t rbd_read_iterate(rbd_image_t image, uint64_t ofs, size_t len, @@ -1198,19 +1087,13 @@ extern "C" ssize_t rbd_write(rbd_image_t image, uint64_t ofs, size_t len, const char *buf) { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; - tracepoint(librbd, write_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, ofs, len, buf); - int r = librbd::write(ictx, ofs, len, buf); - tracepoint(librbd, write_exit, r); - return r; + return librbd::write(ictx, ofs, len, buf); } extern "C" int rbd_discard(rbd_image_t image, uint64_t ofs, uint64_t len) { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; - tracepoint(librbd, discard_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, ofs, len); - int r = librbd::discard(ictx, ofs, len); - tracepoint(librbd, discard_exit, r); - return r; + return librbd::discard(ictx, ofs, len); } extern "C" int rbd_aio_create_completion(void *cb_arg, @@ -1228,11 +1111,8 @@ extern "C" int rbd_aio_write(rbd_image_t image, uint64_t off, size_t len, { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c; - tracepoint(librbd, aio_write_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, off, len, buf, comp->pc); - int r = librbd::aio_write(ictx, off, len, buf, + return librbd::aio_write(ictx, off, len, buf, (librbd::AioCompletion *)comp->pc); - tracepoint(librbd, aio_write_exit, r); - return r; } extern "C" int rbd_aio_discard(rbd_image_t image, uint64_t off, uint64_t len, @@ -1240,10 +1120,7 @@ extern "C" int rbd_aio_discard(rbd_image_t image, uint64_t off, uint64_t len, { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c; - tracepoint(librbd, aio_discard_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, off, len, comp->pc); - int r = librbd::aio_discard(ictx, off, len, (librbd::AioCompletion *)comp->pc); - tracepoint(librbd, aio_discard_exit, r); - return r; + return librbd::aio_discard(ictx, off, len, (librbd::AioCompletion *)comp->pc); } extern "C" int rbd_aio_read(rbd_image_t image, uint64_t off, size_t len, @@ -1251,39 +1128,27 @@ extern "C" int rbd_aio_read(rbd_image_t image, uint64_t off, size_t len, { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c; - tracepoint(librbd, aio_read_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, off, len, buf, comp->pc); - int r = librbd::aio_read(ictx, off, len, buf, NULL, + return librbd::aio_read(ictx, off, len, buf, NULL, (librbd::AioCompletion *)comp->pc); - tracepoint(librbd, aio_read_exit, r); - return r; } extern "C" int rbd_flush(rbd_image_t image) { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; - tracepoint(librbd, flush_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only); - int r = librbd::flush(ictx); - tracepoint(librbd, flush_exit, r); - return r; + return librbd::flush(ictx); } extern "C" int rbd_aio_flush(rbd_image_t image, rbd_completion_t c) { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; librbd::RBD::AioCompletion *comp = (librbd::RBD::AioCompletion *)c; - tracepoint(librbd, aio_flush_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, comp->pc); - int r = librbd::aio_flush(ictx, (librbd::AioCompletion *)comp->pc); - tracepoint(librbd, aio_flush_exit, r); - return r; + return librbd::aio_flush(ictx, (librbd::AioCompletion *)comp->pc); } extern "C" int rbd_invalidate_cache(rbd_image_t image) { librbd::ImageCtx *ictx = (librbd::ImageCtx *)image; - tracepoint(librbd, invalidate_cache_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only); - int r = librbd::invalidate_cache(ictx); - tracepoint(librbd, invalidate_cache_exit, r); - return r; + return librbd::invalidate_cache(ictx); } extern "C" int rbd_aio_is_complete(rbd_completion_t c) diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index 3904be29d759..665de887f947 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -77,10 +77,6 @@ using ceph::crypto::SHA1; #include "common/config.h" -#ifdef WITH_LTTNG -#include "tracing/objectstore.h" -#endif - #define dout_subsys ceph_subsys_filestore #undef dout_prefix #define dout_prefix *_dout << "filestore(" << basedir << ") " @@ -1829,11 +1825,6 @@ int FileStore::queue_transactions(Sequencer *posr, list &tls, dout(5) << "queue_transactions new " << *osr << "/" << osr->parent << dendl; } - // used to include osr information in tracepoints during transaction apply - for (list::iterator i = tls.begin(); i != tls.end(); ++i) { - (*i)->set_osr(osr); - } - if (journal && journal->is_writeable() && !m_filestore_journal_trailing) { Op *o = build_op(tls, onreadable, onreadable_sync, osd_op); op_queue_reserve_throttle(o, handle); @@ -2220,8 +2211,6 @@ unsigned FileStore::_do_transaction( { dout(10) << "_do_transaction on " << &t << dendl; - const char *osr_name = t.get_osr() ? ((OpSequencer*)t.get_osr())->get_name().c_str() : ""; - Transaction::iterator i = t.begin(); SequencerPosition spos(op_seq, trans_num, 0); @@ -2241,10 +2230,8 @@ unsigned FileStore::_do_transaction( { coll_t cid = i.decode_cid(); ghobject_t oid = i.decode_oid(); - tracepoint(objectstore, touch_enter, osr_name); if (_check_replay_guard(cid, oid, spos) > 0) r = _touch(cid, oid); - tracepoint(objectstore, touch_exit, r); } break; @@ -2257,10 +2244,8 @@ unsigned FileStore::_do_transaction( bool replica = i.get_replica(); bufferlist bl; i.decode_bl(bl); - tracepoint(objectstore, write_enter, osr_name, off, len); if (_check_replay_guard(cid, oid, spos) > 0) r = _write(cid, oid, off, len, bl, replica); - tracepoint(objectstore, write_exit, r); } break; @@ -2270,10 +2255,8 @@ unsigned FileStore::_do_transaction( ghobject_t oid = i.decode_oid(); uint64_t off = i.decode_length(); uint64_t len = i.decode_length(); - tracepoint(objectstore, zero_enter, osr_name, off, len); if (_check_replay_guard(cid, oid, spos) > 0) r = _zero(cid, oid, off, len); - tracepoint(objectstore, zero_exit, r); } break; @@ -2292,10 +2275,8 @@ unsigned FileStore::_do_transaction( coll_t cid = i.decode_cid(); ghobject_t oid = i.decode_oid(); uint64_t off = i.decode_length(); - tracepoint(objectstore, truncate_enter, osr_name, off); if (_check_replay_guard(cid, oid, spos) > 0) r = _truncate(cid, oid, off); - tracepoint(objectstore, truncate_exit, r); } break; @@ -2303,10 +2284,8 @@ unsigned FileStore::_do_transaction( { coll_t cid = i.decode_cid(); ghobject_t oid = i.decode_oid(); - tracepoint(objectstore, remove_enter, osr_name); if (_check_replay_guard(cid, oid, spos) > 0) r = _remove(cid, oid, spos); - tracepoint(objectstore, remove_exit, r); } break; @@ -2317,7 +2296,6 @@ unsigned FileStore::_do_transaction( string name = i.decode_attrname(); bufferlist bl; i.decode_bl(bl); - tracepoint(objectstore, setattr_enter, osr_name); if (_check_replay_guard(cid, oid, spos) > 0) { map to_set; to_set[name] = bufferptr(bl.c_str(), bl.length()); @@ -2326,7 +2304,6 @@ unsigned FileStore::_do_transaction( dout(0) << " ENOSPC on setxattr on " << cid << "/" << oid << " name " << name << " size " << bl.length() << dendl; } - tracepoint(objectstore, setattr_exit, r); } break; @@ -2336,10 +2313,8 @@ unsigned FileStore::_do_transaction( ghobject_t oid = i.decode_oid(); map aset; i.decode_attrset(aset); - tracepoint(objectstore, setattrs_enter, osr_name); if (_check_replay_guard(cid, oid, spos) > 0) r = _setattrs(cid, oid, aset, spos); - tracepoint(objectstore, setattrs_exit, r); if (r == -ENOSPC) dout(0) << " ENOSPC on setxattrs on " << cid << "/" << oid << dendl; } @@ -2350,10 +2325,8 @@ unsigned FileStore::_do_transaction( coll_t cid = i.decode_cid(); ghobject_t oid = i.decode_oid(); string name = i.decode_attrname(); - tracepoint(objectstore, rmattr_enter, osr_name); if (_check_replay_guard(cid, oid, spos) > 0) r = _rmattr(cid, oid, name.c_str(), spos); - tracepoint(objectstore, rmattr_exit, r); } break; @@ -2361,10 +2334,8 @@ unsigned FileStore::_do_transaction( { coll_t cid = i.decode_cid(); ghobject_t oid = i.decode_oid(); - tracepoint(objectstore, rmattrs_enter, osr_name); if (_check_replay_guard(cid, oid, spos) > 0) r = _rmattrs(cid, oid, spos); - tracepoint(objectstore, rmattrs_exit, r); } break; @@ -2373,9 +2344,7 @@ unsigned FileStore::_do_transaction( coll_t cid = i.decode_cid(); ghobject_t oid = i.decode_oid(); ghobject_t noid = i.decode_oid(); - tracepoint(objectstore, clone_enter, osr_name); r = _clone(cid, oid, noid, spos); - tracepoint(objectstore, clone_exit, r); } break; @@ -2386,9 +2355,7 @@ unsigned FileStore::_do_transaction( ghobject_t noid = i.decode_oid(); uint64_t off = i.decode_length(); uint64_t len = i.decode_length(); - tracepoint(objectstore, clone_range_enter, osr_name, len); r = _clone_range(cid, oid, noid, off, len, off, spos); - tracepoint(objectstore, clone_range_exit, r); } break; @@ -2400,19 +2367,15 @@ unsigned FileStore::_do_transaction( uint64_t srcoff = i.decode_length(); uint64_t len = i.decode_length(); uint64_t dstoff = i.decode_length(); - tracepoint(objectstore, clone_range2_enter, osr_name, len); r = _clone_range(cid, oid, noid, srcoff, len, dstoff, spos); - tracepoint(objectstore, clone_range2_exit, r); } break; case Transaction::OP_MKCOLL: { coll_t cid = i.decode_cid(); - tracepoint(objectstore, mkcoll_enter, osr_name); if (_check_replay_guard(cid, spos) > 0) r = _create_collection(cid, spos); - tracepoint(objectstore, mkcoll_exit, r); } break; @@ -2441,10 +2404,8 @@ unsigned FileStore::_do_transaction( case Transaction::OP_RMCOLL: { coll_t cid = i.decode_cid(); - tracepoint(objectstore, rmcoll_enter, osr_name); if (_check_replay_guard(cid, spos) > 0) r = _destroy_collection(cid); - tracepoint(objectstore, rmcoll_exit, r); } break; @@ -2453,9 +2414,7 @@ unsigned FileStore::_do_transaction( coll_t ncid = i.decode_cid(); coll_t ocid = i.decode_cid(); ghobject_t oid = i.decode_oid(); - tracepoint(objectstore, coll_add_enter); r = _collection_add(ncid, ocid, oid, spos); - tracepoint(objectstore, coll_add_exit, r); } break; @@ -2463,10 +2422,8 @@ unsigned FileStore::_do_transaction( { coll_t cid = i.decode_cid(); ghobject_t oid = i.decode_oid(); - tracepoint(objectstore, coll_remove_enter, osr_name); if (_check_replay_guard(cid, oid, spos) > 0) r = _remove(cid, oid, spos); - tracepoint(objectstore, coll_remove_exit, r); } break; @@ -2476,12 +2433,10 @@ unsigned FileStore::_do_transaction( coll_t ocid = i.decode_cid(); coll_t ncid = i.decode_cid(); ghobject_t oid = i.decode_oid(); - tracepoint(objectstore, coll_move_enter); r = _collection_add(ocid, ncid, oid, spos); if (r == 0 && (_check_replay_guard(ocid, oid, spos) > 0)) r = _remove(ocid, oid, spos); - tracepoint(objectstore, coll_move_exit, r); } break; @@ -2491,9 +2446,7 @@ unsigned FileStore::_do_transaction( ghobject_t oldoid = i.decode_oid(); coll_t newcid = i.decode_cid(); ghobject_t newoid = i.decode_oid(); - tracepoint(objectstore, coll_move_rename_enter); r = _collection_move_rename(oldcid, oldoid, newcid, newoid, spos); - tracepoint(objectstore, coll_move_rename_exit, r); } break; @@ -2503,10 +2456,8 @@ unsigned FileStore::_do_transaction( string name = i.decode_attrname(); bufferlist bl; i.decode_bl(bl); - tracepoint(objectstore, coll_setattr_enter, osr_name); if (_check_replay_guard(cid, spos) > 0) r = _collection_setattr(cid, name.c_str(), bl.c_str(), bl.length()); - tracepoint(objectstore, coll_setattr_exit, r); } break; @@ -2514,26 +2465,20 @@ unsigned FileStore::_do_transaction( { coll_t cid = i.decode_cid(); string name = i.decode_attrname(); - tracepoint(objectstore, coll_rmattr_enter, osr_name); if (_check_replay_guard(cid, spos) > 0) r = _collection_rmattr(cid, name.c_str()); - tracepoint(objectstore, coll_rmattr_exit, r); } break; case Transaction::OP_STARTSYNC: - tracepoint(objectstore, startsync_enter, osr_name); _start_sync(); - tracepoint(objectstore, startsync_exit); break; case Transaction::OP_COLL_RENAME: { coll_t cid(i.decode_cid()); coll_t ncid(i.decode_cid()); - tracepoint(objectstore, coll_rename_enter, osr_name); r = _collection_rename(cid, ncid, spos); - tracepoint(objectstore, coll_rename_exit, r); } break; @@ -2541,9 +2486,7 @@ unsigned FileStore::_do_transaction( { coll_t cid(i.decode_cid()); ghobject_t oid = i.decode_oid(); - tracepoint(objectstore, omap_clear_enter, osr_name); r = _omap_clear(cid, oid, spos); - tracepoint(objectstore, omap_clear_exit, r); } break; case Transaction::OP_OMAP_SETKEYS: @@ -2552,9 +2495,7 @@ unsigned FileStore::_do_transaction( ghobject_t oid = i.decode_oid(); map aset; i.decode_attrset(aset); - tracepoint(objectstore, omap_setkeys_enter, osr_name); r = _omap_setkeys(cid, oid, aset, spos); - tracepoint(objectstore, omap_setkeys_exit, r); } break; case Transaction::OP_OMAP_RMKEYS: @@ -2563,9 +2504,7 @@ unsigned FileStore::_do_transaction( ghobject_t oid = i.decode_oid(); set keys; i.decode_keyset(keys); - tracepoint(objectstore, omap_rmkeys_enter, osr_name); r = _omap_rmkeys(cid, oid, keys, spos); - tracepoint(objectstore, omap_rmkeys_exit, r); } break; case Transaction::OP_OMAP_RMKEYRANGE: @@ -2575,9 +2514,7 @@ unsigned FileStore::_do_transaction( string first, last; first = i.decode_key(); last = i.decode_key(); - tracepoint(objectstore, omap_rmkeyrange_enter, osr_name); r = _omap_rmkeyrange(cid, oid, first, last, spos); - tracepoint(objectstore, omap_rmkeyrange_exit, r); } break; case Transaction::OP_OMAP_SETHEADER: @@ -2586,9 +2523,7 @@ unsigned FileStore::_do_transaction( ghobject_t oid = i.decode_oid(); bufferlist bl; i.decode_bl(bl); - tracepoint(objectstore, omap_setheader_enter, osr_name); r = _omap_setheader(cid, oid, bl, spos); - tracepoint(objectstore, omap_setheader_exit, r); } break; case Transaction::OP_SPLIT_COLLECTION: @@ -2597,9 +2532,7 @@ unsigned FileStore::_do_transaction( uint32_t bits(i.decode_u32()); uint32_t rem(i.decode_u32()); coll_t dest(i.decode_cid()); - tracepoint(objectstore, split_coll_enter, osr_name); r = _split_collection_create(cid, bits, rem, dest, spos); - tracepoint(objectstore, split_coll_exit, r); } break; case Transaction::OP_SPLIT_COLLECTION2: @@ -2608,9 +2541,7 @@ unsigned FileStore::_do_transaction( uint32_t bits(i.decode_u32()); uint32_t rem(i.decode_u32()); coll_t dest(i.decode_cid()); - tracepoint(objectstore, split_coll2_enter, osr_name); r = _split_collection(cid, bits, rem, dest, spos); - tracepoint(objectstore, split_coll2_exit, r); } break; @@ -2620,11 +2551,9 @@ unsigned FileStore::_do_transaction( ghobject_t oid = i.decode_oid(); uint64_t expected_object_size = i.decode_length(); uint64_t expected_write_size = i.decode_length(); - tracepoint(objectstore, setallochint_enter, osr_name); if (_check_replay_guard(cid, oid, spos) > 0) r = _set_alloc_hint(cid, oid, expected_object_size, expected_write_size); - tracepoint(objectstore, setallochint_exit, r); } break; @@ -2734,17 +2663,16 @@ unsigned FileStore::_do_transaction( bool FileStore::exists(coll_t cid, const ghobject_t& oid) { - tracepoint(objectstore, exists_enter, cid.c_str()); struct stat st; - bool retval = stat(cid, oid, &st) == 0; - tracepoint(objectstore, exists_exit, retval); - return retval; + if (stat(cid, oid, &st) == 0) + return true; + else + return false; } int FileStore::stat( coll_t cid, const ghobject_t& oid, struct stat *st, bool allow_eio) { - tracepoint(objectstore, stat_enter, cid.c_str()); int r = lfn_stat(cid, oid, st); assert(allow_eio || !m_filestore_fail_eio || r != -EIO); if (r < 0) { @@ -2759,7 +2687,6 @@ int FileStore::stat( debug_mdata_eio(oid)) { return -EIO; } else { - tracepoint(objectstore, stat_exit, r); return r; } } @@ -2773,7 +2700,6 @@ int FileStore::read( bool allow_eio) { int got; - tracepoint(objectstore, read_enter, cid.c_str(), offset, len); dout(15) << "read " << cid << "/" << oid << " " << offset << "~" << len << dendl; @@ -2822,7 +2748,6 @@ int FileStore::read( debug_data_eio(oid)) { return -EIO; } else { - tracepoint(objectstore, read_exit, got); return got; } } @@ -2831,8 +2756,6 @@ int FileStore::fiemap(coll_t cid, const ghobject_t& oid, uint64_t offset, size_t len, bufferlist& bl) { - tracepoint(objectstore, fiemap_enter, cid.c_str(), offset, len); - if (!backend->has_fiemap() || len <= (size_t)m_filestore_fiemap_threshold) { map m; m[offset] = len; @@ -2905,7 +2828,6 @@ done: dout(10) << "fiemap " << cid << "/" << oid << " " << offset << "~" << len << " = " << r << " num_extents=" << exomap.size() << " " << exomap << dendl; assert(!m_filestore_fail_eio || r != -EIO); - tracepoint(objectstore, fiemap_exit, r); return r; } @@ -3796,7 +3718,6 @@ bool FileStore::debug_mdata_eio(const ghobject_t &oid) { int FileStore::getattr(coll_t cid, const ghobject_t& oid, const char *name, bufferptr &bp) { - tracepoint(objectstore, getattr_enter, cid.c_str()); dout(15) << "getattr " << cid << "/" << oid << " '" << name << "'" << dendl; FDRef fd; int r = lfn_open(cid, oid, false, &fd); @@ -3837,14 +3758,12 @@ int FileStore::getattr(coll_t cid, const ghobject_t& oid, const char *name, buff debug_mdata_eio(oid)) { return -EIO; } else { - tracepoint(objectstore, getattr_exit, r); return r; } } int FileStore::getattrs(coll_t cid, const ghobject_t& oid, map& aset) { - tracepoint(objectstore, getattrs_enter, cid.c_str()); set omap_attrs; map omap_aset; Index index; @@ -3909,7 +3828,6 @@ int FileStore::getattrs(coll_t cid, const ghobject_t& oid, map debug_mdata_eio(oid)) { return -EIO; } else { - tracepoint(objectstore, getattrs_exit, r); return r; } } @@ -4365,7 +4283,6 @@ int FileStore::collection_version_current(coll_t c, uint32_t *version) int FileStore::list_collections(vector& ls) { - tracepoint(objectstore, list_collections_enter); dout(10) << "list_collections" << dendl; char fn[PATH_MAX]; @@ -4422,13 +4339,11 @@ int FileStore::list_collections(vector& ls) ::closedir(dir); assert(!m_filestore_fail_eio || r != -EIO); - tracepoint(objectstore, list_collections_exit, r); return r; } int FileStore::collection_stat(coll_t c, struct stat *st) { - tracepoint(objectstore, collection_stat_enter, c.c_str()); char fn[PATH_MAX]; get_cdir(c, fn, sizeof(fn)); dout(15) << "collection_stat " << fn << dendl; @@ -4437,22 +4352,17 @@ int FileStore::collection_stat(coll_t c, struct stat *st) r = -errno; dout(10) << "collection_stat " << fn << " = " << r << dendl; assert(!m_filestore_fail_eio || r != -EIO); - tracepoint(objectstore, collection_stat_exit, r); return r; } bool FileStore::collection_exists(coll_t c) { - tracepoint(objectstore, collection_exists_enter, c.c_str()); struct stat st; - bool ret = collection_stat(c, &st) == 0; - tracepoint(objectstore, collection_exists_exit, ret); - return ret; + return collection_stat(c, &st) == 0; } bool FileStore::collection_empty(coll_t c) { - tracepoint(objectstore, collection_empty_enter, c.c_str()); dout(15) << "collection_empty " << c << dendl; Index index; int r = get_index(c, &index); @@ -4469,15 +4379,12 @@ bool FileStore::collection_empty(coll_t c) assert(!m_filestore_fail_eio || r != -EIO); return false; } - bool ret = ls.empty(); - tracepoint(objectstore, collection_empty_exit, ret); return ls.empty(); } int FileStore::collection_list_range(coll_t c, ghobject_t start, ghobject_t end, snapid_t seq, vector *ls) { - tracepoint(objectstore, collection_list_range_enter, c.c_str()); bool done = false; ghobject_t next = start; @@ -4506,7 +4413,6 @@ int FileStore::collection_list_range(coll_t c, ghobject_t start, ghobject_t end, } } - tracepoint(objectstore, collection_list_range_exit, 0); return 0; } @@ -4514,7 +4420,6 @@ int FileStore::collection_list_partial(coll_t c, ghobject_t start, int min, int max, snapid_t seq, vector *ls, ghobject_t *next) { - tracepoint(objectstore, collection_list_partial_enter, c.c_str()); dout(10) << "collection_list_partial: " << c << dendl; Index index; int r = get_index(c, &index); @@ -4533,13 +4438,11 @@ int FileStore::collection_list_partial(coll_t c, ghobject_t start, } if (ls) dout(20) << "objects: " << *ls << dendl; - tracepoint(objectstore, collection_list_partial_exit, 0); return 0; } int FileStore::collection_list(coll_t c, vector& ls) { - tracepoint(objectstore, collection_list_enter, c.c_str()); Index index; int r = get_index(c, &index); if (r < 0) @@ -4550,7 +4453,6 @@ int FileStore::collection_list(coll_t c, vector& ls) r = index->collection_list(&ls); assert(!m_filestore_fail_eio || r != -EIO); - tracepoint(objectstore, collection_list_exit, r); return r; } @@ -4558,7 +4460,6 @@ int FileStore::omap_get(coll_t c, const ghobject_t &hoid, bufferlist *header, map *out) { - tracepoint(objectstore, omap_get_enter, c.c_str()); dout(15) << __func__ << " " << c << "/" << hoid << dendl; Index index; int r = get_index(c, &index); @@ -4576,7 +4477,6 @@ int FileStore::omap_get(coll_t c, const ghobject_t &hoid, assert(!m_filestore_fail_eio || r != -EIO); return r; } - tracepoint(objectstore, omap_get_exit, 0); return 0; } @@ -4586,7 +4486,6 @@ int FileStore::omap_get_header( bufferlist *bl, bool allow_eio) { - tracepoint(objectstore, omap_get_header_enter, c.c_str()); dout(15) << __func__ << " " << c << "/" << hoid << dendl; Index index; int r = get_index(c, &index); @@ -4604,13 +4503,11 @@ int FileStore::omap_get_header( assert(allow_eio || !m_filestore_fail_eio || r != -EIO); return r; } - tracepoint(objectstore, omap_get_header_exit, 0); return 0; } int FileStore::omap_get_keys(coll_t c, const ghobject_t &hoid, set *keys) { - tracepoint(objectstore, omap_get_keys_enter, c.c_str()); dout(15) << __func__ << " " << c << "/" << hoid << dendl; Index index; int r = get_index(c, &index); @@ -4628,7 +4525,6 @@ int FileStore::omap_get_keys(coll_t c, const ghobject_t &hoid, set *keys assert(!m_filestore_fail_eio || r != -EIO); return r; } - tracepoint(objectstore, omap_get_keys_exit, 0); return 0; } @@ -4636,7 +4532,6 @@ int FileStore::omap_get_values(coll_t c, const ghobject_t &hoid, const set &keys, map *out) { - tracepoint(objectstore, omap_get_values_enter, c.c_str()); dout(15) << __func__ << " " << c << "/" << hoid << dendl; Index index; int r = get_index(c, &index); @@ -4654,7 +4549,6 @@ int FileStore::omap_get_values(coll_t c, const ghobject_t &hoid, assert(!m_filestore_fail_eio || r != -EIO); return r; } - tracepoint(objectstore, omap_get_values_exit, 0); return 0; } @@ -4662,7 +4556,6 @@ int FileStore::omap_check_keys(coll_t c, const ghobject_t &hoid, const set &keys, set *out) { - tracepoint(objectstore, omap_check_keys_enter, c.c_str()); dout(15) << __func__ << " " << c << "/" << hoid << dendl; Index index; @@ -4681,14 +4574,12 @@ int FileStore::omap_check_keys(coll_t c, const ghobject_t &hoid, assert(!m_filestore_fail_eio || r != -EIO); return r; } - tracepoint(objectstore, omap_check_keys_exit, 0); return 0; } ObjectMap::ObjectMapIterator FileStore::get_omap_iterator(coll_t c, const ghobject_t &hoid) { - tracepoint(objectstore, get_omap_iterator, c.c_str()); dout(15) << __func__ << " " << c << "/" << hoid << dendl; Index index; int r = get_index(c, &index); diff --git a/src/os/Makefile.am b/src/os/Makefile.am index d12adbaf06d0..e20a92309a48 100644 --- a/src/os/Makefile.am +++ b/src/os/Makefile.am @@ -38,10 +38,6 @@ endif libos_la_CXXFLAGS = ${AM_CXXFLAGS} libos_la_LIBADD = $(LIBOS_TYPES) -if WITH_LTTNG -libos_la_LIBADD += $(LIBOS_TP) -endif - noinst_LTLIBRARIES += libos.la noinst_HEADERS += \ diff --git a/src/os/ObjectStore.h b/src/os/ObjectStore.h index b2d3f2ccb386..53625b11896e 100644 --- a/src/os/ObjectStore.h +++ b/src/os/ObjectStore.h @@ -386,7 +386,6 @@ public: bool use_pool_override; bool replica; bool tolerate_collection_add_enoent; - void *osr; // NULL on replay list on_applied; list on_commit; @@ -529,14 +528,6 @@ public: return ops; } - void set_osr(void *s) { - osr = s; - } - - void *get_osr() { - return osr; - } - /** * iterator * @@ -1060,13 +1051,13 @@ public: ops(0), pad_unused_bytes(0), largest_data_len(0), largest_data_off(0), largest_data_off_in_tbl(0), sobject_encoding(false), pool_override(-1), use_pool_override(false), replica(false), - tolerate_collection_add_enoent(false), osr(NULL) {} + tolerate_collection_add_enoent(false) {} Transaction(bufferlist::iterator &dp) : ops(0), pad_unused_bytes(0), largest_data_len(0), largest_data_off(0), largest_data_off_in_tbl(0), sobject_encoding(false), pool_override(-1), use_pool_override(false), replica(false), - tolerate_collection_add_enoent(false), osr(NULL) { + tolerate_collection_add_enoent(false) { decode(dp); } @@ -1074,7 +1065,7 @@ public: ops(0), pad_unused_bytes(0), largest_data_len(0), largest_data_off(0), largest_data_off_in_tbl(0), sobject_encoding(false), pool_override(-1), use_pool_override(false), replica(false), - tolerate_collection_add_enoent(false), osr(NULL) { + tolerate_collection_add_enoent(false) { bufferlist::iterator dp = nbl.begin(); decode(dp); } diff --git a/src/osd/Makefile.am b/src/osd/Makefile.am index 2338f18773d5..b8dab687c8b6 100644 --- a/src/osd/Makefile.am +++ b/src/osd/Makefile.am @@ -26,9 +26,6 @@ libosd_la_SOURCES = \ libosd_la_CXXFLAGS = ${AM_CXXFLAGS} libosd_la_LIBADD = $(LIBOSDC) $(LIBOS) $(LIBOSD_TYPES) $(LIBOS_TYPES) -if WITH_LTTNG -libosd_la_LIBADD += $(LIBOSD_TP) -endif noinst_LTLIBRARIES += libosd.la noinst_HEADERS += \ diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 9a5c15e89998..a1ac5e912086 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -133,10 +133,6 @@ #include "include/assert.h" #include "common/config.h" -#ifdef WITH_LTTNG -#include "tracing/osd.h" -#endif - #define dout_subsys ceph_subsys_osd #undef dout_prefix #define dout_prefix _prefix(_dout, whoami, get_osdmap_epoch()) @@ -5530,11 +5526,6 @@ void OSD::ms_fast_dispatch(Message *m) return; } OpRequestRef op = op_tracker.create_request(m); - { - osd_reqid_t reqid = op->get_reqid(); - tracepoint(osd, ms_fast_dispatch, reqid.name._type, - reqid.name._num, reqid.tid, reqid.inc); - } OSDMapRef nextmap = service.get_nextmap_reserved(); Session *session = static_cast(m->get_connection()->get_priv()); assert(session); @@ -8288,14 +8279,6 @@ void OSD::ShardedOpWQ::_process(uint32_t thread_index, heartbeat_handle_d *hb ) sdata->pg_for_processing.erase(&*(item.first)); } - // osd:opwq_process marks the point at which an operation has been dequeued - // and will begin to be handled by a worker thread. - { - osd_reqid_t reqid = op->get_reqid(); - tracepoint(osd, opwq_process_start, reqid.name._type, - reqid.name._num, reqid.tid, reqid.inc); - } - lgeneric_subdout(osd->cct, osd, 30) << "dequeue status: "; Formatter *f = new_formatter("json"); f->open_object_section("q"); @@ -8306,14 +8289,8 @@ void OSD::ShardedOpWQ::_process(uint32_t thread_index, heartbeat_handle_d *hb ) *_dout << dendl; osd->dequeue_op(item.first, op, tp_handle); - - { - osd_reqid_t reqid = op->get_reqid(); - tracepoint(osd, opwq_process_finish, reqid.name._type, - reqid.name._num, reqid.tid, reqid.inc); - } - (item.first)->unlock(); + } void OSD::ShardedOpWQ::_enqueue(pair item) { diff --git a/src/osd/OpRequest.cc b/src/osd/OpRequest.cc index d45de6f02862..a6ee3ee5dfcf 100644 --- a/src/osd/OpRequest.cc +++ b/src/osd/OpRequest.cc @@ -12,9 +12,6 @@ #include "include/assert.h" #include "osd/osd_types.h" -#ifdef WITH_LTTNG -#include "tracing/oprequest.h" -#endif OpRequest::OpRequest(Message *req, OpTracker *tracker) : @@ -92,29 +89,9 @@ bool OpRequest::need_class_read_cap() { bool OpRequest::need_class_write_cap() { return check_rmw(CEPH_OSD_RMW_FLAG_CLASS_WRITE); } - -void OpRequest::set_rmw_flags(int flags) { - int old_rmw_flags = rmw_flags; - rmw_flags |= flags; - tracepoint(oprequest, set_rmw_flags, reqid.name._type, - reqid.name._num, reqid.tid, reqid.inc, - flags, old_rmw_flags, rmw_flags); -} - -void OpRequest::set_read() { set_rmw_flags(CEPH_OSD_RMW_FLAG_READ); } -void OpRequest::set_write() { set_rmw_flags(CEPH_OSD_RMW_FLAG_WRITE); } -void OpRequest::set_class_read() { set_rmw_flags(CEPH_OSD_RMW_FLAG_CLASS_READ); } -void OpRequest::set_class_write() { set_rmw_flags(CEPH_OSD_RMW_FLAG_CLASS_WRITE); } -void OpRequest::set_pg_op() { set_rmw_flags(CEPH_OSD_RMW_FLAG_PGOP); } -void OpRequest::set_cache() { set_rmw_flags(CEPH_OSD_RMW_FLAG_CACHE); } - -void OpRequest::mark_flag_point(uint8_t flag, string s) { - uint8_t old_flags = hit_flag_points; - mark_event(s); - current = s; - hit_flag_points |= flag; - latest_flag_point = flag; - tracepoint(oprequest, mark_flag_point, reqid.name._type, - reqid.name._num, reqid.tid, reqid.inc, rmw_flags, - flag, s.c_str(), old_flags, hit_flag_points); -} +void OpRequest::set_read() { rmw_flags |= CEPH_OSD_RMW_FLAG_READ; } +void OpRequest::set_write() { rmw_flags |= CEPH_OSD_RMW_FLAG_WRITE; } +void OpRequest::set_class_read() { rmw_flags |= CEPH_OSD_RMW_FLAG_CLASS_READ; } +void OpRequest::set_class_write() { rmw_flags |= CEPH_OSD_RMW_FLAG_CLASS_WRITE; } +void OpRequest::set_pg_op() { rmw_flags |= CEPH_OSD_RMW_FLAG_PGOP; } +void OpRequest::set_cache() { rmw_flags |= CEPH_OSD_RMW_FLAG_CACHE; } diff --git a/src/osd/OpRequest.h b/src/osd/OpRequest.h index b80fc3c1af2f..b9bfa9b3ef3b 100644 --- a/src/osd/OpRequest.h +++ b/src/osd/OpRequest.h @@ -131,22 +131,40 @@ public: } void mark_queued_for_pg() { - mark_flag_point(flag_queued_for_pg, "queued_for_pg"); + mark_event("queued_for_pg"); + current = "queued for pg"; + hit_flag_points |= flag_queued_for_pg; + latest_flag_point = flag_queued_for_pg; } void mark_reached_pg() { - mark_flag_point(flag_reached_pg, "reached_pg"); + mark_event("reached_pg"); + current = "reached pg"; + hit_flag_points |= flag_reached_pg; + latest_flag_point = flag_reached_pg; } void mark_delayed(string s) { - mark_flag_point(flag_delayed, s); + mark_event(s); + current = s; + hit_flag_points |= flag_delayed; + latest_flag_point = flag_delayed; } void mark_started() { - mark_flag_point(flag_started, "started"); + mark_event("started"); + current = "started"; + hit_flag_points |= flag_started; + latest_flag_point = flag_started; } void mark_sub_op_sent(string s) { - mark_flag_point(flag_sub_op_sent, s); + mark_event(s); + current = s; + hit_flag_points |= flag_sub_op_sent; + latest_flag_point = flag_sub_op_sent; } void mark_commit_sent() { - mark_flag_point(flag_commit_sent, "commit_sent"); + mark_event("commit_sent"); + current = "commit sent"; + hit_flag_points |= flag_commit_sent; + latest_flag_point = flag_commit_sent; } utime_t get_dequeued_time() const { @@ -161,10 +179,6 @@ public: } typedef ceph::shared_ptr Ref; - -private: - void set_rmw_flags(int flags); - void mark_flag_point(uint8_t flag, string s); }; typedef OpRequest::Ref OpRequestRef; diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 7e4883382c9a..dc10b797cd30 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -42,10 +42,6 @@ #include "messages/MOSDSubOpReply.h" #include "common/BackTrace.h" -#ifdef WITH_LTTNG -#include "tracing/pg.h" -#endif - #include #define dout_subsys ceph_subsys_osd @@ -1725,12 +1721,6 @@ void PG::queue_op(OpRequestRef& op) return; } osd->op_wq.queue(make_pair(PGRef(this), op)); - { - // after queue() to include any locking costs - osd_reqid_t reqid = op->get_reqid(); - tracepoint(pg, queue_op, reqid.name._type, - reqid.name._num, reqid.tid, reqid.inc, op->rmw_flags); - } } void PG::replay_queued_ops() diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 0b17d609cc4e..19de29b02547 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -58,10 +58,6 @@ #include "json_spirit/json_spirit_reader.h" #include "include/assert.h" // json_spirit clobbers it -#ifdef WITH_LTTNG -#include "tracing/osd.h" -#endif - #define dout_subsys ceph_subsys_osd #define DOUT_PREFIX_ARGS this, osd->whoami, get_osdmap() #undef dout_prefix @@ -1845,20 +1841,8 @@ void ReplicatedPG::execute_ctx(OpContext *ctx) p->second->ondisk_read_lock(); } - { - osd_reqid_t reqid = ctx->op->get_reqid(); - tracepoint(osd, prepare_tx_enter, reqid.name._type, - reqid.name._num, reqid.tid, reqid.inc); - } - int result = prepare_transaction(ctx); - { - osd_reqid_t reqid = ctx->op->get_reqid(); - tracepoint(osd, prepare_tx_exit, reqid.name._type, - reqid.name._num, reqid.tid, reqid.inc); - } - if (op->may_read()) { dout(10) << " dropping ondisk_read_lock" << dendl; obc->ondisk_read_unlock(); @@ -3013,30 +2997,6 @@ struct FillInExtent : public Context { } }; -template -static string list_keys(const map& m) { - string s; - for (typename map::const_iterator itr = m.begin(); itr != m.end(); ++itr) { - if (!s.empty()) { - s.push_back(','); - } - s.append(itr->first); - } - return s; -} - -template -static string list_entries(const T& m) { - string s; - for (typename T::const_iterator itr = m.begin(); itr != m.end(); ++itr) { - if (!s.empty()) { - s.push_back(','); - } - s.append(*itr); - } - return s; -} - int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) { int result = 0; @@ -3054,13 +3014,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) for (vector::iterator p = ops.begin(); p != ops.end(); ++p, ctx->current_osd_subop_num++) { OSDOp& osd_op = *p; ceph_osd_op& op = osd_op.op; - - // TODO: check endianness (__le32 vs uint32_t, etc.) - // The fields in ceph_osd_op are little-endian (according to the definition in rados.h), - // but the code in this function seems to treat them as native-endian. What should the - // tracepoints do? - tracepoint(osd, do_osd_op_pre, soid.oid.name.c_str(), soid.snap.val, op.op, ceph_osd_op_name(op.op), op.flags); - + dout(10) << "do_osd_op " << osd_op << dendl; bufferlist::iterator bp = osd_op.indata.begin(); @@ -3131,7 +3085,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) { __u32 seq = oi.truncate_seq; uint64_t size = oi.size; - tracepoint(osd, do_osd_op_pre_read, soid.oid.name.c_str(), soid.snap.val, size, seq, op.extent.offset, op.extent.length, op.extent.truncate_size, op.extent.truncate_seq); bool trimmed_read = false; // are we beyond truncate_size? if ( (seq < op.extent.truncate_seq) && @@ -3182,7 +3135,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) /* map extents */ case CEPH_OSD_OP_MAPEXT: - tracepoint(osd, do_osd_op_pre_mapext, soid.oid.name.c_str(), soid.snap.val, op.extent.offset, op.extent.length); if (pool.info.require_rollback()) { result = -EOPNOTSUPP; break; @@ -3203,7 +3155,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) /* map extents */ case CEPH_OSD_OP_SPARSE_READ: - tracepoint(osd, do_osd_op_pre_sparse_read, soid.oid.name.c_str(), soid.snap.val, oi.size, oi.truncate_seq, op.extent.offset, op.extent.length, op.extent.truncate_size, op.extent.truncate_seq); if (pool.info.require_rollback()) { result = -EOPNOTSUPP; break; @@ -3303,10 +3254,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) osd_op.indata.hexdump(*_dout); *_dout << dendl; result = -EINVAL; - tracepoint(osd, do_osd_op_pre_call, soid.oid.name.c_str(), soid.snap.val, "???", "???"); break; } - tracepoint(osd, do_osd_op_pre_call, soid.oid.name.c_str(), soid.snap.val, cname.c_str(), mname.c_str()); ClassHandler::ClassData *cls; result = osd->class_handler->open_class(cname, &cls); @@ -3352,8 +3301,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_STAT: // note: stat does not require RD { - tracepoint(osd, do_osd_op_pre_stat, soid.oid.name.c_str(), soid.snap.val); - if (obs.exists && !oi.is_whiteout()) { ::encode(oi.size, osd_op.outdata); ::encode(oi.mtime, osd_op.outdata); @@ -3370,7 +3317,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_ISDIRTY: ++ctx->num_read; { - tracepoint(osd, do_osd_op_pre_isdirty, soid.oid.name.c_str(), soid.snap.val); bool is_dirty = obs.oi.is_dirty(); ::encode(is_dirty, osd_op.outdata); ctx->delta_stats.num_rd++; @@ -3381,7 +3327,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_UNDIRTY: ++ctx->num_write; { - tracepoint(osd, do_osd_op_pre_undirty, soid.oid.name.c_str(), soid.snap.val); if (oi.is_dirty()) { ctx->undirty = true; // see make_writeable() ctx->modify = true; @@ -3394,7 +3339,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_CACHE_TRY_FLUSH: ++ctx->num_write; { - tracepoint(osd, do_osd_op_pre_try_flush, soid.oid.name.c_str(), soid.snap.val); if (ctx->lock_to_release != OpContext::NONE) { dout(10) << "cache-try-flush without SKIPRWLOCKS flag set" << dendl; result = -EINVAL; @@ -3421,7 +3365,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_CACHE_FLUSH: ++ctx->num_write; { - tracepoint(osd, do_osd_op_pre_cache_flush, soid.oid.name.c_str(), soid.snap.val); if (ctx->lock_to_release == OpContext::NONE) { dout(10) << "cache-flush with SKIPRWLOCKS flag set" << dendl; result = -EINVAL; @@ -3457,7 +3400,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_CACHE_EVICT: ++ctx->num_write; { - tracepoint(osd, do_osd_op_pre_cache_evict, soid.oid.name.c_str(), soid.snap.val); if (pool.info.cache_mode == pg_pool_t::CACHEMODE_NONE) { result = -EINVAL; break; @@ -3485,7 +3427,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) { string aname; bp.copy(op.xattr.name_len, aname); - tracepoint(osd, do_osd_op_pre_getxattr, soid.oid.name.c_str(), soid.snap.val, aname.c_str()); string name = "_" + aname; int r = getattr_maybe_cache( ctx->obc, @@ -3504,7 +3445,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_GETXATTRS: ++ctx->num_read; { - tracepoint(osd, do_osd_op_pre_getxattrs, soid.oid.name.c_str(), soid.snap.val); map out; result = getattrs_maybe_cache( ctx->obc, @@ -3525,7 +3465,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) { string aname; bp.copy(op.xattr.name_len, aname); - tracepoint(osd, do_osd_op_pre_cmpxattr, soid.oid.name.c_str(), soid.snap.val, aname.c_str()); string name = "_" + aname; name[op.xattr.name_len + 1] = 0; @@ -3597,7 +3536,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) ++ctx->num_read; { uint64_t ver = op.watch.ver; - tracepoint(osd, do_osd_op_pre_assert_ver, soid.oid.name.c_str(), soid.snap.val, ver); if (!ver) result = -EINVAL; else if (ver < oi.user_version) @@ -3610,7 +3548,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_LIST_WATCHERS: ++ctx->num_read; { - tracepoint(osd, do_osd_op_pre_list_watchers, soid.oid.name.c_str(), soid.snap.val); obj_list_watch_response_t resp; map, watch_info_t>::const_iterator oi_iter; @@ -3637,7 +3574,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_LIST_SNAPS: ++ctx->num_read; { - tracepoint(osd, do_osd_op_pre_list_snaps, soid.oid.name.c_str(), soid.snap.val); obj_list_snap_response_t resp; if (!ssc) { @@ -3717,7 +3653,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) ++ctx->num_read; { uint64_t ver = op.assert_ver.ver; - tracepoint(osd, do_osd_op_pre_assert_src_version, soid.oid.name.c_str(), soid.snap.val, ver); if (!ver) result = -EINVAL; else if (ver < src_obc->obs.oi.user_version) @@ -3730,7 +3665,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_NOTIFY: ++ctx->num_read; { - uint32_t ver; // obsolete + uint32_t ver; uint32_t timeout; bufferlist bl; @@ -3741,7 +3676,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } catch (const buffer::error &e) { timeout = 0; } - tracepoint(osd, do_osd_op_pre_notify, soid.oid.name.c_str(), soid.snap.val, timeout); if (!timeout) timeout = cct->_conf->osd_default_notify_timeout; @@ -3761,11 +3695,9 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) uint64_t watch_cookie = 0; ::decode(notify_id, bp); ::decode(watch_cookie, bp); - tracepoint(osd, do_osd_op_pre_notify_ack, soid.oid.name.c_str(), soid.snap.val, notify_id, watch_cookie, "Y"); OpContext::NotifyAck ack(notify_id, watch_cookie); ctx->notify_acks.push_back(ack); } catch (const buffer::error &e) { - tracepoint(osd, do_osd_op_pre_notify_ack, soid.oid.name.c_str(), soid.snap.val, op.watch.cookie, 0, "N"); OpContext::NotifyAck ack( // op.watch.cookie is actually the notify_id for historical reasons op.watch.cookie @@ -3778,7 +3710,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_SETALLOCHINT: ++ctx->num_write; { - tracepoint(osd, do_osd_op_pre_setallochint, soid.oid.name.c_str(), soid.snap.val, op.alloc_hint.expected_object_size, op.alloc_hint.expected_write_size); if (!obs.exists) { ctx->mod_desc.create(); t->touch(soid); @@ -3800,8 +3731,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_WRITE: ++ctx->num_write; { // write - __u32 seq = oi.truncate_seq; - tracepoint(osd, do_osd_op_pre_write, soid.oid.name.c_str(), soid.snap.val, oi.size, seq, op.extent.offset, op.extent.length, op.extent.truncate_size, op.extent.truncate_seq); if (op.extent.length != osd_op.indata.length()) { result = -EINVAL; break; @@ -3825,6 +3754,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } } + __u32 seq = oi.truncate_seq; if (seq && (seq > op.extent.truncate_seq) && (op.extent.offset + op.extent.length > oi.size)) { // old write, arrived after trimtrunc @@ -3875,8 +3805,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_WRITEFULL: ++ctx->num_write; { // write full object - tracepoint(osd, do_osd_op_pre_writefull, soid.oid.name.c_str(), soid.snap.val, oi.size, op.extent.offset, op.extent.length); - if (op.extent.length != osd_op.indata.length()) { result = -EINVAL; break; @@ -3938,12 +3866,10 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_ROLLBACK : ++ctx->num_write; - tracepoint(osd, do_osd_op_pre_rollback, soid.oid.name.c_str(), soid.snap.val); result = _rollback_to(ctx, op); break; case CEPH_OSD_OP_ZERO: - tracepoint(osd, do_osd_op_pre_zero, soid.oid.name.c_str(), soid.snap.val, op.extent.offset, op.extent.length); if (pool.info.require_rollback()) { result = -EOPNOTSUPP; break; @@ -3969,7 +3895,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_CREATE: ++ctx->num_write; { - tracepoint(osd, do_osd_op_pre_create, soid.oid.name.c_str(), soid.snap.val); int flags = le32_to_cpu(op.flags); if (obs.exists && !oi.is_whiteout() && (flags & CEPH_OSD_OP_FLAG_EXCL)) { @@ -4012,7 +3937,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) // falling through case CEPH_OSD_OP_TRUNCATE: - tracepoint(osd, do_osd_op_pre_truncate, soid.oid.name.c_str(), soid.snap.val, oi.size, oi.truncate_seq, op.extent.offset, op.extent.length, op.extent.truncate_size, op.extent.truncate_seq); if (pool.info.require_rollback()) { result = -EOPNOTSUPP; break; @@ -4062,7 +3986,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_DELETE: ++ctx->num_write; - tracepoint(osd, do_osd_op_pre_delete, soid.oid.name.c_str(), soid.snap.val); if (ctx->obc->obs.oi.watchers.size()) { // Cannot delete an object with watchers result = -EBUSY; @@ -4072,7 +3995,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) break; case CEPH_OSD_OP_CLONERANGE: - tracepoint(osd, do_osd_op_pre_clonerange, soid.oid.name.c_str(), soid.snap.val, op.clonerange.offset, op.clonerange.length, op.clonerange.src_offset); ctx->mod_desc.mark_unrollbackable(); if (pool.info.require_rollback()) { result = -EOPNOTSUPP; @@ -4106,7 +4028,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_WATCH: ++ctx->num_write; { - tracepoint(osd, do_osd_op_pre_watch, soid.oid.name.c_str(), soid.snap.val, op.watch.cookie, op.watch.flag); if (!obs.exists) { result = -ENOENT; break; @@ -4157,7 +4078,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) { if (cct->_conf->osd_max_attr_size > 0 && op.xattr.value_len > cct->_conf->osd_max_attr_size) { - tracepoint(osd, do_osd_op_pre_setxattr, soid.oid.name.c_str(), soid.snap.val, "???"); result = -EFBIG; break; } @@ -4175,7 +4095,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } string aname; bp.copy(op.xattr.name_len, aname); - tracepoint(osd, do_osd_op_pre_setxattr, soid.oid.name.c_str(), soid.snap.val, aname.c_str()); string name = "_" + aname; if (pool.info.require_rollback()) { map > to_set; @@ -4202,7 +4121,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) { string aname; bp.copy(op.xattr.name_len, aname); - tracepoint(osd, do_osd_op_pre_rmxattr, soid.oid.name.c_str(), soid.snap.val, aname.c_str()); string name = "_" + aname; if (pool.info.require_rollback()) { map > to_set; @@ -4226,7 +4144,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) // -- fancy writers -- case CEPH_OSD_OP_APPEND: { - tracepoint(osd, do_osd_op_pre_append, soid.oid.name.c_str(), soid.snap.val, oi.size, oi.truncate_seq, op.extent.offset, op.extent.length, op.extent.truncate_size, op.extent.truncate_seq); // just do it inline; this works because we are happy to execute // fancy op on replicas as well. vector nops(1); @@ -4242,14 +4159,12 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) break; case CEPH_OSD_OP_STARTSYNC: - tracepoint(osd, do_osd_op_pre_startsync, soid.oid.name.c_str(), soid.snap.val); t->nop(); break; // -- trivial map -- case CEPH_OSD_OP_TMAPGET: - tracepoint(osd, do_osd_op_pre_tmapget, soid.oid.name.c_str(), soid.snap.val); if (pool.info.require_rollback()) { result = -EOPNOTSUPP; break; @@ -4267,7 +4182,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) break; case CEPH_OSD_OP_TMAPPUT: - tracepoint(osd, do_osd_op_pre_tmapput, soid.oid.name.c_str(), soid.snap.val); if (pool.info.require_rollback()) { result = -EOPNOTSUPP; break; @@ -4326,7 +4240,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) break; case CEPH_OSD_OP_TMAPUP: - tracepoint(osd, do_osd_op_pre_tmapup, soid.oid.name.c_str(), soid.snap.val); if (pool.info.require_rollback()) { result = -EOPNOTSUPP; break; @@ -4337,7 +4250,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_TMAP2OMAP: ++ctx->num_write; - tracepoint(osd, do_osd_op_pre_tmap2omap, soid.oid.name.c_str(), soid.snap.val); result = do_tmap2omap(ctx, op.tmap2omap.flags); break; @@ -4353,10 +4265,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } catch (buffer::error& e) { result = -EINVAL; - tracepoint(osd, do_osd_op_pre_omapgetkeys, soid.oid.name.c_str(), soid.snap.val, "???", 0); goto fail; } - tracepoint(osd, do_osd_op_pre_omapgetkeys, soid.oid.name.c_str(), soid.snap.val, start_after.c_str(), max_return); set out_set; if (!pool.info.require_rollback()) { @@ -4390,10 +4300,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } catch (buffer::error& e) { result = -EINVAL; - tracepoint(osd, do_osd_op_pre_omapgetvals, soid.oid.name.c_str(), soid.snap.val, "???", 0, "???"); goto fail; } - tracepoint(osd, do_osd_op_pre_omapgetvals, soid.oid.name.c_str(), soid.snap.val, start_after.c_str(), max_return, filter_prefix.c_str()); map out_set; if (!pool.info.require_rollback()) { @@ -4421,7 +4329,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) break; case CEPH_OSD_OP_OMAPGETHEADER: - tracepoint(osd, do_osd_op_pre_omapgetheader, soid.oid.name.c_str(), soid.snap.val); if (pool.info.require_rollback()) { // return empty header break; @@ -4443,10 +4350,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } catch (buffer::error& e) { result = -EINVAL; - tracepoint(osd, do_osd_op_pre_omapgetvalsbykeys, soid.oid.name.c_str(), soid.snap.val, "???"); goto fail; } - tracepoint(osd, do_osd_op_pre_omapgetvalsbykeys, soid.oid.name.c_str(), soid.snap.val, list_entries(keys_to_get).c_str()); map out; if (!pool.info.require_rollback()) { osd->store->omap_get_values(coll, soid, keys_to_get, &out); @@ -4462,7 +4367,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) { if (!obs.exists || oi.is_whiteout()) { result = -ENOENT; - tracepoint(osd, do_osd_op_pre_omap_cmp, soid.oid.name.c_str(), soid.snap.val, "???"); break; } map > assertions; @@ -4471,10 +4375,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } catch (buffer::error& e) { result = -EINVAL; - tracepoint(osd, do_osd_op_pre_omap_cmp, soid.oid.name.c_str(), soid.snap.val, "???"); goto fail; } - tracepoint(osd, do_osd_op_pre_omap_cmp, soid.oid.name.c_str(), soid.snap.val, list_keys(assertions).c_str()); map out; @@ -4534,7 +4436,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_OMAPSETVALS: if (pool.info.require_rollback()) { result = -EOPNOTSUPP; - tracepoint(osd, do_osd_op_pre_omapsetvals, soid.oid.name.c_str(), soid.snap.val, "???"); break; } ctx->mod_desc.mark_unrollbackable(); @@ -4551,10 +4452,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } catch (buffer::error& e) { result = -EINVAL; - tracepoint(osd, do_osd_op_pre_omapsetvals, soid.oid.name.c_str(), soid.snap.val, "???"); goto fail; } - tracepoint(osd, do_osd_op_pre_omapsetvals, soid.oid.name.c_str(), soid.snap.val, list_keys(to_set).c_str()); dout(20) << "setting vals: " << dendl; for (map::iterator i = to_set.begin(); i != to_set.end(); @@ -4568,7 +4467,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) break; case CEPH_OSD_OP_OMAPSETHEADER: - tracepoint(osd, do_osd_op_pre_omapsetheader, soid.oid.name.c_str(), soid.snap.val); if (pool.info.require_rollback()) { result = -EOPNOTSUPP; break; @@ -4588,7 +4486,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) break; case CEPH_OSD_OP_OMAPCLEAR: - tracepoint(osd, do_osd_op_pre_omapclear, soid.oid.name.c_str(), soid.snap.val); if (pool.info.require_rollback()) { result = -EOPNOTSUPP; break; @@ -4610,7 +4507,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_OMAPRMKEYS: if (pool.info.require_rollback()) { result = -EOPNOTSUPP; - tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val, "???"); break; } ctx->mod_desc.mark_unrollbackable(); @@ -4618,7 +4514,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) { if (!obs.exists || oi.is_whiteout()) { result = -ENOENT; - tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val, "???"); break; } t->touch(soid); @@ -4628,10 +4523,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } catch (buffer::error& e) { result = -EINVAL; - tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val, "???"); goto fail; } - tracepoint(osd, do_osd_op_pre_omaprmkeys, soid.oid.name.c_str(), soid.snap.val, list_entries(to_rm).c_str()); t->omap_rmkeys(soid, to_rm); ctx->delta_stats.num_wr++; } @@ -4640,7 +4533,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_COPY_GET_CLASSIC: ++ctx->num_read; - tracepoint(osd, do_osd_op_pre_copy_get_classic, soid.oid.name.c_str(), soid.snap.val); result = fill_in_copy_get(ctx, bp, osd_op, ctx->obc, true); if (result == -EINVAL) goto fail; @@ -4648,7 +4540,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) case CEPH_OSD_OP_COPY_GET: ++ctx->num_read; - tracepoint(osd, do_osd_op_pre_copy_get, soid.oid.name.c_str(), soid.snap.val); result = fill_in_copy_get(ctx, bp, osd_op, ctx->obc, false); if (result == -EINVAL) goto fail; @@ -4667,30 +4558,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) } catch (buffer::error& e) { result = -EINVAL; - tracepoint(osd, - do_osd_op_pre_copy_from, - soid.oid.name.c_str(), - soid.snap.val, - "???", - 0, - "???", - "???", - 0, - src_snapid, - src_version); goto fail; } - tracepoint(osd, - do_osd_op_pre_copy_from, - soid.oid.name.c_str(), - soid.snap.val, - src_name.name.c_str(), - src_oloc.pool, - src_oloc.key.c_str(), - src_oloc.nspace.c_str(), - src_oloc.hash, - src_snapid, - src_version); if (!ctx->copy_cb) { // start pg_t raw_pg; @@ -4719,7 +4588,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) break; default: - tracepoint(osd, do_osd_op_pre_unknown, soid.oid.name.c_str(), soid.snap.val, op.op, ceph_osd_op_name(op.op)); dout(1) << "unrecognized osd op " << op.op << " " << ceph_osd_op_name(op.op) << dendl; @@ -4730,7 +4598,6 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) fail: osd_op.rval = result; - tracepoint(osd, do_osd_op_post, soid.oid.name.c_str(), soid.snap.val, op.op, ceph_osd_op_name(op.op), op.flags, result); if (result < 0 && (op.flags & CEPH_OSD_OP_FLAG_FAILOK)) result = 0; diff --git a/src/rbd_replay/BoundedBuffer.hpp b/src/rbd_replay/BoundedBuffer.hpp deleted file mode 100644 index 540fd317e216..000000000000 --- a/src/rbd_replay/BoundedBuffer.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab - -#ifndef _INCLUDED_BOUNDED_BUFFER_HPP -#define _INCLUDED_BOUNDED_BUFFER_HPP - -#include -#include -#include -#include - -// Taken from http://www.boost.org/doc/libs/1_55_0/libs/circular_buffer/example/circular_buffer_bound_example.cpp -template -class BoundedBuffer { -public: - typedef boost::circular_buffer container_type; - typedef typename container_type::size_type size_type; - typedef typename container_type::value_type value_type; - typedef typename boost::call_traits::param_type param_type; - - explicit BoundedBuffer(size_type capacity) : m_unread(0), m_container(capacity) { - } - - void push_front(typename boost::call_traits::param_type item) { - // `param_type` represents the "best" way to pass a parameter of type `value_type` to a method. - boost::mutex::scoped_lock lock(m_mutex); - m_not_full.wait(lock, boost::bind(&BoundedBuffer::is_not_full, this)); - m_container.push_front(item); - ++m_unread; - lock.unlock(); - m_not_empty.notify_one(); - } - - void pop_back(value_type* pItem) { - boost::mutex::scoped_lock lock(m_mutex); - m_not_empty.wait(lock, boost::bind(&BoundedBuffer::is_not_empty, this)); - *pItem = m_container[--m_unread]; - lock.unlock(); - m_not_full.notify_one(); - } - -private: - BoundedBuffer(const BoundedBuffer&); // Disabled copy constructor. - BoundedBuffer& operator= (const BoundedBuffer&); // Disabled assign operator. - - bool is_not_empty() const { - return m_unread > 0; - } - bool is_not_full() const { - return m_unread < m_container.capacity(); - } - - size_type m_unread; - container_type m_container; - boost::mutex m_mutex; - boost::condition m_not_empty; - boost::condition m_not_full; -}; - -#endif diff --git a/src/rbd_replay/Deser.cc b/src/rbd_replay/Deser.cc deleted file mode 100644 index 986a18c166a6..000000000000 --- a/src/rbd_replay/Deser.cc +++ /dev/null @@ -1,67 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include "Deser.hpp" -#include -#include -#include - - -rbd_replay::Deser::Deser(std::istream &in) - : m_in(in) { -} - -uint8_t rbd_replay::Deser::read_uint8_t() { - uint8_t data; - m_in.read(reinterpret_cast(&data), sizeof(data)); - return data; -} - -uint16_t rbd_replay::Deser::read_uint16_t() { - uint16_t data; - m_in.read(reinterpret_cast(&data), sizeof(data)); - return ntohs(data); -} - -uint32_t rbd_replay::Deser::read_uint32_t() { - uint32_t data; - m_in.read(reinterpret_cast(&data), sizeof(data)); - return ntohl(data); -} - -uint64_t rbd_replay::Deser::read_uint64_t() { - uint64_t data; - m_in.read(reinterpret_cast(&data), sizeof(data)); -#if __BYTE_ORDER == __LITTLE_ENDIAN - data = (static_cast(ntohl(data)) << 32 | ntohl(data >> 32)); -#endif - return data; -} - -std::string rbd_replay::Deser::read_string() { - uint32_t length = read_uint32_t(); - char* data = reinterpret_cast(malloc(length)); - m_in.read(data, length); - std::string s(data, length); - free(data); - return s; -} - -bool rbd_replay::Deser::read_bool() { - return read_uint8_t() != 0; -} - -bool rbd_replay::Deser::eof() { - return m_in.eof(); -} diff --git a/src/rbd_replay/Deser.hpp b/src/rbd_replay/Deser.hpp deleted file mode 100644 index d5fad5ae6650..000000000000 --- a/src/rbd_replay/Deser.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef _INCLUDED_RBD_REPLAY_DESER_HPP -#define _INCLUDED_RBD_REPLAY_DESER_HPP - -#include -#include - -namespace rbd_replay { - -class Deser { -public: - Deser(std::istream &in); - - uint8_t read_uint8_t(); - - uint16_t read_uint16_t(); - - uint32_t read_uint32_t(); - - uint64_t read_uint64_t(); - - std::string read_string(); - - bool read_bool(); - - bool eof(); - -private: - std::istream &m_in; -}; - -} - -#endif diff --git a/src/rbd_replay/ImageNameMap.cc b/src/rbd_replay/ImageNameMap.cc deleted file mode 100644 index f542657185fb..000000000000 --- a/src/rbd_replay/ImageNameMap.cc +++ /dev/null @@ -1,69 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include "ImageNameMap.hpp" - - -using namespace std; -using namespace rbd_replay; - - -bool ImageNameMap::parse_mapping(string mapping_string, Mapping *mapping) const { - string fields[2]; - int field = 0; - for (size_t i = 0, n = mapping_string.length(); i < n; i++) { - char c = mapping_string[i]; - switch (c) { - case '\\': - if (i != n - 1 && mapping_string[i + 1] == '=') { - i++; - fields[field].push_back('='); - } else { - fields[field].push_back('\\'); - } - break; - case '=': - if (field == 1) { - return false; - } - field = 1; - break; - default: - fields[field].push_back(c); - } - } - if (field == 0) { - return false; - } - if (!mapping->first.parse(fields[0])) { - return false; - } - if (!mapping->second.parse(fields[1])) { - return false; - } - return true; -} - -void ImageNameMap::add_mapping(const Mapping& mapping) { - m_map.insert(mapping); -} - -rbd_loc ImageNameMap::map(const rbd_loc& name) const { - std::map::const_iterator p(m_map.find(name)); - if (p == m_map.end()) { - return name; - } else { - return p->second; - } -} diff --git a/src/rbd_replay/ImageNameMap.hpp b/src/rbd_replay/ImageNameMap.hpp deleted file mode 100644 index 00de76552cdf..000000000000 --- a/src/rbd_replay/ImageNameMap.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef _INCLUDED_RBD_REPLAY_IMAGENAMEMAP_HPP -#define _INCLUDED_RBD_REPLAY_IMAGENAMEMAP_HPP - -#include -#include -#include "rbd_loc.hpp" - -namespace rbd_replay { - -class ImageNameMap { -public: - typedef std::pair Mapping; - - bool parse_mapping(std::string mapping_string, Mapping *mapping) const; - - void add_mapping(const Mapping& mapping); - - rbd_loc map(const rbd_loc& name) const; - -private: - std::map m_map; -}; - -} - -#endif diff --git a/src/rbd_replay/Makefile.am b/src/rbd_replay/Makefile.am deleted file mode 100644 index cd004b673925..000000000000 --- a/src/rbd_replay/Makefile.am +++ /dev/null @@ -1,43 +0,0 @@ -# librbd_replay_la exists only to help with unit tests -librbd_replay_la_SOURCES = rbd_replay/actions.cc \ - rbd_replay/Deser.cc \ - rbd_replay/ImageNameMap.cc \ - rbd_replay/PendingIO.cc \ - rbd_replay/rbd_loc.cc \ - rbd_replay/Replayer.cc \ - rbd_replay/Ser.cc -librbd_replay_la_LIBADD = $(LIBRBD) \ - $(LIBRADOS) \ - $(CEPH_GLOBAL) -noinst_LTLIBRARIES += librbd_replay.la -noinst_HEADERS += rbd_replay/BoundedBuffer.hpp \ - rbd_replay/actions.hpp \ - rbd_replay/Deser.hpp \ - rbd_replay/ImageNameMap.hpp \ - rbd_replay/PendingIO.hpp \ - rbd_replay/rbd_loc.hpp \ - rbd_replay/rbd_replay_debug.hpp \ - rbd_replay/Replayer.hpp \ - rbd_replay/Ser.hpp - - -rbd_replay_SOURCES = rbd_replay/rbd-replay.cc -rbd_replay_LDADD = $(LIBRBD) \ - $(LIBRADOS) \ - $(CEPH_GLOBAL) \ - librbd_replay.la - -if LINUX -bin_PROGRAMS += rbd-replay -endif #LINUX - -# TODO: See if we need any new dependencies -rbd_replay_prep_SOURCES = rbd_replay/rbd-replay-prep.cc -rbd_replay_prep_LDADD = $(LIBRBD) \ - $(LIBRADOS) \ - $(CEPH_GLOBAL) \ - librbd_replay.la \ - -lbabeltrace \ - -lbabeltrace-ctf \ - -lboost_date_time -bin_PROGRAMS += rbd-replay-prep diff --git a/src/rbd_replay/PendingIO.cc b/src/rbd_replay/PendingIO.cc deleted file mode 100644 index 28ae7a7bfa77..000000000000 --- a/src/rbd_replay/PendingIO.cc +++ /dev/null @@ -1,44 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include "PendingIO.hpp" -#include "rbd_replay_debug.hpp" - - -using namespace std; -using namespace rbd_replay; - -extern "C" -void pending_io_callback(librbd::completion_t cb, void *arg) { - PendingIO *io = (PendingIO*)arg; - io->completed(cb); -} - -PendingIO::PendingIO(action_id_t id, - ActionCtx &worker) - : m_id(id), - m_completion(new librbd::RBD::AioCompletion(this, pending_io_callback)), - m_worker(worker) { - } - -PendingIO::~PendingIO() { - m_completion->release(); -} - -void PendingIO::completed(librbd::completion_t cb) { - dout(ACTION_LEVEL) << "Completed pending IO #" << m_id << dendl; - ssize_t r = m_completion->get_return_value(); - assertf(r >= 0, "id = %d, r = %d", m_id, r); - m_worker.remove_pending(shared_from_this()); -} diff --git a/src/rbd_replay/PendingIO.hpp b/src/rbd_replay/PendingIO.hpp deleted file mode 100644 index 3f0120744e9e..000000000000 --- a/src/rbd_replay/PendingIO.hpp +++ /dev/null @@ -1,55 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef _INCLUDED_RBD_REPLAY_PENDINGIO_HPP -#define _INCLUDED_RBD_REPLAY_PENDINGIO_HPP - -#include -#include "actions.hpp" - -namespace rbd_replay { - -class PendingIO : public boost::enable_shared_from_this { -public: - typedef boost::shared_ptr ptr; - - PendingIO(action_id_t id, - ActionCtx &worker); - - ~PendingIO(); - - void completed(librbd::completion_t cb); - - action_id_t id() const { - return m_id; - } - - ceph::bufferlist &bufferlist() { - return m_bl; - } - - librbd::RBD::AioCompletion &completion() { - return *m_completion; - } - -private: - const action_id_t m_id; - ceph::bufferlist m_bl; - librbd::RBD::AioCompletion *m_completion; - ActionCtx &m_worker; -}; - -} - -#endif diff --git a/src/rbd_replay/Replayer.cc b/src/rbd_replay/Replayer.cc deleted file mode 100644 index 275017c1fa9c..000000000000 --- a/src/rbd_replay/Replayer.cc +++ /dev/null @@ -1,310 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include "Replayer.hpp" -#include -#include -#include -#include "global/global_context.h" -#include "rbd_replay_debug.hpp" - - -using namespace std; -using namespace rbd_replay; - - -Worker::Worker(Replayer &replayer) - : m_replayer(replayer), - m_buffer(100), - m_done(false) { -} - -void Worker::start() { - m_thread = boost::shared_ptr(new boost::thread(boost::bind(&Worker::run, this))); -} - -// Should only be called by StopThreadAction -void Worker::stop() { - m_done = true; -} - -void Worker::join() { - m_thread->join(); -} - -void Worker::send(Action::ptr action) { - assert(action); - m_buffer.push_front(action); -} - -void Worker::add_pending(PendingIO::ptr io) { - assert(io); - boost::mutex::scoped_lock lock(m_pending_ios_mutex); - assertf(m_pending_ios.count(io->id()) == 0, "id = %d", io->id()); - m_pending_ios[io->id()] = io; -} - -void Worker::run() { - dout(THREAD_LEVEL) << "Worker thread started" << dendl; - while (!m_done) { - Action::ptr action; - m_buffer.pop_back(&action); - m_replayer.wait_for_actions(action->predecessors()); - action->perform(*this); - m_replayer.set_action_complete(action->id()); - } - { - boost::mutex::scoped_lock lock(m_pending_ios_mutex); - bool first_time = true; - while (!m_pending_ios.empty()) { - if (!first_time) { - dout(THREAD_LEVEL) << "Worker thread trying to stop, still waiting for " << m_pending_ios.size() << " pending IOs to complete:" << dendl; - pair p; - BOOST_FOREACH(p, m_pending_ios) { - dout(THREAD_LEVEL) << "> " << p.first << dendl; - } - } - m_pending_ios_empty.timed_wait(lock, boost::posix_time::seconds(1)); - first_time = false; - } - } - dout(THREAD_LEVEL) << "Worker thread stopped" << dendl; -} - - -void Worker::remove_pending(PendingIO::ptr io) { - assert(io); - m_replayer.set_action_complete(io->id()); - boost::mutex::scoped_lock lock(m_pending_ios_mutex); - size_t num_erased = m_pending_ios.erase(io->id()); - assertf(num_erased == 1, "id = %d", io->id()); - if (m_pending_ios.empty()) { - m_pending_ios_empty.notify_all(); - } -} - - -librbd::Image* Worker::get_image(imagectx_id_t imagectx_id) { - return m_replayer.get_image(imagectx_id); -} - - -void Worker::put_image(imagectx_id_t imagectx_id, librbd::Image* image) { - assert(image); - m_replayer.put_image(imagectx_id, image); -} - - -void Worker::erase_image(imagectx_id_t imagectx_id) { - m_replayer.erase_image(imagectx_id); -} - - -librbd::RBD* Worker::rbd() { - return m_replayer.get_rbd(); -} - - -librados::IoCtx* Worker::ioctx() { - return m_replayer.get_ioctx(); -} - -void Worker::set_action_complete(action_id_t id) { - m_replayer.set_action_complete(id); -} - -bool Worker::readonly() const { - return m_replayer.readonly(); -} - -rbd_loc Worker::map_image_name(string image_name, string snap_name) const { - return m_replayer.image_name_map().map(rbd_loc("", image_name, snap_name)); -} - - -Replayer::Replayer(int num_action_trackers) - : m_pool_name("rbd"), - m_num_action_trackers(num_action_trackers), - m_action_trackers(new action_tracker_d[m_num_action_trackers]) { - assertf(num_action_trackers > 0, "num_action_trackers = %d", num_action_trackers); -} - -Replayer::~Replayer() { - delete[] m_action_trackers; -} - -Replayer::action_tracker_d &Replayer::tracker_for(action_id_t id) { - return m_action_trackers[id % m_num_action_trackers]; -} - -void Replayer::run(const std::string replay_file) { - { - librados::Rados rados; - rados.init(NULL); - int r = rados.init_with_context(g_ceph_context); - if (r) { - cerr << "Unable to read conf file: " << r << std::endl; - goto out; - } - r = rados.connect(); - if (r) { - cerr << "Unable to connect to Rados: " << r << std::endl; - goto out; - } - m_ioctx = new librados::IoCtx(); - { - r = rados.ioctx_create(m_pool_name.c_str(), *m_ioctx); - if (r) { - cerr << "Unable to create IoCtx: " << r << std::endl; - goto out2; - } - m_rbd = new librbd::RBD(); - map workers; - - ifstream input(replay_file.c_str(), ios::in | ios::binary); - if (!input.is_open()) { - cerr << "Unable to open " << replay_file << std::endl; - exit(1); - } - - Deser deser(input); - while (true) { - Action::ptr action = Action::read_from(deser); - if (!action) { - break; - } - if (action->is_start_thread()) { - Worker *worker = new Worker(*this); - workers[action->thread_id()] = worker; - worker->start(); - } else { - workers[action->thread_id()]->send(action); - } - } - - dout(THREAD_LEVEL) << "Waiting for workers to die" << dendl; - pair w; - BOOST_FOREACH(w, workers) { - w.second->join(); - delete w.second; - } - clear_images(); - delete m_rbd; - m_rbd = NULL; - } - out2: - delete m_ioctx; - m_ioctx = NULL; - } - out: - ; -} - - -librbd::Image* Replayer::get_image(imagectx_id_t imagectx_id) { - boost::shared_lock lock(m_images_mutex); - return m_images[imagectx_id]; -} - -void Replayer::put_image(imagectx_id_t imagectx_id, librbd::Image *image) { - assert(image); - boost::unique_lock lock(m_images_mutex); - assert(m_images.count(imagectx_id) == 0); - m_images[imagectx_id] = image; -} - -void Replayer::erase_image(imagectx_id_t imagectx_id) { - boost::unique_lock lock(m_images_mutex); - delete m_images[imagectx_id]; - m_images.erase(imagectx_id); -} - -void Replayer::set_action_complete(action_id_t id) { - dout(DEPGRAPH_LEVEL) << "ActionTracker::set_complete(" << id << ")" << dendl; - boost::system_time now(boost::get_system_time()); - action_tracker_d &tracker = tracker_for(id); - boost::unique_lock lock(tracker.mutex); - assert(tracker.actions.count(id) == 0); - tracker.actions[id] = now; - tracker.condition.notify_all(); -} - -bool Replayer::is_action_complete(action_id_t id) { - action_tracker_d &tracker = tracker_for(id); - boost::shared_lock lock(tracker.mutex); - return tracker.actions.count(id) > 0; -} - -void Replayer::wait_for_actions(const vector &deps) { - boost::posix_time::ptime release_time(boost::posix_time::neg_infin); - BOOST_FOREACH(const dependency_d &dep, deps) { - dout(DEPGRAPH_LEVEL) << "Waiting for " << dep.id << dendl; - boost::system_time start_time(boost::get_system_time()); - action_tracker_d &tracker = tracker_for(dep.id); - boost::shared_lock lock(tracker.mutex); - bool first_time = true; - while (tracker.actions.count(dep.id) == 0) { - if (!first_time) { - dout(DEPGRAPH_LEVEL) << "Still waiting for " << dep.id << dendl; - } - tracker.condition.timed_wait(lock, boost::posix_time::seconds(1)); - first_time = false; - } - boost::system_time action_completed_time(tracker.actions[dep.id]); - lock.unlock(); - boost::system_time end_time(boost::get_system_time()); - long long micros = (end_time - start_time).total_microseconds(); - dout(DEPGRAPH_LEVEL) << "Finished waiting for " << dep.id << " after " << micros << " microseconds" << dendl; - // Apparently the nanoseconds constructor is optional: - // http://www.boost.org/doc/libs/1_46_0/doc/html/date_time/details.html#compile_options - boost::system_time sub_release_time(action_completed_time + boost::posix_time::microseconds(dep.time_delta * m_latency_multiplier / 1000)); - if (sub_release_time > release_time) { - release_time = sub_release_time; - } - } - if (release_time > boost::get_system_time()) { - dout(SLEEP_LEVEL) << "Sleeping for " << (release_time - boost::get_system_time()).total_microseconds() << " microseconds" << dendl; - boost::this_thread::sleep(release_time); - } -} - -void Replayer::clear_images() { - boost::unique_lock lock(m_images_mutex); - pair p; - BOOST_FOREACH(p, m_images) { - delete p.second; - } - m_images.clear(); -} - -void Replayer::set_latency_multiplier(float f) { - assertf(f >= 0, "f = %f", f); - m_latency_multiplier = f; -} - -bool Replayer::readonly() const { - return m_readonly; -} - -void Replayer::set_readonly(bool readonly) { - m_readonly = readonly; -} - -string Replayer::pool_name() const { - return m_pool_name; -} - -void Replayer::set_pool_name(string pool_name) { - m_pool_name = pool_name; -} diff --git a/src/rbd_replay/Replayer.hpp b/src/rbd_replay/Replayer.hpp deleted file mode 100644 index 53a838d3769d..000000000000 --- a/src/rbd_replay/Replayer.hpp +++ /dev/null @@ -1,155 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef _INCLUDED_RBD_REPLAY_REPLAYER_HPP -#define _INCLUDED_RBD_REPLAY_REPLAYER_HPP - -#include -#include -#include "BoundedBuffer.hpp" -#include "ImageNameMap.hpp" -#include "PendingIO.hpp" - -namespace rbd_replay { - -class Replayer; - -class Worker : public ActionCtx { -public: - explicit Worker(Replayer &replayer); - - void start(); - - // Should only be called by StopThreadAction - void stop(); - - void join(); - - void send(Action::ptr action); - - void add_pending(PendingIO::ptr io); - - void remove_pending(PendingIO::ptr io); - - librbd::Image* get_image(imagectx_id_t imagectx_id); - - void put_image(imagectx_id_t imagectx_id, librbd::Image* image); - - void erase_image(imagectx_id_t imagectx_id); - - librbd::RBD* rbd(); - - librados::IoCtx* ioctx(); - - void set_action_complete(action_id_t id); - - bool readonly() const; - - rbd_loc map_image_name(std::string image_name, std::string snap_name) const; - -private: - void run(); - - Replayer &m_replayer; - BoundedBuffer m_buffer; - boost::shared_ptr m_thread; - std::map m_pending_ios; - boost::mutex m_pending_ios_mutex; - boost::condition m_pending_ios_empty; - bool m_done; -}; - - -class Replayer { -public: - Replayer(int num_action_trackers); - - ~Replayer(); - - void run(const std::string replay_file); - - librbd::RBD* get_rbd() { - return m_rbd; - } - - librados::IoCtx* get_ioctx() { - return m_ioctx; - } - - librbd::Image* get_image(imagectx_id_t imagectx_id); - - void put_image(imagectx_id_t imagectx_id, librbd::Image *image); - - void erase_image(imagectx_id_t imagectx_id); - - void set_action_complete(action_id_t id); - - bool is_action_complete(action_id_t id); - - void wait_for_actions(const std::vector &deps); - - std::string pool_name() const; - - void set_pool_name(std::string pool_name); - - void set_latency_multiplier(float f); - - bool readonly() const; - - void set_readonly(bool readonly); - - void set_image_name_map(const ImageNameMap &map) { - m_image_name_map = map; - } - - const ImageNameMap &image_name_map() const { - return m_image_name_map; - } - -private: - struct action_tracker_d { - // Maps an action ID to the time the action completed - std::map actions; - boost::shared_mutex mutex; - boost::condition condition; - }; - - void clear_images(); - - action_tracker_d &tracker_for(action_id_t id); - - // Disallow assignment and copying - Replayer(const Replayer& rhs); - const Replayer& operator=(const Replayer& rhs); - - librbd::RBD* m_rbd; - librados::IoCtx* m_ioctx; - std::string m_pool_name; - float m_latency_multiplier; - bool m_readonly; - ImageNameMap m_image_name_map; - - std::map m_images; - boost::shared_mutex m_images_mutex; - - // Actions are hashed across the trackers by ID. - // Number of trackers should probably be larger than the number of cores and prime. - // Should definitely be odd. - const int m_num_action_trackers; - action_tracker_d* m_action_trackers; -}; - -} - -#endif diff --git a/src/rbd_replay/Ser.cc b/src/rbd_replay/Ser.cc deleted file mode 100644 index 97a63cdcd5d8..000000000000 --- a/src/rbd_replay/Ser.cc +++ /dev/null @@ -1,53 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include "Ser.hpp" -#include -#include -#include - - -rbd_replay::Ser::Ser(std::ostream &out) - : m_out(out) { -} - -void rbd_replay::Ser::write_uint8_t(uint8_t data) { - m_out.write(reinterpret_cast(&data), sizeof(data)); -} - -void rbd_replay::Ser::write_uint16_t(uint16_t data) { - data = htons(data); - m_out.write(reinterpret_cast(&data), sizeof(data)); -} - -void rbd_replay::Ser::write_uint32_t(uint32_t data) { - data = htonl(data); - m_out.write(reinterpret_cast(&data), sizeof(data)); -} - -void rbd_replay::Ser::write_uint64_t(uint64_t data) { -#if __BYTE_ORDER == __LITTLE_ENDIAN - data = (static_cast(htonl(data)) << 32 | htonl(data >> 32)); -#endif - m_out.write(reinterpret_cast(&data), sizeof(data)); -} - -void rbd_replay::Ser::write_string(const std::string& data) { - write_uint32_t(data.length()); - m_out.write(data.data(), data.length()); -} - -void rbd_replay::Ser::write_bool(bool data) { - write_uint8_t(data ? 1 : 0); -} diff --git a/src/rbd_replay/Ser.hpp b/src/rbd_replay/Ser.hpp deleted file mode 100644 index 2bada8f70bc2..000000000000 --- a/src/rbd_replay/Ser.hpp +++ /dev/null @@ -1,45 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef _INCLUDED_RBD_REPLAY_SER_HPP -#define _INCLUDED_RBD_REPLAY_SER_HPP - -#include -#include - -namespace rbd_replay { - -class Ser { -public: - Ser(std::ostream &out); - - void write_uint8_t(uint8_t); - - void write_uint16_t(uint16_t); - - void write_uint32_t(uint32_t); - - void write_uint64_t(uint64_t); - - void write_string(const std::string&); - - void write_bool(bool b); - -private: - std::ostream &m_out; -}; - -} - -#endif diff --git a/src/rbd_replay/actions.cc b/src/rbd_replay/actions.cc deleted file mode 100644 index 2e9a4cb27a62..000000000000 --- a/src/rbd_replay/actions.cc +++ /dev/null @@ -1,380 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include "actions.hpp" -#include -#include -#include "PendingIO.hpp" -#include "rbd_replay_debug.hpp" - - -using namespace rbd_replay; -using namespace std; - - -Action::Action(action_id_t id, - thread_id_t thread_id, - int num_successors, - int num_completion_successors, - std::vector &predecessors) - : m_id(id), - m_thread_id(thread_id), - m_num_successors(num_successors), - m_num_completion_successors(num_completion_successors), - m_predecessors(predecessors) { - } - -Action::~Action() { -} - -Action::ptr Action::read_from(Deser &d) { - uint8_t type = d.read_uint8_t(); - if (d.eof()) { - return Action::ptr(); - } - uint32_t ionum = d.read_uint32_t(); - uint64_t thread_id = d.read_uint64_t(); - uint32_t num_successors = d.read_uint32_t(); - uint32_t num_completion_successors = d.read_uint32_t(); - uint32_t num_dependencies = d.read_uint32_t(); - vector deps; - for (unsigned int i = 0; i < num_dependencies; i++) { - uint32_t dep_id = d.read_uint32_t(); - uint64_t time_delta = d.read_uint64_t(); - deps.push_back(dependency_d(dep_id, time_delta)); - } - DummyAction dummy(ionum, thread_id, num_successors, num_completion_successors, deps); - switch (type) { - case IO_START_THREAD: - return StartThreadAction::read_from(dummy, d); - case IO_STOP_THREAD: - return StopThreadAction::read_from(dummy, d); - case IO_READ: - return ReadAction::read_from(dummy, d); - case IO_WRITE: - return WriteAction::read_from(dummy, d); - case IO_ASYNC_READ: - return AioReadAction::read_from(dummy, d); - case IO_ASYNC_WRITE: - return AioWriteAction::read_from(dummy, d); - case IO_OPEN_IMAGE: - return OpenImageAction::read_from(dummy, d); - case IO_CLOSE_IMAGE: - return CloseImageAction::read_from(dummy, d); - default: - cerr << "Invalid action type: " << type << std::endl; - exit(1); - } -} - -std::ostream& Action::dump_action_fields(std::ostream& o) const { - o << "id=" << m_id << ", thread_id=" << m_thread_id << ", predecessors=["; - bool first = true; - BOOST_FOREACH(const dependency_d &d, m_predecessors) { - if (!first) { - o << ","; - } - o << d.id; - first = false; - } - return o << "]"; -} - -std::ostream& rbd_replay::operator<<(std::ostream& o, const Action& a) { - return a.dump(o); -} - - -std::ostream& DummyAction::dump(std::ostream& o) const { - o << "DummyAction["; - dump_action_fields(o); - return o << "]"; -} - - -StartThreadAction::StartThreadAction(Action &src) - : Action(src) { -} - -void StartThreadAction::perform(ActionCtx &ctx) { - cerr << "StartThreadAction should never actually be performed" << std::endl; - exit(1); -} - -bool StartThreadAction::is_start_thread() { - return true; -} - -Action::ptr StartThreadAction::read_from(Action &src, Deser &d) { - return Action::ptr(new StartThreadAction(src)); -} - -std::ostream& StartThreadAction::dump(std::ostream& o) const { - o << "StartThreadAction["; - dump_action_fields(o); - return o << "]"; -} - - -StopThreadAction::StopThreadAction(Action &src) - : Action(src) { -} - -void StopThreadAction::perform(ActionCtx &ctx) { - dout(ACTION_LEVEL) << "Performing " << *this << dendl; - ctx.stop(); -} - -Action::ptr StopThreadAction::read_from(Action &src, Deser &d) { - return Action::ptr(new StopThreadAction(src)); -} - -std::ostream& StopThreadAction::dump(std::ostream& o) const { - o << "StopThreadAction["; - dump_action_fields(o); - return o << "]"; -} - - -AioReadAction::AioReadAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length) - : Action(src), - m_imagectx_id(imagectx_id), - m_offset(offset), - m_length(length) { - } - -Action::ptr AioReadAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - uint64_t offset = d.read_uint64_t(); - uint64_t length = d.read_uint64_t(); - return Action::ptr(new AioReadAction(src, imagectx_id, offset, length)); -} - -void AioReadAction::perform(ActionCtx &worker) { - dout(ACTION_LEVEL) << "Performing " << *this << dendl; - librbd::Image *image = worker.get_image(m_imagectx_id); - assert(image); - PendingIO::ptr io(new PendingIO(pending_io_id(), worker)); - worker.add_pending(io); - int r = image->aio_read(m_offset, m_length, io->bufferlist(), &io->completion()); - assertf(r >= 0, "id = %d, r = %d", id(), r); -} - -std::ostream& AioReadAction::dump(std::ostream& o) const { - o << "AioReadAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << ", offset=" << m_offset << ", length=" << m_length << "]"; -} - - -ReadAction::ReadAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length) - : Action(src), - m_imagectx_id(imagectx_id), - m_offset(offset), - m_length(length) { - } - -Action::ptr ReadAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - uint64_t offset = d.read_uint64_t(); - uint64_t length = d.read_uint64_t(); - return Action::ptr(new ReadAction(src, imagectx_id, offset, length)); -} - -void ReadAction::perform(ActionCtx &worker) { - dout(ACTION_LEVEL) << "Performing " << *this << dendl; - librbd::Image *image = worker.get_image(m_imagectx_id); - PendingIO::ptr io(new PendingIO(pending_io_id(), worker)); - worker.add_pending(io); - ssize_t r = image->read(m_offset, m_length, io->bufferlist()); - assertf(r >= 0, "id = %d, r = %d", id(), r); - worker.remove_pending(io); -} - -std::ostream& ReadAction::dump(std::ostream& o) const { - o << "ReadAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << ", offset=" << m_offset << ", length=" << m_length << "]"; -} - - -AioWriteAction::AioWriteAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length) - : Action(src), - m_imagectx_id(imagectx_id), - m_offset(offset), - m_length(length) { - } - -Action::ptr AioWriteAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - uint64_t offset = d.read_uint64_t(); - uint64_t length = d.read_uint64_t(); - return Action::ptr(new AioWriteAction(src, imagectx_id, offset, length)); -} - -static std::string create_fake_data() { - char data[1 << 20]; // 1 MB - for (unsigned int i = 0; i < sizeof(data); i++) { - data[i] = (char) i; - } - return std::string(data, sizeof(data)); -} - -void AioWriteAction::perform(ActionCtx &worker) { - static const std::string fake_data(create_fake_data()); - dout(ACTION_LEVEL) << "Performing " << *this << dendl; - librbd::Image *image = worker.get_image(m_imagectx_id); - PendingIO::ptr io(new PendingIO(pending_io_id(), worker)); - uint64_t remaining = m_length; - while (remaining > 0) { - uint64_t n = std::min(remaining, fake_data.length()); - io->bufferlist().append(fake_data.data(), n); - remaining -= n; - } - worker.add_pending(io); - if (worker.readonly()) { - worker.remove_pending(io); - } else { - int r = image->aio_write(m_offset, m_length, io->bufferlist(), &io->completion()); - assertf(r >= 0, "id = %d, r = %d", id(), r); - } -} - -std::ostream& AioWriteAction::dump(std::ostream& o) const { - o << "AioWriteAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << ", offset=" << m_offset << ", length=" << m_length << "]"; -} - - -WriteAction::WriteAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length) - : Action(src), - m_imagectx_id(imagectx_id), - m_offset(offset), - m_length(length) { - } - -Action::ptr WriteAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - uint64_t offset = d.read_uint64_t(); - uint64_t length = d.read_uint64_t(); - return Action::ptr(new WriteAction(src, imagectx_id, offset, length)); -} - -void WriteAction::perform(ActionCtx &worker) { - dout(ACTION_LEVEL) << "Performing " << *this << dendl; - librbd::Image *image = worker.get_image(m_imagectx_id); - PendingIO::ptr io(new PendingIO(pending_io_id(), worker)); - worker.add_pending(io); - io->bufferlist().append_zero(m_length); - if (!worker.readonly()) { - ssize_t r = image->write(m_offset, m_length, io->bufferlist()); - assertf(r >= 0, "id = %d, r = %d", id(), r); - } - worker.remove_pending(io); -} - -std::ostream& WriteAction::dump(std::ostream& o) const { - o << "WriteAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << ", offset=" << m_offset << ", length=" << m_length << "]"; -} - - -OpenImageAction::OpenImageAction(Action &src, - imagectx_id_t imagectx_id, - string name, - string snap_name, - bool readonly) - : Action(src), - m_imagectx_id(imagectx_id), - m_name(name), - m_snap_name(snap_name), - m_readonly(readonly) { - } - -Action::ptr OpenImageAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - string name = d.read_string(); - string snap_name = d.read_string(); - bool readonly = d.read_bool(); - return Action::ptr(new OpenImageAction(src, imagectx_id, name, snap_name, readonly)); -} - -void OpenImageAction::perform(ActionCtx &worker) { - dout(ACTION_LEVEL) << "Performing " << *this << dendl; - PendingIO::ptr io(new PendingIO(pending_io_id(), worker)); - worker.add_pending(io); - librbd::Image *image = new librbd::Image(); - librbd::RBD *rbd = worker.rbd(); - rbd_loc name(worker.map_image_name(m_name, m_snap_name)); - int r; - if (m_readonly || worker.readonly()) { - r = rbd->open_read_only(*worker.ioctx(), *image, name.image.c_str(), name.snap.c_str()); - } else { - r = rbd->open(*worker.ioctx(), *image, name.image.c_str(), name.snap.c_str()); - } - if (r) { - cerr << "Unable to open image '" << m_name - << "' with snap '" << m_snap_name - << "' (mapped to '" << name.str() - << "') and readonly " << m_readonly - << ": (" << -r << ") " << strerror(-r) << std::endl; - exit(1); - } - worker.put_image(m_imagectx_id, image); - worker.remove_pending(io); -} - -std::ostream& OpenImageAction::dump(std::ostream& o) const { - o << "OpenImageAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << ", name='" << m_name << "', snap_name='" << m_snap_name << "', readonly=" << m_readonly << "]"; -} - - -CloseImageAction::CloseImageAction(Action &src, - imagectx_id_t imagectx_id) - : Action(src), - m_imagectx_id(imagectx_id) { - } - -Action::ptr CloseImageAction::read_from(Action &src, Deser &d) { - imagectx_id_t imagectx_id = d.read_uint64_t(); - return Action::ptr(new CloseImageAction(src, imagectx_id)); -} - -void CloseImageAction::perform(ActionCtx &worker) { - dout(ACTION_LEVEL) << "Performing " << *this << dendl; - worker.erase_image(m_imagectx_id); - worker.set_action_complete(pending_io_id()); -} - -std::ostream& CloseImageAction::dump(std::ostream& o) const { - o << "CloseImageAction["; - dump_action_fields(o); - return o << ", imagectx_id=" << m_imagectx_id << "]"; -} diff --git a/src/rbd_replay/actions.hpp b/src/rbd_replay/actions.hpp deleted file mode 100644 index 5d3f4dc4cd45..000000000000 --- a/src/rbd_replay/actions.hpp +++ /dev/null @@ -1,307 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef _INCLUDED_RBD_REPLAY_ACTIONS_HPP -#define _INCLUDED_RBD_REPLAY_ACTIONS_HPP - -#include -#include "include/rbd/librbd.hpp" -#include "Deser.hpp" -#include "rbd_loc.hpp" - -namespace rbd_replay { - -typedef uint64_t imagectx_id_t; -typedef uint64_t thread_id_t; - -// Even IDs are normal actions, odd IDs are completions -typedef uint32_t action_id_t; - -struct dependency_d { - action_id_t id; - - uint64_t time_delta; - - dependency_d(action_id_t id, - uint64_t time_delta) - : id(id), - time_delta(time_delta) { - } -}; - -// These are written to files, so don't change existing assignments. -enum io_type { - IO_START_THREAD, - IO_STOP_THREAD, - IO_READ, - IO_WRITE, - IO_ASYNC_READ, - IO_ASYNC_WRITE, - IO_OPEN_IMAGE, - IO_CLOSE_IMAGE, -}; - - -class PendingIO; - - -class ActionCtx { -public: - virtual ~ActionCtx() { - } - - virtual librbd::Image* get_image(imagectx_id_t imagectx_id) = 0; - - virtual void put_image(imagectx_id_t imagectx_id, librbd::Image* image) = 0; - - virtual void erase_image(imagectx_id_t imagectx_id) = 0; - - virtual librbd::RBD* rbd() = 0; - - virtual librados::IoCtx* ioctx() = 0; - - virtual void add_pending(boost::shared_ptr io) = 0; - - virtual bool readonly() const = 0; - - virtual void remove_pending(boost::shared_ptr io) = 0; - - virtual void set_action_complete(action_id_t id) = 0; - - virtual void stop() = 0; - - virtual rbd_loc map_image_name(std::string image_name, std::string snap_name) const = 0; -}; - - -class Action { -public: - typedef boost::shared_ptr ptr; - - Action(action_id_t id, - thread_id_t thread_id, - int num_successors, - int num_completion_successors, - std::vector &predecessors); - - virtual ~Action(); - - virtual void perform(ActionCtx &ctx) = 0; - - action_id_t pending_io_id() { - return m_id + 1; - } - - // There's probably a better way to do this, but oh well. - virtual bool is_start_thread() { - return false; - } - - action_id_t id() const { - return m_id; - } - - thread_id_t thread_id() const { - return m_thread_id; - } - - const std::vector& predecessors() const { - return m_predecessors; - } - - static ptr read_from(Deser &d); - -protected: - std::ostream& dump_action_fields(std::ostream& o) const; - -private: - friend std::ostream& operator<<(std::ostream&, const Action&); - - virtual std::ostream& dump(std::ostream& o) const = 0; - - const action_id_t m_id; - const thread_id_t m_thread_id; - const int m_num_successors; - const int m_num_completion_successors; - const std::vector m_predecessors; -}; - -std::ostream& operator<<(std::ostream& o, const Action& a); - - -class DummyAction : public Action { -public: - DummyAction(action_id_t id, - thread_id_t thread_id, - int num_successors, - int num_completion_successors, - std::vector &predecessors) - : Action(id, thread_id, num_successors, num_completion_successors, predecessors) { - } - - void perform(ActionCtx &ctx) { - } - -private: - std::ostream& dump(std::ostream& o) const; -}; - -class StopThreadAction : public Action { -public: - explicit StopThreadAction(Action &src); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); - -private: - std::ostream& dump(std::ostream& o) const; -}; - - -class AioReadAction : public Action { -public: - AioReadAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); - -private: - std::ostream& dump(std::ostream& o) const; - - imagectx_id_t m_imagectx_id; - uint64_t m_offset; - uint64_t m_length; -}; - - -class ReadAction : public Action { -public: - ReadAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); - -private: - std::ostream& dump(std::ostream& o) const; - - imagectx_id_t m_imagectx_id; - uint64_t m_offset; - uint64_t m_length; -}; - - -class AioWriteAction : public Action { -public: - AioWriteAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); - -private: - std::ostream& dump(std::ostream& o) const; - - imagectx_id_t m_imagectx_id; - uint64_t m_offset; - uint64_t m_length; -}; - - -class WriteAction : public Action { -public: - WriteAction(const Action &src, - imagectx_id_t imagectx_id, - uint64_t offset, - uint64_t length); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); - -private: - std::ostream& dump(std::ostream& o) const; - - imagectx_id_t m_imagectx_id; - uint64_t m_offset; - uint64_t m_length; -}; - - -class OpenImageAction : public Action { -public: - OpenImageAction(Action &src, - imagectx_id_t imagectx_id, - std::string name, - std::string snap_name, - bool readonly); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); - -private: - std::ostream& dump(std::ostream& o) const; - - imagectx_id_t m_imagectx_id; - std::string m_name; - std::string m_snap_name; - bool m_readonly; -}; - - -class CloseImageAction : public Action { -public: - CloseImageAction(Action &src, - imagectx_id_t imagectx_id); - - void perform(ActionCtx &ctx); - - static Action::ptr read_from(Action &src, Deser &d); - -private: - std::ostream& dump(std::ostream& o) const; - - imagectx_id_t m_imagectx_id; -}; - - -class StartThreadAction : public Action { -public: - explicit StartThreadAction(Action &src); - - void perform(ActionCtx &ctx); - - bool is_start_thread(); - - static Action::ptr read_from(Action &src, Deser &d); - -private: - std::ostream& dump(std::ostream& o) const; -}; - -} - -#endif diff --git a/src/rbd_replay/rbd-replay-prep.cc b/src/rbd_replay/rbd-replay-prep.cc deleted file mode 100644 index 9e789a0a4924..000000000000 --- a/src/rbd_replay/rbd-replay-prep.cc +++ /dev/null @@ -1,1000 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -// This code assumes that IO IDs and timestamps are related monotonically. -// In other words, (a.id < b.id) == (a.timestamp < b.timestamp) for all IOs a and b. - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "actions.hpp" -#include "Ser.hpp" - -using namespace std; -using namespace rbd_replay; - -// Allows us to easily expose all the functions to make debugging easier. -#define STATIC static - -class IO; - -typedef set > io_set_t; - -typedef map > io_map_t; - -STATIC void batch_unreachable_from(const io_set_t& deps, const io_set_t& base, io_set_t* unreachable); - -class IO : public boost::enable_shared_from_this { -public: - typedef boost::shared_ptr ptr; - - typedef boost::weak_ptr weak_ptr; - - IO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id, - ptr prev) - : m_ionum(ionum), - m_start_time(start_time), - m_dependencies(io_set_t()), - m_completion(weak_ptr()), - m_num_successors(0), - m_thread_id(thread_id), - m_prev(prev) { - } - - virtual ~IO() { - } - - uint64_t start_time() const { - return m_start_time; - } - - io_set_t& dependencies() { - return m_dependencies; - } - - const io_set_t& dependencies() const { - return m_dependencies; - } - - void add_dependencies(const io_set_t& deps) { - io_set_t base(m_dependencies); - for (io_set_t::const_iterator itr = deps.begin(); itr != deps.end(); ++itr) { - ptr dep(*itr); - for (io_set_t::const_iterator itr2 = dep->m_dependencies.begin(); itr2 != dep->m_dependencies.end(); ++itr2) { - base.insert(*itr2); - } - } - batch_unreachable_from(deps, base, &m_dependencies); - } - - uint64_t num_completion_successors() const { - ptr c(m_completion.lock()); - return c ? c->m_num_successors : 0; - } - - void write_to(Ser& out, io_type iotype) const; - - virtual void write_to(Ser& out) const = 0; - - virtual bool is_completion() const { - return false; - } - - void set_ionum(action_id_t ionum) { - m_ionum = ionum; - } - - action_id_t ionum() const { - return m_ionum; - } - - ptr prev() const { - return m_prev; - } - - void set_num_successors(uint32_t n) { - m_num_successors = n; - } - - uint32_t num_successors() const { - return m_num_successors; - } - - void write_debug_base(ostream& out, string iotype); - - virtual void write_debug(ostream& out) = 0; - - // The result must be stored somewhere, or else m_completion will expire - ptr create_completion(uint64_t start_time, thread_id_t thread_id); - -private: - action_id_t m_ionum; - uint64_t m_start_time; - io_set_t m_dependencies; - boost::weak_ptr m_completion; - uint32_t m_num_successors; - thread_id_t m_thread_id; - ptr m_prev; -}; - -ostream& operator<<(ostream& out, IO::ptr io) { - io->write_debug(out); - return out; -} - -class Thread { -public: - typedef boost::shared_ptr ptr; - - Thread(thread_id_t id, - uint64_t window) - : m_id(id), - m_window(window), - m_pending_io(IO::ptr()), - m_latest_io(IO::ptr()), - m_max_ts(0) { - } - - void insert_ts(uint64_t ts) { - if (m_max_ts == 0 || ts > m_max_ts) { - m_max_ts = ts; - } - } - - uint64_t max_ts() const { - return m_max_ts; - } - - void issued_io(IO::ptr io, const map& threads) { - assert(io); - io_set_t latest_ios; - for (map::const_iterator itr = threads.begin(), end = threads.end(); itr != end; ++itr) { - assertf(itr->second, "id = %ld", itr->first); - ptr thread(itr->second); - if (thread->m_latest_io) { - if (thread->m_latest_io->start_time() + m_window > io->start_time()) { - latest_ios.insert(thread->m_latest_io); - } - } - } - io->add_dependencies(latest_ios); - m_latest_io = io; - m_pending_io = io; - } - - thread_id_t id() const { - return m_id; - } - - IO::ptr pending_io() { - return m_pending_io; - } - -private: - thread_id_t m_id; - uint64_t m_window; - IO::ptr m_pending_io; - IO::ptr m_latest_io; - uint64_t m_max_ts; -}; - -void IO::write_debug_base(ostream& out, string type) { - out << m_ionum << ": " << m_start_time / 1000000.0 << ": " << type << ", thread = " << m_thread_id << ", deps = {"; - bool first = true; - for (io_set_t::iterator itr = m_dependencies.begin(), end = m_dependencies.end(); itr != end; ++itr) { - if (first) { - first = false; - } else { - out << ", "; - } - out << (*itr)->m_ionum << ": " << m_start_time - (*itr)->m_start_time; - } - out << "}, num_successors = " << m_num_successors << ", numCompletionSuccessors = " << num_completion_successors(); -} - -class StartThreadIO : public IO { -public: - StartThreadIO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id) - : IO(ionum, start_time, thread_id, IO::ptr()) { - } - - void write_to(Ser& out) const { - IO::write_to(out, IO_START_THREAD); - } - - void write_debug(ostream& out) { - write_debug_base(out, "start thread"); - } -}; - -class StopThreadIO : public IO { -public: - StopThreadIO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id) - : IO(ionum, start_time, thread_id, IO::ptr()) { - } - - void write_to(Ser& out) const { - IO::write_to(out, IO_STOP_THREAD); - } - - void write_debug(ostream& out) { - write_debug_base(out, "stop thread"); - } -}; - -class ReadIO : public IO { -public: - ReadIO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id, - IO::ptr prev, - imagectx_id_t imagectx, - uint64_t offset, - uint64_t length) - : IO(ionum, start_time, thread_id, prev), - m_imagectx(imagectx), - m_offset(offset), - m_length(length) { - } - - void write_to(Ser& out) const { - IO::write_to(out, IO_READ); - out.write_uint64_t(m_imagectx); - out.write_uint64_t(m_offset); - out.write_uint64_t(m_length); - } - - void write_debug(ostream& out) { - write_debug_base(out, "read"); - out << ", imagectx=" << m_imagectx << ", offset=" << m_offset << ", length=" << m_length << "]"; - } - -private: - imagectx_id_t m_imagectx; - uint64_t m_offset; - uint64_t m_length; -}; - -class WriteIO : public IO { -public: - WriteIO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id, - IO::ptr prev, - imagectx_id_t imagectx, - uint64_t offset, - uint64_t length) - : IO(ionum, start_time, thread_id, prev), - m_imagectx(imagectx), - m_offset(offset), - m_length(length) { - } - - void write_to(Ser& out) const { - IO::write_to(out, IO_WRITE); - out.write_uint64_t(m_imagectx); - out.write_uint64_t(m_offset); - out.write_uint64_t(m_length); - } - - void write_debug(ostream& out) { - write_debug_base(out, "write"); - out << ", imagectx=" << m_imagectx << ", offset=" << m_offset << ", length=" << m_length << "]"; - } - -private: - imagectx_id_t m_imagectx; - uint64_t m_offset; - uint64_t m_length; -}; - -class AioReadIO : public IO { -public: - AioReadIO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id, - IO::ptr prev, - imagectx_id_t imagectx, - uint64_t offset, - uint64_t length) - : IO(ionum, start_time, thread_id, prev), - m_imagectx(imagectx), - m_offset(offset), - m_length(length) { - } - - void write_to(Ser& out) const { - IO::write_to(out, IO_ASYNC_READ); - out.write_uint64_t(m_imagectx); - out.write_uint64_t(m_offset); - out.write_uint64_t(m_length); - } - - void write_debug(ostream& out) { - write_debug_base(out, "aio read"); - out << ", imagectx=" << m_imagectx << ", offset=" << m_offset << ", length=" << m_length << "]"; - } -private: - imagectx_id_t m_imagectx; - uint64_t m_offset; - uint64_t m_length; -}; - -class AioWriteIO : public IO { -public: - AioWriteIO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id, - IO::ptr prev, - imagectx_id_t imagectx, - uint64_t offset, - uint64_t length) - : IO(ionum, start_time, thread_id, prev), - m_imagectx(imagectx), - m_offset(offset), - m_length(length) { - } - - void write_to(Ser& out) const { - IO::write_to(out, IO_ASYNC_WRITE); - out.write_uint64_t(m_imagectx); - out.write_uint64_t(m_offset); - out.write_uint64_t(m_length); - } - - void write_debug(ostream& out) { - write_debug_base(out, "aio write"); - out << ", imagectx=" << m_imagectx << ", offset=" << m_offset << ", length=" << m_length << "]"; - } - -private: - imagectx_id_t m_imagectx; - uint64_t m_offset; - uint64_t m_length; -}; - -class OpenImageIO : public IO { -public: - OpenImageIO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id, - IO::ptr prev, - imagectx_id_t imagectx, - const string& name, - const string& snap_name, - bool readonly) - : IO(ionum, start_time, thread_id, prev), - m_imagectx(imagectx), - m_name(name), - m_snap_name(snap_name), - m_readonly(readonly) { - } - - void write_to(Ser& out) const { - IO::write_to(out, IO_OPEN_IMAGE); - out.write_uint64_t(m_imagectx); - out.write_string(m_name); - out.write_string(m_snap_name); - out.write_bool(m_readonly); - } - - imagectx_id_t imagectx() const { - return m_imagectx; - } - - void write_debug(ostream& out) { - write_debug_base(out, "open image"); - out << ", imagectx=" << m_imagectx << ", name='" << m_name << "', snap_name='" << m_snap_name << "', readonly=" << m_readonly; - } - -private: - imagectx_id_t m_imagectx; - string m_name; - string m_snap_name; - bool m_readonly; -}; - -class CloseImageIO : public IO { -public: - CloseImageIO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id, - IO::ptr prev, - imagectx_id_t imagectx) - : IO(ionum, start_time, thread_id, prev), - m_imagectx(imagectx) { - } - - void write_to(Ser& out) const { - IO::write_to(out, IO_CLOSE_IMAGE); - out.write_uint64_t(m_imagectx); - } - - imagectx_id_t imagectx() const { - return m_imagectx; - } - - void write_debug(ostream& out) { - write_debug_base(out, "close image"); - out << ", imagectx=" << m_imagectx; - } - -private: - imagectx_id_t m_imagectx; -}; - -class CompletionIO : public IO { -public: - CompletionIO(action_id_t ionum, - uint64_t start_time, - thread_id_t thread_id) - : IO(ionum, start_time, thread_id, IO::ptr()) { - } - - void write_to(Ser& out) const { - } - - bool is_completion() const { - return true; - } - - void write_debug(ostream& out) { - write_debug_base(out, "completion"); - } -}; - -STATIC bool compare_io_ptrs_by_start_time(IO::ptr p1, IO::ptr p2) { - return p1->start_time() < p2->start_time(); -} - -void IO::write_to(Ser& out, io_type iotype) const { - out.write_uint8_t(iotype); - out.write_uint32_t(m_ionum); - out.write_uint64_t(m_thread_id); - out.write_uint32_t(m_num_successors); - out.write_uint32_t(num_completion_successors()); - out.write_uint32_t(m_dependencies.size()); - vector deps; - for (io_set_t::const_iterator itr = m_dependencies.begin(), end = m_dependencies.end(); itr != end; ++itr) { - deps.push_back(*itr); - } - sort(deps.begin(), deps.end(), compare_io_ptrs_by_start_time); - for (vector::const_iterator itr = deps.begin(), end = deps.end(); itr != end; ++itr) { - out.write_uint32_t((*itr)->m_ionum); - out.write_uint64_t(m_start_time - (*itr)->m_start_time); - } -} - -IO::ptr IO::create_completion(uint64_t start_time, thread_id_t thread_id) { - assert(!m_completion.lock()); - IO::ptr completion(new CompletionIO(m_ionum + 1, start_time, thread_id)); - m_completion = completion; - completion->m_dependencies.insert(shared_from_this()); - return completion; -} - -STATIC uint64_t min_time(const map& s) { - if (s.empty()) { - return 0; - } - return s.begin()->second->start_time(); -} - -STATIC uint64_t max_time(const map& s) { - if (s.empty()) { - return 0; - } - map::const_iterator itr(s.end()); - --itr; - return itr->second->start_time(); -} - -// TODO: Add unit tests -// Anything in 'deps' which is not reachable from 'base' is added to 'unreachable' -STATIC void batch_unreachable_from(const io_set_t& deps, const io_set_t& base, io_set_t* unreachable) { - if (deps.empty()) { - return; - } - - map searching_for; - for (io_set_t::const_iterator itr = deps.begin(); itr != deps.end(); ++itr) { - searching_for[(*itr)->ionum()] = *itr; - } - - map boundary; - for (io_set_t::const_iterator itr = base.begin(); itr != base.end(); ++itr) { - boundary[(*itr)->ionum()] = *itr; - } - - // The boundary horizon is the maximum timestamp of IOs in the boundary. - // This monotonically decreases, because dependencies (which are added to the set) - // have earlier timestamp than the dependent IOs (which were just removed from the set). - uint64_t boundary_horizon = max_time(boundary); - - for (io_map_t::iterator itr = searching_for.begin(); itr != searching_for.end(); ) { - if (boundary_horizon >= itr->second->start_time()) { - break; - } - unreachable->insert(itr->second); - searching_for.erase(itr++); - } - if (searching_for.empty()) { - return; - } - - // The searching horizon is the minimum timestamp of IOs in the searching set. - // This monotonically increases, because elements are only removed from the set. - uint64_t searching_horizon = min_time(searching_for); - - while (!boundary.empty()) { - // Take an IO from the end, which has the highest timestamp. - // This reduces the boundary horizon as early as possible, - // which means we can short cut as soon as possible. - map >::iterator b_itr(boundary.end()); - --b_itr; - boost::shared_ptr io(b_itr->second); - boundary.erase(b_itr); - - for (io_set_t::const_iterator itr = io->dependencies().begin(), end = io->dependencies().end(); itr != end; ++itr) { - IO::ptr dep(*itr); - assertf(dep->ionum() < io->ionum(), "IO: %d, dependency: %d", io->ionum(), dep->ionum()); - io_map_t::iterator p = searching_for.find(dep->ionum()); - if (p != searching_for.end()) { - searching_for.erase(p); - if (dep->start_time() == searching_horizon) { - searching_horizon = min_time(searching_for); - if (searching_horizon == 0) { - return; - } - } - } - boundary[dep->ionum()] = dep; - } - - boundary_horizon = max_time(boundary); - if (boundary_horizon != 0) { - // Anything we're searching for that has a timestamp greater than the - // boundary horizon will never be found, since the boundary horizon - // falls monotonically. - for (io_map_t::iterator itr = searching_for.begin(); itr != searching_for.end(); ) { - if (boundary_horizon >= itr->second->start_time()) { - break; - } - unreachable->insert(itr->second); - searching_for.erase(itr++); - } - searching_horizon = min_time(searching_for); - if (searching_horizon == 0) { - return; - } - } - } - - // Anything we're still searching for has not been found. - for (io_map_t::iterator itr = searching_for.begin(), end = searching_for.end(); itr != end; ++itr) { - unreachable->insert(itr->second); - } -} - -STATIC void usage(string prog) { - cout << "Usage: " << prog << " [ --window ] " << endl; -} - -__attribute__((noreturn)) STATIC void usage_exit(string prog, string msg) { - cerr << msg << endl; - usage(prog); - exit(1); -} - -class Processor { -public: - Processor() - : m_window(1000000000ULL), // 1 billion nanoseconds, i.e., one second - m_threads(), - m_io_count(0), - m_recent_completions(io_set_t()), - m_open_images(set()), - m_ios(vector()), - m_pending_ios(map()) { - } - - void run(vector args) { - string input_file_name; - string output_file_name; - bool got_input = false; - bool got_output = false; - for (int i = 1, nargs = args.size(); i < nargs; i++) { - const string& arg(args[i]); - if (arg == "--window") { - if (i == nargs - 1) { - usage_exit(args[0], "--window requires an argument"); - } - m_window = (uint64_t)(1e9 * atof(args[++i].c_str())); - } else if (arg.find("--window=") == 0) { - // TODO: test - printf("Arg: '%s'\n", arg.c_str() + sizeof("--window=")); - m_window = (uint64_t)(1e9 * atof(arg.c_str() + sizeof("--window="))); - } else if (arg == "-h" || arg == "--help") { - usage(args[0]); - exit(0); - } else if (arg.find("-") == 0) { - usage_exit(args[0], "Unrecognized argument: " + arg); - } else if (!got_input) { - input_file_name = arg; - got_input = true; - } else if (!got_output) { - output_file_name = arg; - got_output = true; - } else { - usage_exit(args[0], "Too many arguments"); - } - } - if (!got_output) { - usage_exit(args[0], "Not enough arguments"); - } - - struct bt_context *ctx = bt_context_create(); - int trace_handle = bt_context_add_trace(ctx, - input_file_name.c_str(), // path - "ctf", // format - NULL, // packet_seek - NULL, // stream_list - NULL); // metadata - assertf(trace_handle >= 0, "trace_handle = %d", trace_handle); - - uint64_t start_time_ns = bt_trace_handle_get_timestamp_begin(ctx, trace_handle, BT_CLOCK_REAL); - assert(start_time_ns != -1ULL); - - struct bt_ctf_iter *itr = bt_ctf_iter_create(ctx, - NULL, // begin_pos - NULL); // end_pos - assert(itr); - - struct bt_iter *bt_itr = bt_ctf_get_iter(itr); - - uint64_t trace_start = 0; - struct bt_ctf_event *evt; - bool first = true; - while(true) { - evt = bt_ctf_iter_read_event(itr); - if(!evt) { - break; - } - uint64_t ts = bt_ctf_get_timestamp(evt); - assert(ts != -1ULL); - - if (first) { - trace_start = ts; - first = false; - } - ts -= trace_start; - ts += 4; // This is so we have room to insert two events (thread start and open image) at unique timestamps before whatever the first event is. - - process_event(ts, evt); - - int r = bt_iter_next(bt_itr); - assert(!r); - } - - bt_ctf_iter_destroy(itr); - - insert_thread_stops(); - - for (vector::const_iterator itr = m_ios.begin(); itr != m_ios.end(); ++itr) { - IO::ptr io(*itr); - IO::ptr prev(io->prev()); - if (prev) { - // TODO: explain when prev is and isn't a dep - io_set_t::iterator depitr = io->dependencies().find(prev); - if (depitr != io->dependencies().end()) { - io->dependencies().erase(depitr); - } - } - if (io->is_completion()) { - io->dependencies().clear(); - } - for (io_set_t::const_iterator depitr = io->dependencies().begin(); depitr != io->dependencies().end(); ++depitr) { - IO::ptr dep(*depitr); - dep->set_num_successors(dep->num_successors() + 1); - } - } - - ofstream myfile; - myfile.open(output_file_name.c_str(), ios::out | ios::binary); - Ser ser(myfile); - for (vector::iterator itr = m_ios.begin(); itr != m_ios.end(); ++itr) { - (*itr)->write_to(ser); - } - myfile.close(); - } - -private: - void insert_thread_stops() { - sort(m_ios.begin(), m_ios.end(), compare_io_ptrs_by_start_time); - for (map::const_iterator itr = m_threads.begin(), end = m_threads.end(); itr != end; ++itr) { - Thread::ptr thread(itr->second); - const action_id_t none = -1; - action_id_t ionum = none; - action_id_t maxIONum = 0; // only valid if ionum is none - for (vector::const_iterator itr2 = m_ios.begin(); itr2 != m_ios.end(); ++itr2) { - IO::ptr io(*itr2); - if (io->ionum() > maxIONum) { - maxIONum = io->ionum(); - } - if (io->start_time() > thread->max_ts()) { - ionum = io->ionum(); - if (ionum & 1) { - ionum++; - } - break; - } - } - if (ionum == none) { - if (maxIONum & 1) { - maxIONum--; - } - ionum = maxIONum + 2; - } - for (vector::const_iterator itr2 = m_ios.begin(); itr2 != m_ios.end(); ++itr2) { - IO::ptr io(*itr2); - if (io->ionum() >= ionum) { - io->set_ionum(io->ionum() + 2); - } - } - IO::ptr stop_thread_io(new StopThreadIO(ionum, thread->max_ts(), thread->id())); - vector::iterator insertion_point = lower_bound(m_ios.begin(), m_ios.end(), stop_thread_io, compare_io_ptrs_by_start_time); - m_ios.insert(insertion_point, stop_thread_io); - } - } - - void process_event(uint64_t ts, struct bt_ctf_event *evt) { - const char *event_name = bt_ctf_event_name(evt); - const struct bt_definition *scope_context = bt_ctf_get_top_level_scope(evt, - BT_STREAM_EVENT_CONTEXT); - assert(scope_context); - const struct bt_definition *scope_fields = bt_ctf_get_top_level_scope(evt, - BT_EVENT_FIELDS); - assert(scope_fields); - - const struct bt_definition *pthread_id_field = bt_ctf_get_field(evt, scope_context, "pthread_id"); - assert(pthread_id_field); - thread_id_t threadID = bt_ctf_get_uint64(pthread_id_field); - Thread::ptr &thread(m_threads[threadID]); - if (!thread) { - thread.reset(new Thread(threadID, m_window)); - IO::ptr io(new StartThreadIO(next_id(), ts - 4, threadID)); - m_ios.push_back(io); - } - thread->insert_ts(ts); - - class FieldLookup { - public: - FieldLookup(struct bt_ctf_event *evt, - const struct bt_definition *scope) - : m_evt(evt), - m_scope(scope) { - } - - const char* string(const char* name) { - const struct bt_definition *field = bt_ctf_get_field(m_evt, m_scope, name); - assertf(field, "field name = '%s'", name); - const char* c = bt_ctf_get_string(field); - int err = bt_ctf_field_get_error(); - assertf(c && err == 0, "field name = '%s', err = %d", name, err); - return c; - } - - int64_t int64(const char* name) { - const struct bt_definition *field = bt_ctf_get_field(m_evt, m_scope, name); - assertf(field, "field name = '%s'", name); - int64_t val = bt_ctf_get_int64(field); - int err = bt_ctf_field_get_error(); - assertf(err == 0, "field name = '%s', err = %d", name, err); - return val; - } - - uint64_t uint64(const char* name) { - const struct bt_definition *field = bt_ctf_get_field(m_evt, m_scope, name); - assertf(field, "field name = '%s'", name); - uint64_t val = bt_ctf_get_uint64(field); - int err = bt_ctf_field_get_error(); - assertf(err == 0, "field name = '%s', err = %d", name, err); - return val; - } - - private: - struct bt_ctf_event *m_evt; - const struct bt_definition *m_scope; - } fields(evt, scope_fields); - - if (strcmp(event_name, "librbd:read_enter") == 0) { - string name(fields.string("name")); - string snap_name(fields.string("snap_name")); - bool readonly = fields.int64("read_only"); - imagectx_id_t imagectx = fields.uint64("imagectx"); - uint64_t offset = fields.uint64("offset"); - uint64_t length = fields.uint64("length"); - require_image(ts, thread, imagectx, name, snap_name, readonly); - action_id_t ionum = next_id(); - IO::ptr io(new ReadIO(ionum, ts, threadID, thread->pending_io(), imagectx, offset, length)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(io); - } else if (strcmp(event_name, "librbd:open_image_enter") == 0) { - string name(fields.string("name")); - string snap_name(fields.string("snap_name")); - bool readonly = fields.int64("read_only"); - imagectx_id_t imagectx = fields.uint64("imagectx"); - action_id_t ionum = next_id(); - IO::ptr io(new OpenImageIO(ionum, ts, threadID, thread->pending_io(), imagectx, name, snap_name, readonly)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(io); - } else if (strcmp(event_name, "librbd:open_image_exit") == 0) { - IO::ptr completionIO(thread->pending_io()->create_completion(ts, threadID)); - m_ios.push_back(completionIO); - boost::shared_ptr io(boost::dynamic_pointer_cast(thread->pending_io())); - assert(io); - m_open_images.insert(io->imagectx()); - } else if (strcmp(event_name, "librbd:close_image_enter") == 0) { - imagectx_id_t imagectx = fields.uint64("imagectx"); - action_id_t ionum = next_id(); - IO::ptr io(new CloseImageIO(ionum, ts, threadID, thread->pending_io(), imagectx)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(thread->pending_io()); - } else if (strcmp(event_name, "librbd:close_image_exit") == 0) { - IO::ptr completionIO(thread->pending_io()->create_completion(ts, threadID)); - m_ios.push_back(completionIO); - completed(completionIO); - boost::shared_ptr io(boost::dynamic_pointer_cast(thread->pending_io())); - assert(io); - m_open_images.erase(io->imagectx()); - } else if (strcmp(event_name, "librbd:read_exit") == 0) { - IO::ptr completionIO(thread->pending_io()->create_completion(ts, threadID)); - m_ios.push_back(completionIO); - completed(completionIO); - } else if (strcmp(event_name, "librbd:write_enter") == 0) { - string name(fields.string("name")); - string snap_name(fields.string("snap_name")); - bool readonly = fields.int64("read_only"); - uint64_t offset = fields.uint64("off"); - uint64_t length = fields.uint64("buf_len"); - imagectx_id_t imagectx = fields.uint64("imagectx"); - require_image(ts, thread, imagectx, name, snap_name, readonly); - action_id_t ionum = next_id(); - IO::ptr io(new WriteIO(ionum, ts, threadID, thread->pending_io(), imagectx, offset, length)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(io); - } else if (strcmp(event_name, "librbd:write_exit") == 0) { - IO::ptr completionIO(thread->pending_io()->create_completion(ts, threadID)); - m_ios.push_back(completionIO); - completed(completionIO); - } else if (strcmp(event_name, "librbd:aio_read_enter") == 0) { - string name(fields.string("name")); - string snap_name(fields.string("snap_name")); - bool readonly = fields.int64("read_only"); - uint64_t completion = fields.uint64("completion"); - imagectx_id_t imagectx = fields.uint64("imagectx"); - uint64_t offset = fields.uint64("offset"); - uint64_t length = fields.uint64("length"); - require_image(ts, thread, imagectx, name, snap_name, readonly); - action_id_t ionum = next_id(); - IO::ptr io(new AioReadIO(ionum, ts, threadID, thread->pending_io(), imagectx, offset, length)); - io->add_dependencies(m_recent_completions); - m_ios.push_back(io); - thread->issued_io(io, m_threads); - m_pending_ios[completion] = io; - } else if (strcmp(event_name, "librbd:aio_write_enter") == 0) { - string name(fields.string("name")); - string snap_name(fields.string("snap_name")); - bool readonly = fields.int64("read_only"); - uint64_t offset = fields.uint64("off"); - uint64_t length = fields.uint64("len"); - uint64_t completion = fields.uint64("completion"); - imagectx_id_t imagectx = fields.uint64("imagectx"); - require_image(ts, thread, imagectx, name, snap_name, readonly); - action_id_t ionum = next_id(); - IO::ptr io(new AioWriteIO(ionum, ts, threadID, thread->pending_io(), imagectx, offset, length)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(io); - m_pending_ios[completion] = io; - } else if (strcmp(event_name, "librbd:aio_complete_enter") == 0) { - uint64_t completion = fields.uint64("completion"); - map::iterator itr = m_pending_ios.find(completion); - if (itr != m_pending_ios.end()) { - IO::ptr completedIO(itr->second); - m_pending_ios.erase(itr); - IO::ptr completionIO(completedIO->create_completion(ts, threadID)); - m_ios.push_back(completionIO); - completed(completionIO); - } - } - - // cout << ts << "\t" << event_name << "\tthreadID = " << threadID << endl; - } - - action_id_t next_id() { - action_id_t id = m_io_count; - m_io_count += 2; - return id; - } - - void completed(IO::ptr io) { - uint64_t limit = io->start_time() < m_window ? 0 : io->start_time() - m_window; - for (io_set_t::iterator itr = m_recent_completions.begin(); itr != m_recent_completions.end(); ) { - if ((*itr)->start_time() < limit) { - m_recent_completions.erase(itr++); - } else { - ++itr; - } - } - m_recent_completions.insert(io); - } - - void require_image(uint64_t ts, - Thread::ptr thread, - imagectx_id_t imagectx, - const string& name, - const string& snap_name, - bool readonly) { - assert(thread); - if (m_open_images.count(imagectx) > 0) { - return; - } - action_id_t ionum = next_id(); - IO::ptr io(new OpenImageIO(ionum, ts - 2, thread->id(), thread->pending_io(), imagectx, name, snap_name, readonly)); - io->add_dependencies(m_recent_completions); - thread->issued_io(io, m_threads); - m_ios.push_back(io); - IO::ptr completionIO(io->create_completion(ts - 1, thread->id())); - m_ios.push_back(completionIO); - completed(completionIO); - m_open_images.insert(imagectx); - } - - uint64_t m_window; - map m_threads; - uint32_t m_io_count; - io_set_t m_recent_completions; - set m_open_images; - vector m_ios; - - // keyed by completion - map m_pending_ios; -}; - -int main(int argc, char** argv) { - vector args; - for (int i = 0; i < argc; i++) { - args.push_back(string(argv[i])); - } - - Processor p; - p.run(args); -} diff --git a/src/rbd_replay/rbd-replay.cc b/src/rbd_replay/rbd-replay.cc deleted file mode 100644 index f600ead91767..000000000000 --- a/src/rbd_replay/rbd-replay.cc +++ /dev/null @@ -1,116 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include -#include -#include "common/ceph_argparse.h" -#include "global/global_init.h" -#include "Replayer.hpp" -#include "rbd_replay_debug.hpp" -#include "ImageNameMap.hpp" - - -using namespace std; -using namespace rbd_replay; - - -static const char* get_remainder(const char *string, const char *prefix) { - while (*prefix) { - if (*prefix++ != *string++) { - return NULL; - } - } - return string; -} - -static void usage(const char* program) { - cout << "Usage: " << program << " --conf= " << std::endl; - cout << "Options:" << std::endl; - cout << " -p, --pool-name Name of the pool to use. Default: rbd" << std::endl; - cout << " --latency-multiplier Multiplies inter-request latencies. Default: 1" << std::endl; - cout << " --read-only Only perform non-destructive operations." << std::endl; - cout << " --map-image Add a rule to map image names in the trace to" << std::endl; - cout << " image names in the replay cluster." << std::endl; - cout << std::endl; - cout << "Image mapping rules:" << std::endl; - cout << "A rule of image1@snap1=image2@snap2 would map snap1 of image1 to snap2 of" << std::endl; - cout << "image2." << std::endl; -} - -int main(int argc, const char **argv) { - vector args; - - argv_to_vec(argc, argv, args); - env_to_vec(args); - global_init(NULL, args, CEPH_ENTITY_TYPE_CLIENT, CODE_ENVIRONMENT_UTILITY, 0); - - std::vector::iterator i; - string pool_name = "rbd"; - float latency_multiplier = 1; - bool readonly = false; - ImageNameMap image_name_map; - std::string val; - std::ostringstream err; - for (i = args.begin(); i != args.end(); ) { - if (ceph_argparse_double_dash(args, i)) { - break; - } else if (ceph_argparse_witharg(args, i, &val, "-p", "--pool", (char*)NULL)) { - pool_name = val; - } else if (ceph_argparse_withfloat(args, i, &latency_multiplier, &err, "--latency-multiplier", - (char*)NULL)) { - if (!err.str().empty()) { - cerr << err.str() << std::endl; - return 1; - } - } else if (ceph_argparse_flag(args, i, "--read-only", (char*)NULL)) { - readonly = true; - } else if (ceph_argparse_witharg(args, i, &val, "--map-image", (char*)NULL)) { - ImageNameMap::Mapping mapping; - if (image_name_map.parse_mapping(val, &mapping)) { - image_name_map.add_mapping(mapping); - } else { - cerr << "Unable to parse mapping string: '" << val << "'" << std::endl; - return 1; - } - } else if (ceph_argparse_flag(args, i, "-h", "--help", (char*)NULL)) { - usage(argv[0]); - return 0; - } else if (get_remainder(*i, "-")) { - cerr << "Unrecognized argument: " << *i << std::endl; - return 1; - } else { - ++i; - } - } - - common_init_finish(g_ceph_context); - - string replay_file; - if (!args.empty()) { - replay_file = args[0]; - } - - if (replay_file.empty()) { - cerr << "No replay file specified." << std::endl; - return 1; - } - - unsigned int nthreads = boost::thread::hardware_concurrency(); - Replayer replayer(2 * nthreads + 1); - replayer.set_latency_multiplier(latency_multiplier); - replayer.set_pool_name(pool_name); - replayer.set_readonly(readonly); - replayer.set_image_name_map(image_name_map); - replayer.run(replay_file); -} diff --git a/src/rbd_replay/rbd_loc.cc b/src/rbd_replay/rbd_loc.cc deleted file mode 100644 index 86c50ae1a70f..000000000000 --- a/src/rbd_replay/rbd_loc.cc +++ /dev/null @@ -1,130 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include "rbd_loc.hpp" -#include "include/assert.h" - - -using namespace std; -using namespace rbd_replay; - - -rbd_loc::rbd_loc() { -} - -rbd_loc::rbd_loc(string pool, string image, string snap) - : pool(pool), - image(image), - snap(snap) { -} - -bool rbd_loc::parse(string name_string) { - int field = 0; - string fields[3]; - bool read_slash = false; - bool read_at = false; - for (size_t i = 0, n = name_string.length(); i < n; i++) { - char c = name_string[i]; - switch (c) { - case '/': - if (read_slash || read_at) { - return false; - } - assert(field == 0); - field++; - read_slash = true; - break; - case '@': - if (read_at) { - return false; - } - assert(field < 2); - field++; - read_at = true; - break; - case '\\': - if (i == n - 1) { - return false; - } - fields[field].push_back(name_string[++i]); - break; - default: - fields[field].push_back(c); - } - } - - if (read_slash) { - pool = fields[0]; - image = fields[1]; - // note that if read_at is false, then fields[2] is the empty string, - // so this is still correct - snap = fields[2]; - } else { - pool = ""; - image = fields[0]; - // note that if read_at is false, then fields[1] is the empty string, - // so this is still correct - snap = fields[1]; - } - return true; -} - - -static void write(const string &in, string *out) { - for (size_t i = 0, n = in.length(); i < n; i++) { - char c = in[i]; - if (c == '@' || c == '/' || c == '\\') { - out->push_back('\\'); - } - out->push_back(c); - } -} - -string rbd_loc::str() const { - string out; - if (!pool.empty()) { - write(pool, &out); - out.push_back('/'); - } - write(image, &out); - if (!snap.empty()) { - out.push_back('@'); - write(snap, &out); - } - return out; -} - -int rbd_loc::compare(const rbd_loc& rhs) const { - int c = pool.compare(rhs.pool); - if (c) { - return c; - } - c = image.compare(rhs.image); - if (c) { - return c; - } - c = snap.compare(rhs.snap); - if (c) { - return c; - } - return 0; -} - -bool rbd_loc::operator==(const rbd_loc& rhs) const { - return compare(rhs) == 0; -} - -bool rbd_loc::operator<(const rbd_loc& rhs) const { - return compare(rhs) < 0; -} diff --git a/src/rbd_replay/rbd_loc.hpp b/src/rbd_replay/rbd_loc.hpp deleted file mode 100644 index fab159ae7157..000000000000 --- a/src/rbd_replay/rbd_loc.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef _INCLUDED_RBD_REPLAY_RBD_LOC_HPP -#define _INCLUDED_RBD_REPLAY_RBD_LOC_HPP - -#include - -namespace rbd_replay { - -struct rbd_loc { - rbd_loc(); - - rbd_loc(std::string pool, std::string image, std::string snap); - - bool parse(std::string name_string); - - std::string str() const; - - int compare(const rbd_loc& rhs) const; - - bool operator==(const rbd_loc& rhs) const; - - bool operator<(const rbd_loc& rhs) const; - - std::string pool; - - std::string image; - - std::string snap; -}; - -} - -#endif diff --git a/src/rbd_replay/rbd_replay_debug.hpp b/src/rbd_replay/rbd_replay_debug.hpp deleted file mode 100644 index 3b9683f58528..000000000000 --- a/src/rbd_replay/rbd_replay_debug.hpp +++ /dev/null @@ -1,34 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#ifndef _INCLUDED_RBD_REPLAY_DEBUG_H -#define _INCLUDED_RBD_REPLAY_DEBUG_H - -#include "common/debug.h" -#include "include/assert.h" - -namespace rbd_replay { - -static const int ACTION_LEVEL = 11; -static const int DEPGRAPH_LEVEL = 12; -static const int SLEEP_LEVEL = 13; -static const int THREAD_LEVEL = 10; - -} - -#define dout_subsys ceph_subsys_rbd_replay -#undef dout_prefix -#define dout_prefix *_dout << "rbd_replay: " - -#endif diff --git a/src/test/Makefile.am b/src/test/Makefile.am index e534936d9117..58d3a42669de 100644 --- a/src/test/Makefile.am +++ b/src/test/Makefile.am @@ -578,17 +578,6 @@ unittest_on_exit_SOURCES = test/on_exit.cc unittest_on_exit_LDADD = $(PTHREAD_LIBS) check_PROGRAMS += unittest_on_exit -unittest_rbd_replay_SOURCES = test/test_rbd_replay.cc -unittest_rbd_replay_LDADD = $(LIBRBD) \ - $(LIBRADOS) \ - $(CEPH_GLOBAL) \ - -lboost_regex \ - librbd_replay.la \ - $(UNITTEST_LDADD) -unittest_rbd_replay_CXXFLAGS = $(UNITTEST_CXXFLAGS) -check_PROGRAMS += unittest_rbd_replay - - check_SCRIPTS += test/pybind/test_ceph_argparse.py if WITH_RADOSGW diff --git a/src/test/run-cli-tests b/src/test/run-cli-tests index e29ad2086aec..fec60dea8891 100755 --- a/src/test/run-cli-tests +++ b/src/test/run-cli-tests @@ -35,8 +35,6 @@ fi SRCDIR_ABS="$(readlink -f "$SRCDIR")" BUILDDIR_ABS="$(readlink -f "$BUILDDIR")" -FAKE_HOME="$BUILDDIR_ABS/fake_home" -mkdir -p "$FAKE_HOME" # cram doesn't like seeing the same foo.t basename twice on the same # run, so run it once per directory @@ -50,7 +48,6 @@ for tool in "$SRCDIR"/cli/*; do CCACHE_DIR="$CCACHE_DIR" \ CC="$CC" \ CXX="$CXX" \ - HOME="$FAKE_HOME" \ "$SRCDIR/run-cli-tests-maybe-unset-ccache" \ "$CRAM_BIN" -v "$@" --error-dir="$BUILDDIR/cli/$toolname" -- "$tool"/*.t; then FAILED=1 diff --git a/src/test/test_rbd_replay.cc b/src/test/test_rbd_replay.cc deleted file mode 100644 index 4d1fe727c5f7..000000000000 --- a/src/test/test_rbd_replay.cc +++ /dev/null @@ -1,151 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2014 Adam Crume - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#include "common/escape.h" -#include "gtest/gtest.h" -#include -#include -#include "rbd_replay/Deser.hpp" -#include "rbd_replay/ImageNameMap.hpp" -#include "rbd_replay/rbd_loc.hpp" - - -using rbd_replay::ImageNameMap; -using rbd_replay::rbd_loc; - -std::ostream& operator<<(std::ostream& o, const rbd_loc& name) { - return o << "('" << name.pool << "', '" << name.image << "', '" << name.snap << "')"; -} - -static void add_mapping(ImageNameMap *map, std::string mapping_string) { - ImageNameMap::Mapping mapping; - if (!map->parse_mapping(mapping_string, &mapping)) { - ASSERT_TRUE(false) << "Failed to parse mapping string '" << mapping_string << "'"; - } - map->add_mapping(mapping); -} - -TEST(RBDReplay, Deser) { - const char data[] = {1, 2, 3, 4, 0, 0, 0, 5, 'h', 'e', 'l', 'l', 'o', 1, 0}; - const std::string s(data, sizeof(data)); - std::istringstream iss(s); - rbd_replay::Deser deser(iss); - EXPECT_FALSE(deser.eof()); - EXPECT_EQ(0x01020304u, deser.read_uint32_t()); - EXPECT_FALSE(deser.eof()); - EXPECT_EQ("hello", deser.read_string()); - EXPECT_FALSE(deser.eof()); - EXPECT_TRUE(deser.read_bool()); - EXPECT_FALSE(deser.eof()); - EXPECT_FALSE(deser.read_bool()); - EXPECT_FALSE(deser.eof()); - deser.read_uint8_t(); - EXPECT_TRUE(deser.eof()); -} - -TEST(RBDReplay, ImageNameMap) { - ImageNameMap m; - add_mapping(&m, "x@y=y@x"); - add_mapping(&m, "a\\=b@c=h@i"); - add_mapping(&m, "a@b\\=c=j@k"); - add_mapping(&m, "a\\@b@c=d@e"); - add_mapping(&m, "a@b\\@c=f@g"); - add_mapping(&m, "image@snap_1=image_1"); - ImageNameMap::Mapping mapping; - EXPECT_FALSE(m.parse_mapping("bad=@@@", &mapping)); - EXPECT_FALSE(m.parse_mapping("bad==stuff", &mapping)); - EXPECT_EQ(rbd_loc("", "y", "x"), m.map(rbd_loc("", "x", "y"))); - EXPECT_EQ(rbd_loc("", "h", "i"), m.map(rbd_loc("", "a=b", "c"))); - EXPECT_EQ(rbd_loc("", "j", "k"), m.map(rbd_loc("", "a", "b=c"))); - EXPECT_EQ(rbd_loc("", "d", "e"), m.map(rbd_loc("", "a@b", "c"))); - EXPECT_EQ(rbd_loc("", "f", "g"), m.map(rbd_loc("", "a", "b@c"))); - EXPECT_EQ(rbd_loc("", "image_1", ""), m.map(rbd_loc("", "image", "snap_1"))); -} - -TEST(RBDReplay, rbd_loc_str) { - EXPECT_EQ("", rbd_loc("", "", "").str()); - EXPECT_EQ("a/", rbd_loc("a", "", "").str()); - EXPECT_EQ("b", rbd_loc("", "b", "").str()); - EXPECT_EQ("a/b", rbd_loc("a", "b", "").str()); - EXPECT_EQ("@c", rbd_loc("", "", "c").str()); - EXPECT_EQ("a/@c", rbd_loc("a", "", "c").str()); - EXPECT_EQ("b@c", rbd_loc("", "b", "c").str()); - EXPECT_EQ("a/b@c", rbd_loc("a", "b", "c").str()); - EXPECT_EQ("a\\@x/b\\@y@c\\@z", rbd_loc("a@x", "b@y", "c@z").str()); - EXPECT_EQ("a\\/x/b\\/y@c\\/z", rbd_loc("a/x", "b/y", "c/z").str()); - EXPECT_EQ("a\\\\x/b\\\\y@c\\\\z", rbd_loc("a\\x", "b\\y", "c\\z").str()); -} - -TEST(RBDReplay, rbd_loc_parse) { - rbd_loc m("x", "y", "z"); - - EXPECT_TRUE(m.parse("")); - EXPECT_EQ("", m.pool); - EXPECT_EQ("", m.image); - EXPECT_EQ("", m.snap); - - EXPECT_TRUE(m.parse("a/")); - EXPECT_EQ("a", m.pool); - EXPECT_EQ("", m.image); - EXPECT_EQ("", m.snap); - - EXPECT_TRUE(m.parse("b")); - EXPECT_EQ("", m.pool); - EXPECT_EQ("b", m.image); - EXPECT_EQ("", m.snap); - - EXPECT_TRUE(m.parse("a/b")); - EXPECT_EQ("a", m.pool); - EXPECT_EQ("b", m.image); - EXPECT_EQ("", m.snap); - - EXPECT_TRUE(m.parse("@c")); - EXPECT_EQ("", m.pool); - EXPECT_EQ("", m.image); - EXPECT_EQ("c", m.snap); - - EXPECT_TRUE(m.parse("a/@c")); - EXPECT_EQ("a", m.pool); - EXPECT_EQ("", m.image); - EXPECT_EQ("c", m.snap); - - EXPECT_TRUE(m.parse("b@c")); - EXPECT_EQ("", m.pool); - EXPECT_EQ("b", m.image); - EXPECT_EQ("c", m.snap); - - EXPECT_TRUE(m.parse("a/b@c")); - EXPECT_EQ("a", m.pool); - EXPECT_EQ("b", m.image); - EXPECT_EQ("c", m.snap); - - EXPECT_TRUE(m.parse("a\\@x/b\\@y@c\\@z")); - EXPECT_EQ("a@x", m.pool); - EXPECT_EQ("b@y", m.image); - EXPECT_EQ("c@z", m.snap); - - EXPECT_TRUE(m.parse("a\\/x/b\\/y@c\\/z")); - EXPECT_EQ("a/x", m.pool); - EXPECT_EQ("b/y", m.image); - EXPECT_EQ("c/z", m.snap); - - EXPECT_TRUE(m.parse("a\\\\x/b\\\\y@c\\\\z")); - EXPECT_EQ("a\\x", m.pool); - EXPECT_EQ("b\\y", m.image); - EXPECT_EQ("c\\z", m.snap); - - EXPECT_FALSE(m.parse("a@b@c")); - EXPECT_FALSE(m.parse("a/b/c")); - EXPECT_FALSE(m.parse("a@b/c")); -} diff --git a/src/tracing/.gitignore b/src/tracing/.gitignore deleted file mode 100644 index 4bcc583049e1..000000000000 --- a/src/tracing/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.h -*.c diff --git a/src/tracing/Makefile.am b/src/tracing/Makefile.am deleted file mode 100644 index 0e67567e1c9e..000000000000 --- a/src/tracing/Makefile.am +++ /dev/null @@ -1,67 +0,0 @@ -EXTRA_DIST = tracing-common.h - -%.c %.h: %.tp - $(LTTNG_GEN_TP_PROG) $< -o $*.c -o $*.h - -dist_noinst_DATA = \ - librados.tp \ - librbd.tp \ - oprequest.tp \ - osd.tp \ - pg.tp \ - objectstore.tp - -nodist_libosd_tp_la_SOURCES = \ - oprequest.c \ - oprequest.h \ - osd.c \ - osd.h \ - pg.h \ - pg.c -libosd_tp_la_LIBADD = -llttng-ust -ldl -libosd_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -libosd_tp_la_LDFLAGS = - -nodist_librados_tp_la_SOURCES = \ - librados.c \ - librados.h -librados_tp_la_LIBADD = -llttng-ust -ldl -librados_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -librados_tp_la_CFLAGS = -I$(top_srcdir)/src $(AM_CFLAGS) -librados_tp_la_LDFLAGS = - -nodist_librbd_tp_la_SOURCES = \ - librbd.c \ - librbd.h -librbd_tp_la_LIBADD = -llttng-ust -ldl -librbd_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -librbd_tp_la_CFLAGS = -I$(top_srcdir)/src $(AM_CFLAGS) -librbd_tp_la_LDFLAGS = - -nodist_libos_tp_la_SOURCES = \ - objectstore.c \ - objectstore.h -libos_tp_la_LIBADD = -llttng-ust -ldl -libos_tp_la_CPPFLAGS = -DTRACEPOINT_PROBE_DYNAMIC_LINKAGE -libos_tp_la_CFLAGS = -I$(top_srcdir)/src $(AM_CFLAGS) -libos_tp_la_LDFLAGS = - -noinst_LTLIBRARIES = \ - libosd_tp.la \ - librados_tp.la \ - librbd_tp.la \ - libos_tp.la - -BUILT_SOURCES = \ - librados.h \ - librbd.h \ - oprequest.h \ - osd.h \ - pg.h \ - objectstore.h - -CLEANFILES = \ - $(nodist_libosd_tp_la_SOURCES) \ - $(nodist_librados_tp_la_SOURCES) \ - $(nodist_librbd_tp_la_SOURCES) \ - $(nodist_libos_tp_la_SOURCES) diff --git a/src/tracing/README.md b/src/tracing/README.md deleted file mode 100644 index a72f33e9e09d..000000000000 --- a/src/tracing/README.md +++ /dev/null @@ -1,24 +0,0 @@ -Installation -============ - -The LTTng libraries that ship with Ubuntu 12.04 have been very buggy, and the -generated header files using `lttng-gen-tp` have needed to be fixed just to -compile in the Ceph tree. The packages available in Ubuntu 14.04 seem to work -alright, and for older versions please install LTTng from the LTTng PPA. - - https://launchpad.net/~lttng/+archive/ppa - -Then install as normal - - apt-get install lttng-tools liblttng-ust-dev - -Add/Update Provider -================ - -## Create tracepoint definition file - -Add tracepoint definitions for the provider into a `.tp` file. Documentation -on defining a tracepoint can be found in `man lttng-ust`. By convention files -are named according to the logical sub-system they correspond to (e.g. -`mutex.tp`, `pg.tp`). Place the `.tp` file into the `src/tracing` directory -and modify the automake file `src/tracing/Makefile.am` accordingly. diff --git a/src/tracing/librados.tp b/src/tracing/librados.tp deleted file mode 100644 index 9f3e54980f0d..000000000000 --- a/src/tracing/librados.tp +++ /dev/null @@ -1,3057 +0,0 @@ -#include "tracing/tracing-common.h" -#include "include/rados/librados.h" - -TRACEPOINT_EVENT(librados, rados_create_enter, - TP_ARGS( - const char*, id), - TP_FIELDS( - ceph_ctf_string(id, id) - ) -) - -TRACEPOINT_EVENT(librados, rados_create_exit, - TP_ARGS( - int, retval, - rados_t, cluster), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer_hex(rados_t, cluster, cluster) - ) -) - -TRACEPOINT_EVENT(librados, rados_create2_enter, - TP_ARGS( - const char*, clustername, - const char*, name, - uint64_t, flags), - TP_FIELDS( - ceph_ctf_string(clustername, clustername) - ceph_ctf_string(name, name) - ctf_integer_hex(uint64_t, flags, flags) - ) -) - -TRACEPOINT_EVENT(librados, rados_create2_exit, - TP_ARGS( - int, retval, - rados_t, cluster), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer_hex(rados_t, cluster, cluster) - ) -) - -TRACEPOINT_EVENT(librados, rados_create_with_context_enter, - TP_ARGS( - rados_config_t, cct), - TP_FIELDS( - ctf_integer_hex(rados_config_t, cct, cct) - ) -) - -TRACEPOINT_EVENT(librados, rados_create_with_context_exit, - TP_ARGS( - int, retval, - rados_t, cluster), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer_hex(rados_t, cluster, cluster) - ) -) - -TRACEPOINT_EVENT(librados, rados_cct_enter, - TP_ARGS( - rados_t, cluster), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ) -) - -TRACEPOINT_EVENT(librados, rados_cct_exit, - TP_ARGS( - rados_config_t, retval), - TP_FIELDS( - ctf_integer_hex(rados_config_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_connect_enter, - TP_ARGS( - rados_t, cluster), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ) -) - -TRACEPOINT_EVENT(librados, rados_connect_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_shutdown_enter, - TP_ARGS( - rados_t, cluster), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ) -) - -TRACEPOINT_EVENT(librados, rados_shutdown_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_get_instance_id_enter, - TP_ARGS( - rados_t, cluster), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ) -) - -TRACEPOINT_EVENT(librados, rados_get_instance_id_exit, - TP_ARGS( - uint64_t, retval), - TP_FIELDS( - ctf_integer(uint64_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_version_enter, - TP_ARGS( - int*, pmajor, - int*, pminor, - int*, pextra), - TP_FIELDS( - ctf_integer_hex(int*, pmajor, pmajor) - ctf_integer_hex(int*, pminor, pminor) - ctf_integer_hex(int*, pextra, pextra) - ) -) - -TRACEPOINT_EVENT(librados, rados_version_exit, - TP_ARGS( - int, major, - int, minor, - int, extra), - TP_FIELDS( - ctf_integer(int, major, major) - ctf_integer(int, minor, minor) - ctf_integer(int, extra, extra) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_read_file_enter, - TP_ARGS( - rados_t, cluster, - const char*, path_list), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ceph_ctf_string(path_list, path_list) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_read_file_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_parse_argv_enter, - TP_ARGS( - rados_t, cluster, - int, argc), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_integer(int, argc, argc) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_parse_argv_arg, - TP_ARGS( - const char*, arg), - TP_FIELDS( - ceph_ctf_string(arg, arg) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_parse_argv_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_parse_argv_remainder_enter, - TP_ARGS( - rados_t, cluster, - int, argc), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_integer(int, argc, argc) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_parse_argv_remainder_arg, - TP_ARGS( - const char*, arg), - TP_FIELDS( - ceph_ctf_string(arg, arg) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_parse_argv_remainder_remarg, - TP_ARGS( - const char*, remarg), - TP_FIELDS( - ceph_ctf_string(remarg, remarg) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_parse_argv_remainder_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_parse_env_enter, - TP_ARGS( - rados_t, cluster, - const char*, env), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(env, env) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_parse_env_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_set_enter, - TP_ARGS( - rados_t, cluster, - const char*, option, - const char*, value), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ceph_ctf_string(option, option) - ceph_ctf_string(value, value) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_set_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_cluster_stat_enter, - TP_ARGS( - rados_t, cluster), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ) -) - -TRACEPOINT_EVENT(librados, rados_cluster_stat_exit, - TP_ARGS( - int, retval, - uint64_t, kb, - uint64_t, kb_used, - uint64_t, kb_avail, - uint64_t, num_objects), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer(uint64_t, kb, kb) - ctf_integer(uint64_t, kb_used, kb_used) - ctf_integer(uint64_t, kb_avail, kb_avail) - ctf_integer(uint64_t, num_objects, num_objects) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_get_enter, - TP_ARGS( - rados_t, cluster, - const char*, option, - size_t, len), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(option, option) - ctf_integer(size_t, len, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_conf_get_exit, - TP_ARGS( - int, retval, - const char*, value), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_string(value, value) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_lookup_enter, - TP_ARGS( - rados_t, cluster, - const char*, name), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(name, name) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_lookup_exit, - TP_ARGS( - int64_t, retval), - TP_FIELDS( - ctf_integer(int64_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_reverse_lookup_enter, - TP_ARGS( - rados_t, cluster, - int64_t, id, - size_t, maxlen), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_integer(int64_t, id, id) - ctf_integer(size_t, maxlen, maxlen) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_reverse_lookup_exit, - TP_ARGS( - int, retval, - const char*, name), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_string(name, name) - ) -) - -TRACEPOINT_EVENT(librados, rados_cluster_fsid_enter, - TP_ARGS( - rados_t, cluster, - size_t, maxlen), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_integer(size_t, maxlen, maxlen) - ) -) - -TRACEPOINT_EVENT(librados, rados_cluster_fsid_exit, - TP_ARGS( - int, retval, - const char*, fsid), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_string(fsid, fsid) - ) -) - -TRACEPOINT_EVENT(librados, rados_wait_for_latest_osdmap_enter, - TP_ARGS( - rados_t, cluster), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ) -) - -TRACEPOINT_EVENT(librados, rados_wait_for_latest_osdmap_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_list_enter, - TP_ARGS( - rados_t, cluster, - size_t, maxlen), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_integer(size_t, maxlen, maxlen) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_list_pool, - TP_ARGS( - const char*, buf), - TP_FIELDS( - ctf_string(buf, buf) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_list_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ping_monitor_enter, - TP_ARGS( - rados_t, cluster, - const char*, mon_id), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(mon_id, mon_id) - ) -) - -TRACEPOINT_EVENT(librados, rados_ping_monitor_exit, - TP_ARGS( - int, retval, - char const* const*, buf, - size_t*, len), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_sequencep(unsigned char, buf, buf, size_t, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_mon_command_enter, - TP_ARGS( - rados_t, cluster, - size_t, cmdlen, - const char*, inbuf, - size_t, inbuflen), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_integer(size_t, cmdlen, cmdlen) - ceph_ctf_sequence(unsigned char, inbuf, inbuf, size_t, inbuflen) - ) -) - -TRACEPOINT_EVENT(librados, rados_mon_command_cmd, - TP_ARGS( - const char*, cmd), - TP_FIELDS( - ctf_string(cmd, cmd) - ) -) - -TRACEPOINT_EVENT(librados, rados_mon_command_exit, - TP_ARGS( - int, retval, - char**, outbuf, - size_t*, outbuflen, - char**, outs, - size_t*, outslen), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_stringp(outs, outs) - ceph_ctf_sequencep(unsigned char, outbuf, outbuf, size_t, outbuflen) - ceph_ctf_integerp(size_t, outslen, outslen) - ) -) - -TRACEPOINT_EVENT(librados, rados_mon_command_target_enter, - TP_ARGS( - rados_t, cluster, - const char*, name, - size_t, cmdlen, - const char*, inbuf, - size_t, inbuflen), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(name, name) - ctf_integer(size_t, cmdlen, cmdlen) - ceph_ctf_sequence(unsigned char, inbuf, inbuf, size_t, inbuflen) - ) -) - -TRACEPOINT_EVENT(librados, rados_mon_command_target_cmd, - TP_ARGS( - const char*, cmd), - TP_FIELDS( - ctf_string(cmd, cmd) - ) -) - -TRACEPOINT_EVENT(librados, rados_mon_command_target_exit, - TP_ARGS( - int, retval, - char**, outbuf, - size_t*, outbuflen, - char**, outs, - size_t*, outslen), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_stringp(outs, outs) - ceph_ctf_sequencep(unsigned char, outbuf, outbuf, size_t, outbuflen) - ceph_ctf_integerp(size_t, outslen, outslen) - ) -) - -TRACEPOINT_EVENT(librados, rados_osd_command_enter, - TP_ARGS( - rados_t, cluster, - int, osdid, - size_t, cmdlen, - const char*, inbuf, - size_t, inbuflen), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_integer(int, osdid, osdid) - ctf_integer(size_t, cmdlen, cmdlen) - ceph_ctf_sequence(unsigned char, inbuf, inbuf, size_t, inbuflen) - ) -) - -TRACEPOINT_EVENT(librados, rados_osd_command_cmd, - TP_ARGS( - const char*, cmd), - TP_FIELDS( - ctf_string(cmd, cmd) - ) -) - -TRACEPOINT_EVENT(librados, rados_osd_command_exit, - TP_ARGS( - int, retval, - char**, outbuf, - size_t*, outbuflen, - char**, outs, - size_t*, outslen), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_stringp(outs, outs) - ceph_ctf_sequencep(unsigned char, outbuf, outbuf, size_t, outbuflen) - ceph_ctf_integerp(size_t, outslen, outslen) - ) -) - -TRACEPOINT_EVENT(librados, rados_pg_command_enter, - TP_ARGS( - rados_t, cluster, - const char*, pg, - size_t, cmdlen, - const char*, inbuf, - size_t, inbuflen), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(pg, pg) - ctf_integer(size_t, cmdlen, cmdlen) - ceph_ctf_sequence(unsigned char, inbuf, inbuf, size_t, inbuflen) - ) -) - -TRACEPOINT_EVENT(librados, rados_pg_command_cmd, - TP_ARGS( - const char*, cmd), - TP_FIELDS( - ctf_string(cmd, cmd) - ) -) - -TRACEPOINT_EVENT(librados, rados_pg_command_exit, - TP_ARGS( - int, retval, - char**, outbuf, - size_t*, outbuflen, - char**, outs, - size_t*, outslen), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_stringp(outs, outs) - ceph_ctf_sequencep(unsigned char, outbuf, outbuf, size_t, outbuflen) - ceph_ctf_integerp(size_t, outslen, outslen) - ) -) - -TRACEPOINT_EVENT(librados, rados_buffer_free_enter, - TP_ARGS( - void*, buf), - TP_FIELDS( - ctf_integer_hex(void*, buf, buf) - ) -) - -TRACEPOINT_EVENT(librados, rados_buffer_free_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_monitor_log_enter, - TP_ARGS( - rados_t, cluster, - const char*, level, - rados_log_callback_t, callback, - void*, arg), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ceph_ctf_string(level, level) - ctf_integer_hex(rados_log_callback_t, callback, callback) - ctf_integer_hex(void*, arg, arg) - ) -) - -TRACEPOINT_EVENT(librados, rados_monitor_log_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_create_enter, - TP_ARGS( - rados_t, cluster, - const char*, name), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(name, name) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_create_exit, - TP_ARGS( - int, retval, - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_destroy_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_destroy_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_ioctx_pool_stat_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_pool_stat_exit, - TP_ARGS( - int, retval, - struct rados_pool_stat_t*, stats), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer(uint64_t, num_kb, stats->num_kb) - ctf_integer(uint64_t, num_bytes, stats->num_bytes) - ctf_integer(uint64_t, num_objects, stats->num_objects) - ctf_integer(uint64_t, num_object_clones, stats->num_object_clones) - ctf_integer(uint64_t, num_object_copies, stats->num_object_copies) - ctf_integer(uint64_t, num_objects_missing_on_primary, stats->num_objects_missing_on_primary) - ctf_integer(uint64_t, num_objects_unfound, stats->num_objects_unfound) - ctf_integer(uint64_t, num_objects_degraded, stats->num_objects_degraded) - ctf_integer(uint64_t, num_rd, stats->num_rd) - ctf_integer(uint64_t, num_rd_kb, stats->num_rd_kb) - ctf_integer(uint64_t, num_wr, stats->num_wr) - ctf_integer(uint64_t, num_wr_kb, stats->num_wr_kb) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_cct_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_cct_exit, - TP_ARGS( - rados_config_t, retval), - TP_FIELDS( - ctf_integer_hex(rados_config_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_set_read_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - uint64_t, snapid), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_integer(uint64_t, snapid, snapid) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_set_read_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_ioctx_selfmanaged_snap_set_write_ctx_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - uint64_t, seq, - uint64_t*, snaps, - int, num_snaps), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_integer(uint64_t, seq, seq) - ctf_sequence(uint64_t, snaps, snaps, - uint32_t, num_snaps) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_selfmanaged_snap_set_write_ctx_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const void*, buf, - size_t, len, - uint64_t, off), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ceph_ctf_sequence(unsigned char, buf, buf, size_t, len) - ctf_integer(uint64_t, off, off) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_append_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const void*, buf, - size_t, len), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ceph_ctf_sequence(unsigned char, buf, buf, size_t, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_append_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_full_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const void*, buf, - size_t, len), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ceph_ctf_sequence(unsigned char, buf, buf, size_t, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_full_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_clone_range_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, dst, - uint64_t, dst_off, - const char*, src, - uint64_t, src_off, - size_t, len), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(dst, dst) - ctf_integer(uint64_t, dst_off, dst_off) - ctf_string(src, src) - ctf_integer(uint64_t, src_off, src_off) - ctf_integer(size_t, len, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_clone_range_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_trunc_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - uint64_t, size), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer(uint64_t, size, size) - ) -) - -TRACEPOINT_EVENT(librados, rados_trunc_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_remove_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ) -) - -TRACEPOINT_EVENT(librados, rados_remove_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - void*, buf, - size_t, len, - uint64_t, off), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer_hex(void*, buf, buf) - ctf_integer(size_t, len, len) - ctf_integer(size_t, off, off) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_exit, - TP_ARGS( - int, retval, - void*, buf), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_sequence(unsigned char, buf, buf, uint64_t, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_get_last_version_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_get_last_version_exit, - TP_ARGS( - uint64_t, retval), - TP_FIELDS( - ctf_integer(uint64_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_create_enter, - TP_ARGS( - rados_t, cluster, - const char*, name), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(name, name) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_create_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_create_with_auid_enter, - TP_ARGS( - rados_t, cluster, - const char*, name, - uint64_t, auid), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(name, name) - ctf_integer(uint64_t, auid, auid) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_create_with_auid_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_create_with_crush_rule_enter, - TP_ARGS( - rados_t, cluster, - const char*, name, - uint8_t, crush_rule_num), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(name, name) - ctf_integer(uint8_t, crush_rule_num, crush_rule_num) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_create_with_crush_rule_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_create_with_all_enter, - TP_ARGS( - rados_t, cluster, - const char*, name, - uint64_t, auid, - uint8_t, crush_rule_num), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(name, name) - ctf_integer(uint64_t, auid, auid) - ctf_integer(uint8_t, crush_rule_num, crush_rule_num) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_create_with_all_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_delete_enter, - TP_ARGS( - rados_t, cluster, - const char*, name), - TP_FIELDS( - ctf_integer_hex(rados_t, cluster, cluster) - ctf_string(name, name) - ) -) - -TRACEPOINT_EVENT(librados, rados_pool_delete_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_pool_set_auid_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - uint64_t, auid), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_integer(uint64_t, auid, auid) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_pool_set_auid_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_pool_get_auid_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_pool_get_auid_exit, - TP_ARGS( - int, retval, - uint64_t, auid), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer(uint64_t, auid, auid) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_pool_requires_alignment_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_pool_requires_alignment_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_pool_required_alignment_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_pool_required_alignment_exit, - TP_ARGS( - uint64_t, retval), - TP_FIELDS( - ctf_integer(uint64_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_locator_set_key_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, key), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ceph_ctf_string(key, key) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_locator_set_key_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_ioctx_set_namespace_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, nspace), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ceph_ctf_string(nspace, nspace) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_set_namespace_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_ioctx_get_cluster_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_get_cluster_exit, - TP_ARGS( - rados_t, retval), - TP_FIELDS( - ctf_integer_hex(rados_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_get_id_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_get_id_exit, - TP_ARGS( - int64_t, retval), - TP_FIELDS( - ctf_integer_hex(int64_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_get_pool_name_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - unsigned, maxlen), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_integer(unsigned, maxlen, maxlen) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_get_pool_name_exit, - TP_ARGS( - int, retval, - const char*, name), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_string(name, name) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_create_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, snapname), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(snapname, snapname) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_create_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_remove_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, snapname), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(snapname, snapname) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_remove_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_rollback_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, snapname), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_string(snapname, snapname) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_rollback_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_selfmanaged_snap_create_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_selfmanaged_snap_create_exit, - TP_ARGS( - int, retval, - uint64_t, snapid), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer(uint64_t, snapid, snapid) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_selfmanaged_snap_remove_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - uint64_t, snapid), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_integer(uint64_t, snapid, snapid) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_selfmanaged_snap_remove_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_selfmanaged_snap_rollback_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - uint64_t, snapid), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer(uint64_t, snapid, snapid) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_selfmanaged_snap_rollback_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_list_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - int, maxlen), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_integer(int, maxlen, maxlen) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_list_exit, - TP_ARGS( - int, retval, - rados_snap_t*, snaps, - int, num_snaps), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_sequence(rados_snap_t, snaps, snaps, uint32_t, num_snaps) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_lookup_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, name), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(name, name) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_lookup_exit, - TP_ARGS( - int, retval, - uint64_t, snapid), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer(uint64_t, snapid, snapid) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_get_name_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - uint64_t, snapid, - int, maxlen), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_integer(uint64_t, snapid, snapid) - ctf_integer(int, maxlen, maxlen) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_get_name_exit, - TP_ARGS( - int, retval, - const char*, name), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_string(name, name) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_get_stamp_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - uint64_t, snapid), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_integer(uint64_t, snapid, snapid) - ) -) - -TRACEPOINT_EVENT(librados, rados_ioctx_snap_get_stamp_exit, - TP_ARGS( - int, retval, - time_t, time), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_time_t(time, time) - ) -) - -TRACEPOINT_EVENT(librados, rados_getxattr_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, aname, - size_t, len), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_string(aname, aname) - ctf_integer(size_t, len, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_getxattr_exit, - TP_ARGS( - int, retval, - const char*, value, - int, len), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_sequence(unsigned char, value, value, uint64_t, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_getxattrs_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ) -) - -TRACEPOINT_EVENT(librados, rados_getxattrs_exit, - TP_ARGS( - int, retval, - rados_xattrs_iter_t, iter), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer_hex(rados_xattrs_iter_t, iter, iter) - ) -) - -TRACEPOINT_EVENT(librados, rados_getxattrs_next_enter, - TP_ARGS( - rados_xattrs_iter_t, iter), - TP_FIELDS( - ctf_integer_hex(rados_xattrs_iter_t, iter, iter) - ) -) - -TRACEPOINT_EVENT(librados, rados_getxattrs_next_exit, - TP_ARGS( - int, retval, - const char*, aname, - const char*, value, - size_t, len), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_string(aname, aname) - ceph_ctf_sequence(unsigned char, value, value, size_t, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_getxattrs_end_enter, - TP_ARGS( - rados_xattrs_iter_t, iter), - TP_FIELDS( - ctf_integer_hex(rados_xattrs_iter_t, iter, iter) - ) -) - -TRACEPOINT_EVENT(librados, rados_getxattrs_end_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_setxattr_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, aname, - const char*, value, - size_t, len), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_string(aname, aname) - ceph_ctf_sequence(unsigned char, value, value, size_t, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_setxattr_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_rmxattr_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, aname), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_string(aname, aname) - ) -) - -TRACEPOINT_EVENT(librados, rados_rmxattr_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_stat_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ) -) - -TRACEPOINT_EVENT(librados, rados_stat_exit, - TP_ARGS( - int, retval, - uint64_t*, size, - time_t*, mtime), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_integerp(uint64_t, size, size) - ceph_ctf_time_tp(mtime, mtime) - ) -) - -TRACEPOINT_EVENT(librados, rados_tmap_update_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, cmdbuf, - size_t, cmdbuflen), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_sequence(unsigned char, cmdbuf, cmdbuf, size_t, CEPH_MIN(cmdbuflen, CEPH_TRACE_BUF_TRUNC_LEN)) - ctf_integer(size_t, cmdbuflen, cmdbuflen) - ) -) - -TRACEPOINT_EVENT(librados, rados_tmap_update_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_tmap_put_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, buf, - size_t, buflen), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_sequence(unsigned char, buf, buf, size_t, CEPH_MIN(buflen, CEPH_TRACE_BUF_TRUNC_LEN)) - ctf_integer(size_t, buflen, buflen) - ) -) - -TRACEPOINT_EVENT(librados, rados_tmap_put_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_tmap_get_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - size_t, buflen), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer(size_t, buflen, buflen) - ) -) - -TRACEPOINT_EVENT(librados, rados_tmap_get_exit, - TP_ARGS( - int, retval, - char*, buf, - int, len), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_sequence(unsigned char, buf, buf, uint32_t, CEPH_MIN(len, CEPH_TRACE_BUF_TRUNC_LEN)) - ctf_integer(int, len, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_tmap_to_omap_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - char, nullok), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer(char, nullok, nullok) - ) -) - -TRACEPOINT_EVENT(librados, rados_tmap_to_omap_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_exec_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, cls, - const char*, method, - const char*, inbuf, - size_t, in_len, - size_t, out_len), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_string(cls, cls) - ctf_string(method, method) - ceph_ctf_sequence(unsigned char, inbuf, inbuf, size_t, in_len) - ctf_integer(size_t, out_len, out_len) - ) -) - -TRACEPOINT_EVENT(librados, rados_exec_exit, - TP_ARGS( - int, retval, - char*, outbuf, - size_t, len), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_sequence(unsigned char, outbuf, outbuf, size_t, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_objects_list_open_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_objects_list_open_exit, - TP_ARGS( - int, retval, - rados_list_ctx_t, listctx), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer_hex(rados_list_ctx_t, listctx, listctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_objects_list_close_enter, - TP_ARGS( - rados_list_ctx_t, listctx), - TP_FIELDS( - ctf_integer_hex(rados_list_ctx_t, listctx, listctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_objects_list_close_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_objects_list_seek_enter, - TP_ARGS( - rados_list_ctx_t, listctx, - uint32_t, pos), - TP_FIELDS( - ctf_integer_hex(rados_list_ctx_t, listctx, listctx) - ctf_integer(uint32_t, pos, pos) - ) -) - -TRACEPOINT_EVENT(librados, rados_objects_list_seek_exit, - TP_ARGS( - uint32_t, retval), - TP_FIELDS( - ctf_integer(uint32_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_objects_list_get_pg_hash_position_enter, - TP_ARGS( - rados_list_ctx_t, listctx), - TP_FIELDS( - ctf_integer_hex(rados_list_ctx_t, listctx, listctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_objects_list_get_pg_hash_position_exit, - TP_ARGS( - uint32_t, retval), - TP_FIELDS( - ctf_integer(uint32_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_objects_list_next_enter, - TP_ARGS( - rados_list_ctx_t, listctx), - TP_FIELDS( - ctf_integer_hex(rados_list_ctx_t, listctx, listctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_objects_list_next_exit, - TP_ARGS( - int, retval, - const char*, entry, - char const* const*, key), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_string(entry, entry) - ceph_ctf_stringp(key, key) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_create_completion_enter, - TP_ARGS( - void*, cb_arg, - rados_callback_t, cb_complete, - rados_callback_t, cb_safe), - TP_FIELDS( - ctf_integer_hex(void*, cb_arg, cb_arg) - ctf_integer_hex(rados_callback_t, cb_complete, cb_complete) - ctf_integer_hex(rados_callback_t, cb_safe, cb_safe) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_create_completion_exit, - TP_ARGS( - int, retval, - rados_completion_t, completion), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_wait_for_complete_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_wait_for_complete_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_wait_for_safe_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_wait_for_safe_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_is_complete_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_is_complete_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_is_safe_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_is_safe_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_wait_for_complete_and_cb_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_wait_for_complete_and_cb_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_wait_for_safe_and_cb_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_wait_for_safe_and_cb_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_is_complete_and_cb_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_is_complete_and_cb_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_is_safe_and_cb_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_is_safe_and_cb_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_get_return_value_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_get_return_value_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_get_version_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_get_version_exit, - TP_ARGS( - uint64_t, retval), - TP_FIELDS( - ctf_integer(uint64_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_release_enter, - TP_ARGS( - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_release_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_aio_read_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - rados_completion_t, completion, - size_t, len, - uint64_t, off), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer_hex(rados_completion_t, completion, completion) - ctf_integer(size_t, len, len) - ctf_integer(uint64_t, off, off) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_read_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_write_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - rados_completion_t, completion, - const char*, buf, - size_t, len, - uint64_t, off), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer_hex(rados_completion_t, completion, completion) - ctf_sequence(unsigned char, buf, buf, size_t, CEPH_MIN(len, CEPH_TRACE_BUF_TRUNC_LEN)) - ctf_integer(size_t, len, len) - ctf_integer(uint64_t, off, off) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_write_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_append_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - rados_completion_t, completion, - const char*, buf, - size_t, len), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer_hex(rados_completion_t, completion, completion) - ctf_sequence(unsigned char, buf, buf, size_t, CEPH_MIN(len, CEPH_TRACE_BUF_TRUNC_LEN)) - ctf_integer(size_t, len, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_append_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_write_full_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - rados_completion_t, completion, - const char*, buf, - size_t, len), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer_hex(rados_completion_t, completion, completion) - ctf_sequence(unsigned char, buf, buf, size_t, CEPH_MIN(len, CEPH_TRACE_BUF_TRUNC_LEN)) - ctf_integer(size_t, len, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_write_full_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_remove_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_remove_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_flush_async_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_flush_async_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_flush_enter, - TP_ARGS( - rados_ioctx_t, ioctx), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_flush_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_stat_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - rados_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer_hex(rados_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_stat_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_watch_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - uint64_t, version, - rados_watchcb_t, callback, - void*, arg), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer(uint64_t, version, version) - ctf_integer_hex(rados_watchcb_t, callback, callback) - ctf_integer_hex(void*, arg, arg) - ) -) - -TRACEPOINT_EVENT(librados, rados_watch_exit, - TP_ARGS( - int, retval, - uint64_t, handle), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer(uint64_t, handle, handle) - ) -) - -TRACEPOINT_EVENT(librados, rados_unwatch_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - uint64_t, handle), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer(uint64_t, handle, handle) - ) -) - -TRACEPOINT_EVENT(librados, rados_unwatch_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_notify_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - uint64_t, version, - const char*, buf, - int, buf_len), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer(uint64_t, version, version) - ceph_ctf_sequence(unsigned char, buf, buf, size_t, buf_len) - ) -) - -TRACEPOINT_EVENT(librados, rados_notify_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_set_alloc_hint_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - uint64_t, expected_object_size, - uint64_t, expected_write_size), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ctf_integer(uint64_t, expected_object_size, expected_object_size) - ctf_integer(uint64_t, expected_write_size, expected_write_size) - ) -) - -TRACEPOINT_EVENT(librados, rados_set_alloc_hint_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_lock_exclusive_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, name, - const char*, cookie, - const char*, description, - struct timeval*, duration, - uint8_t, flags), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ceph_ctf_string(name, name) - ceph_ctf_string(cookie, cookie) - ceph_ctf_string(description, description) - ceph_ctf_timevalp(duration, duration) - ctf_integer(uint8_t, flags, flags) - ) -) - -TRACEPOINT_EVENT(librados, rados_lock_exclusive_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_lock_shared_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, name, - const char*, cookie, - const char*, tag, - const char*, description, - struct timeval*, duration, - uint8_t, flags), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ceph_ctf_string(name, name) - ceph_ctf_string(cookie, cookie) - ceph_ctf_string(tag, tag) - ceph_ctf_string(description, description) - ceph_ctf_timevalp(duration, duration) - ctf_integer(uint8_t, flags, flags) - ) -) - -TRACEPOINT_EVENT(librados, rados_lock_shared_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_unlock_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, name, - const char*, cookie), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ceph_ctf_string(name, name) - ceph_ctf_string(cookie, cookie) - ) -) - -TRACEPOINT_EVENT(librados, rados_unlock_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_list_lockers_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, name, - size_t, tag_len, - size_t, clients_len, - size_t, cookies_len, - size_t, addrs_len), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ceph_ctf_string(name, name) - ctf_integer(size_t, tag_len, tag_len) - ctf_integer(size_t, clients_len, clients_len) - ctf_integer(size_t, cookies_len, cookies_len) - ctf_integer(size_t, addrs_len, addrs_len) - ) -) - -TRACEPOINT_EVENT(librados, rados_list_lockers_locker, - TP_ARGS( - const char*, client, - const char*, cookie, - const char*, addr), - TP_FIELDS( - ctf_string(client, client) - ctf_string(cookie, cookie) - ctf_string(addr, addr) - ) -) - -TRACEPOINT_EVENT(librados, rados_list_lockers_exit, - TP_ARGS( - int, retval, - int, exclusive, - const char*, tag, - size_t, tag_len, - size_t, clients_len, - size_t, cookies_len, - size_t, addrs_len), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer(int, exclusive, exclusive) - ctf_string(tag, tag) - ctf_integer(size_t, tag_len, tag_len) - ctf_integer(size_t, clients_len, clients_len) - ctf_integer(size_t, cookies_len, cookies_len) - ctf_integer(size_t, addrs_len, addrs_len) - ) -) - -TRACEPOINT_EVENT(librados, rados_break_lock_enter, - TP_ARGS( - rados_ioctx_t, ioctx, - const char*, oid, - const char*, name, - const char*, client, - const char*, cookie), - TP_FIELDS( - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ceph_ctf_string(name, name) - ceph_ctf_string(client, client) - ceph_ctf_string(cookie, cookie) - ) -) - -TRACEPOINT_EVENT(librados, rados_break_lock_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_create_write_op_enter, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_create_write_op_exit, - TP_ARGS( - rados_write_op_t, retval), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_release_write_op_enter, - TP_ARGS( - rados_write_op_t, op), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ) -) - -TRACEPOINT_EVENT(librados, rados_release_write_op_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_set_flags_enter, - TP_ARGS( - rados_write_op_t, op, - int, flags), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ctf_integer(int, flags, flags) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_set_flags_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_assert_exists_enter, - TP_ARGS( - rados_write_op_t, op), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_assert_exists_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_cmpxattr_enter, - TP_ARGS( - rados_write_op_t, op, - const char*, aname, - uint8_t, comparison_operator, - const char*, value, - size_t, value_len), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ceph_ctf_string(aname, aname) - ctf_integer(uint8_t, comparison_operator, comparison_operator) - ceph_ctf_sequence(unsigned char, value, value, size_t, value_len) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_cmpxattr_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_omap_cmp_enter, - TP_ARGS( - rados_write_op_t, op, - const char*, name, - uint8_t, comparison_operator, - const char*, value, - size_t, value_len, - int*, prval), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ceph_ctf_string(name, name) - ctf_integer(uint8_t, comparison_operator, comparison_operator) - ceph_ctf_sequence(unsigned char, value, value, size_t, value_len) - ctf_integer_hex(int*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_omap_cmp_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_setxattr_enter, - TP_ARGS( - rados_write_op_t, op, - const char*, name, - const char*, value, - size_t, value_len), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ceph_ctf_string(name, name) - ceph_ctf_sequence(unsigned char, value, value, size_t, value_len) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_setxattr_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_rmxattr_enter, - TP_ARGS( - rados_write_op_t, op, - const char*, name), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ceph_ctf_string(name, name) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_rmxattr_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_create_enter, - TP_ARGS( - rados_write_op_t, op, - int, exclusive, - const char*, category), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ctf_integer(int, exclusive, exclusive) - ceph_ctf_string(category, category) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_create_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_write_enter, - TP_ARGS( - rados_write_op_t, op, - const char*, buffer, - size_t, len, - uint64_t, offset), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ceph_ctf_sequence(unsigned char, buffer, buffer, size_t, len) - ctf_integer(uint64_t, offset, offset) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_write_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_write_full_enter, - TP_ARGS( - rados_write_op_t, op, - const char*, buffer, - size_t, len), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ceph_ctf_sequence(unsigned char, buffer, buffer, size_t, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_write_full_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_append_enter, - TP_ARGS( - rados_write_op_t, op, - const char*, buffer, - size_t, len), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ceph_ctf_sequence(unsigned char, buffer, buffer, size_t, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_append_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_remove_enter, - TP_ARGS( - rados_write_op_t, op), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_remove_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_truncate_enter, - TP_ARGS( - rados_write_op_t, op, - uint64_t, offset), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ctf_integer(uint64_t, offset, offset) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_truncate_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_zero_enter, - TP_ARGS( - rados_write_op_t, op, - uint64_t, offset, - uint64_t, len), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, len, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_zero_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_exec_enter, - TP_ARGS( - rados_write_op_t, op, - const char*, cls, - const char*, method, - const char*, in_buf, - size_t, in_len, - int*, prval), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ceph_ctf_string(cls, cls) - ceph_ctf_string(method, method) - ceph_ctf_sequence(unsigned char, in_buf, in_buf, size_t, in_len) - ctf_integer_hex(int*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_exec_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_omap_set_enter, - TP_ARGS( - rados_write_op_t, op, - size_t, num), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ctf_integer(size_t, num, num) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_omap_set_entry, - TP_ARGS( - const char*, key, - const char*, value, - size_t, value_len), - TP_FIELDS( - ceph_ctf_string(key, key) - ceph_ctf_sequence(unsigned char, value, value, size_t, value_len) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_omap_set_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_omap_rm_keys_enter, - TP_ARGS( - rados_write_op_t, op, - size_t, num), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ctf_integer(size_t, num, num) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_omap_rm_keys_entry, - TP_ARGS( - const char*, key), - TP_FIELDS( - ceph_ctf_string(key, key) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_omap_rm_keys_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_omap_clear_enter, - TP_ARGS( - rados_write_op_t, op), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_omap_clear_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_set_alloc_hint_enter, - TP_ARGS( - rados_write_op_t, op, - uint64_t, expected_object_size, - uint64_t, expected_write_size), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ctf_integer(uint64_t, expected_object_size, expected_object_size) - ctf_integer(uint64_t, expected_write_size, expected_write_size) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_set_alloc_hint_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_write_op_operate_enter, - TP_ARGS( - rados_write_op_t, op, - rados_ioctx_t, ioctx, - const char*, oid, - time_t*, mtime, - int, flags), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_string(oid, oid) - ceph_ctf_time_tp(mtime, mtime) - ctf_integer_hex(int, flags, flags) - ) -) - -TRACEPOINT_EVENT(librados, rados_write_op_operate_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_write_op_operate_enter, - TP_ARGS( - rados_write_op_t, op, - rados_ioctx_t, ioctx, - rados_completion_t, completion, - const char*, oid, - time_t*, mtime, - int, flags), - TP_FIELDS( - ctf_integer_hex(rados_write_op_t, op, op) - ctf_integer_hex(rados_ioctx_t, ioctx, ioctx) - ctf_integer_hex(rados_completion_t, completion, completion) - ctf_string(oid, oid) - ceph_ctf_time_tp(mtime, mtime) - ctf_integer_hex(int, flags, flags) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_write_op_operate_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_create_read_op_enter, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_create_read_op_exit, - TP_ARGS( - rados_read_op_t, retval), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_release_read_op_enter, - TP_ARGS( - rados_read_op_t, read_op), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ) -) - -TRACEPOINT_EVENT(librados, rados_release_read_op_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_read_op_set_flags_enter, - TP_ARGS( - rados_read_op_t, read_op, - int, flags), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ctf_integer_hex(int, flags, flags) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_set_flags_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_read_op_assert_exists_enter, - TP_ARGS( - rados_read_op_t, read_op), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_assert_exists_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_read_op_cmpxattr_enter, - TP_ARGS( - rados_read_op_t, read_op, - const char*, name, - uint8_t, comparison_operator, - const char*, value, - size_t, value_len), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ctf_string(name, name) - ctf_integer(uint8_t, comparison_operator, comparison_operator) - ceph_ctf_sequence(unsigned char, value, value, size_t, value_len) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_cmpxattr_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_read_op_omap_cmp_enter, - TP_ARGS( - rados_read_op_t, read_op, - const char*, name, - uint8_t, comparison_operator, - const char*, value, - size_t, value_len, - void*, prval), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ctf_string(name, name) - ctf_integer(uint8_t, comparison_operator, comparison_operator) - ceph_ctf_sequence(unsigned char, value, value, size_t, value_len) - ctf_integer_hex(void*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_omap_cmp_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_read_op_stat_enter, - TP_ARGS( - rados_read_op_t, read_op, - void*, psize, - void*, pmtime, - void*, prval), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ctf_integer_hex(void*, psize, psize) - ctf_integer_hex(void*, pmtime, pmtime) - ctf_integer_hex(void*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_stat_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_read_op_read_enter, - TP_ARGS( - rados_read_op_t, read_op, - uint64_t, offset, - size_t, len, - char*, buf, - size_t*, bytes_read, - int*, prval), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ctf_integer(uint64_t, offset, offset) - ctf_integer(size_t, len, len) - ctf_integer_hex(void*, buf, buf) - ctf_integer_hex(void*, bytes_read, bytes_read) - ctf_integer_hex(void*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_read_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_read_op_exec_enter, - TP_ARGS( - rados_read_op_t, read_op, - const char*, cls, - const char*, method, - const char*, in_buf, - size_t, in_len, - char**, out_buf, - size_t*, out_len, - int*, prval), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ceph_ctf_string(cls, cls) - ceph_ctf_string(method, method) - ceph_ctf_sequence(unsigned char, in_buf, in_buf, size_t, in_len) - ctf_integer_hex(void*, out_buf, out_buf) - ctf_integer_hex(void*, out_len, out_len) - ctf_integer_hex(void*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_exec_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_read_op_exec_user_buf_enter, - TP_ARGS( - rados_read_op_t, read_op, - const char*, cls, - const char*, method, - const char*, in_buf, - size_t, in_len, - char*, out_buf, - size_t, out_len, - size_t*, used_len, - int*, prval), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ceph_ctf_string(cls, cls) - ceph_ctf_string(method, method) - ceph_ctf_sequence(unsigned char, in_buf, in_buf, size_t, in_len) - ctf_integer_hex(void*, out_buf, out_buf) - ctf_integer(size_t, out_len, out_len) - ctf_integer_hex(void*, used_len, used_len) - ctf_integer_hex(void*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_exec_user_buf_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_read_op_getxattrs_enter, - TP_ARGS( - rados_read_op_t, read_op, - int*, prval), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ctf_integer_hex(void*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_getxattrs_exit, - TP_ARGS( - rados_xattrs_iter_t, iter), - TP_FIELDS( - ctf_integer_hex(rados_xattrs_iter_t, iter, iter) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_omap_get_vals_enter, - TP_ARGS( - rados_read_op_t, read_op, - const char*, start_after, - const char*, filter_prefix, - uint64_t, max_return, - int*, prval), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ceph_ctf_string(start_after, start_after) - ceph_ctf_string(filter_prefix, filter_prefix) - ctf_integer(uint64_t, max_return, max_return) - ctf_integer_hex(void*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_omap_get_vals_exit, - TP_ARGS( - rados_omap_iter_t, iter), - TP_FIELDS( - ctf_integer_hex(rados_omap_iter_t, iter, iter) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_omap_get_keys_enter, - TP_ARGS( - rados_read_op_t, read_op, - const char*, start_after, - uint64_t, max_return, - int*, prval), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ceph_ctf_string(start_after, start_after) - ctf_integer(uint64_t, max_return, max_return) - ctf_integer_hex(void*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_omap_get_keys_exit, - TP_ARGS( - rados_omap_iter_t, iter), - TP_FIELDS( - ctf_integer_hex(rados_omap_iter_t, iter, iter) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_omap_get_vals_by_keys_enter, - TP_ARGS( - rados_read_op_t, read_op, - char const* const*, keys, - size_t, keys_len, - rados_omap_iter_t*, piter, - int*, prval), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ctf_integer_hex(void*, keys, keys) - ctf_integer(size_t, keys_len, keys_len) - ctf_integer_hex(void*, piter, piter) - ctf_integer_hex(void*, prval, prval) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_omap_get_vals_by_keys_exit, - TP_ARGS( - rados_omap_iter_t, iter), - TP_FIELDS( - ctf_integer_hex(rados_omap_iter_t, iter, iter) - ) -) - -TRACEPOINT_EVENT(librados, rados_omap_get_next_enter, - TP_ARGS( - rados_omap_iter_t, iter), - TP_FIELDS( - ctf_integer_hex(rados_omap_iter_t, iter, iter) - ) -) - -TRACEPOINT_EVENT(librados, rados_omap_get_next_exit, - TP_ARGS( - int, retval, - char**, key, - char**, val, - size_t*, len), - TP_FIELDS( - ctf_integer(int, retval, retval) - ceph_ctf_stringp(key, key) - ceph_ctf_sequencep(unsigned char, val, val, size_t, len) - ) -) - -TRACEPOINT_EVENT(librados, rados_omap_get_end_enter, - TP_ARGS( - rados_omap_iter_t, iter), - TP_FIELDS( - ctf_integer_hex(rados_omap_iter_t, iter, iter) - ) -) - -TRACEPOINT_EVENT(librados, rados_omap_get_end_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librados, rados_read_op_operate_enter, - TP_ARGS( - rados_read_op_t, read_op, - rados_ioctx_t, ctx, - const char*, oid, - int, flags), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ctf_integer_hex(rados_ioctx_t, ctx, ctx) - ctf_string(oid, oid) - ctf_integer(int, flags, flags) - ) -) - -TRACEPOINT_EVENT(librados, rados_read_op_operate_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_read_op_operate_enter, - TP_ARGS( - rados_read_op_t, read_op, - rados_ioctx_t, ctx, - rados_completion_t, completion, - const char*, oid, - int, flags), - TP_FIELDS( - ctf_integer_hex(rados_read_op_t, read_op, read_op) - ctf_integer_hex(rados_ioctx_t, ctx, ctx) - ctf_integer_hex(rados_completion_t, completion, completion) - ceph_ctf_string(oid, oid) - ctf_integer(int, flags, flags) - ) -) - -TRACEPOINT_EVENT(librados, rados_aio_read_op_operate_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) diff --git a/src/tracing/librbd.tp b/src/tracing/librbd.tp deleted file mode 100644 index 7124637464d9..000000000000 --- a/src/tracing/librbd.tp +++ /dev/null @@ -1,546 +0,0 @@ -#include "tracing/tracing-common.h" -#include "include/rbd/librbd.h" - -TRACEPOINT_EVENT(librbd, read_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, snap_name, - char, read_only, - uint64_t, offset, - uint64_t, length), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(snap_name, snap_name) - ctf_integer(char, read_only, read_only) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ) -) - -TRACEPOINT_EVENT(librbd, read_exit, - TP_ARGS( - ssize_t, retval), - TP_FIELDS( - ctf_integer(ssize_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, write_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, snap_name, - char, read_only, - uint64_t, off, - size_t, len, - const char*, buf), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(snap_name, snap_name) - ctf_integer(char, read_only, read_only) - ctf_integer(uint64_t, off, off) - ceph_ctf_sequence(unsigned char, buf, buf, size_t, len) - ) -) - -TRACEPOINT_EVENT(librbd, write_exit, - TP_ARGS( - ssize_t, retval), - TP_FIELDS( - ctf_integer(ssize_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, open_image_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, id, - const char*, snap_name, - int, read_only), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(id, id) - ctf_string(snap_name, snap_name) - ctf_integer(uint8_t, read_only, read_only ? 1 : 0) - ) -) - -TRACEPOINT_EVENT(librbd, open_image_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, close_image_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, id), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(id, id) - ) -) - -TRACEPOINT_EVENT(librbd, close_image_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(librbd, create_enter, - TP_ARGS( - const char*, pool_name, - int64_t, id, - const char*, imgname, - uint64_t, size, - int, order), - TP_FIELDS( - ctf_string(pool_name, pool_name) - ctf_integer(int64_t, id, id) - ctf_string(imgname, imgname) - ctf_integer(uint64_t, size, size) - ctf_integer(int, order, order) - ) -) - -TRACEPOINT_EVENT(librbd, create_exit, - TP_ARGS( - int, retval, - int, order), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer(int, order, order) - ) -) - -TRACEPOINT_EVENT(librbd, create2_enter, - TP_ARGS( - const char*, pool_name, - int64_t, id, - const char*, imgname, - uint64_t, size, - uint64_t, features, - int, order), - TP_FIELDS( - ctf_string(pool_name, pool_name) - ctf_integer(int64_t, id, id) - ctf_string(imgname, imgname) - ctf_integer(uint64_t, size, size) - ctf_integer(uint64_t, features, features) - ctf_integer(int, order, order) - ) -) - -TRACEPOINT_EVENT(librbd, create2_exit, - TP_ARGS( - int, retval, - int, order), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer(int, order, order) - ) -) - -TRACEPOINT_EVENT(librbd, create3_enter, - TP_ARGS( - const char*, pool_name, - int64_t, id, - const char*, imgname, - uint64_t, size, - uint64_t, features, - int, order, - uint64_t, stripe_unit, - uint64_t, stripe_count), - TP_FIELDS( - ctf_string(pool_name, pool_name) - ctf_integer(int64_t, id, id) - ctf_string(imgname, imgname) - ctf_integer(uint64_t, size, size) - ctf_integer(uint64_t, features, features) - ctf_integer(int, order, order) - ctf_integer(uint64_t, stripe_unit, stripe_unit) - ctf_integer(uint64_t, stripe_count, stripe_count) - ) -) - -TRACEPOINT_EVENT(librbd, create3_exit, - TP_ARGS( - int, retval, - int, order), - TP_FIELDS( - ctf_integer(int, retval, retval) - ctf_integer(int, order, order) - ) -) - -TRACEPOINT_EVENT(librbd, remove_enter, - TP_ARGS( - const char*, pool_name, - int64_t, id, - const char*, imgname), - TP_FIELDS( - ctf_string(pool_name, pool_name) - ctf_integer(int64_t, id, id) - ctf_string(imgname, imgname) - ) -) - -TRACEPOINT_EVENT(librbd, remove_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, aio_write_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, snap_name, - char, read_only, - uint64_t, off, - size_t, len, - const char*, buf, - const void*, completion), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(snap_name, snap_name) - ctf_integer(char, read_only, read_only) - ctf_integer(uint64_t, off, off) - ctf_integer(size_t, len, len) - ceph_ctf_sequence(unsigned char, buf, buf, size_t, len) - ctf_integer_hex(const void*, completion, completion) - ) -) - -TRACEPOINT_EVENT(librbd, aio_write_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, aio_read_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, snap_name, - char, read_only, - uint64_t, offset, - uint64_t, length, - const char*, buf, - const void*, completion), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(snap_name, snap_name) - ctf_integer(char, read_only, read_only) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ctf_integer_hex(const void*, completion, completion) - ) -) - -TRACEPOINT_EVENT(librbd, aio_read_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, aio_discard_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, snap_name, - char, read_only, - uint64_t, off, - uint64_t, len, - void*, completion), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(snap_name, snap_name) - ctf_integer(char, read_only, read_only) - ctf_integer(uint64_t, off, off) - ctf_integer(uint64_t, len, len) - ctf_integer_hex(void*, completion, completion) - ) -) - -TRACEPOINT_EVENT(librbd, aio_discard_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, invalidate_cache_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, snap_name, - char, read_only), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(snap_name, snap_name) - ctf_integer(char, read_only, read_only) - ) -) - -TRACEPOINT_EVENT(librbd, invalidate_cache_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, flush_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, snap_name, - char, read_only), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(snap_name, snap_name) - ctf_integer(char, read_only, read_only) - ) -) - -TRACEPOINT_EVENT(librbd, flush_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, aio_flush_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, snap_name, - char, read_only, - const void*, completion), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(snap_name, snap_name) - ctf_integer(char, read_only, read_only) - ctf_integer_hex(const void*, completion, completion) - ) -) - -TRACEPOINT_EVENT(librbd, aio_flush_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, copy_enter, - TP_ARGS( - void*, src_imagectx, - const char*, src_name, - const char*, src_snap_name, - char, src_read_only, - const char*, dst_name), - TP_FIELDS( - ctf_integer_hex(void*, src_imagectx, src_imagectx) - ctf_string(src_name, src_name) - ctf_string(src_snap_name, src_snap_name) - ctf_integer(char, src_read_only, src_read_only) - ctf_string(dst_name, dst_name) - ) -) - -TRACEPOINT_EVENT(librbd, copy_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, copy2_enter, - TP_ARGS( - void*, src_imagectx, - const char*, src_name, - const char*, src_snap_name, - char, src_read_only, - void*, dst_imagectx, - const char*, dst_name, - const char*, dst_snap_name, - char, dst_read_only), - TP_FIELDS( - ctf_integer_hex(void*, src_imagectx, src_imagectx) - ctf_string(src_name, src_name) - ctf_string(src_snap_name, src_snap_name) - ctf_integer(char, src_read_only, src_read_only) - ctf_integer_hex(void*, dst_imagectx, dst_imagectx) - ctf_string(dst_name, dst_name) - ctf_string(dst_snap_name, dst_snap_name) - ctf_integer(char, dst_read_only, dst_read_only) - ) -) - -TRACEPOINT_EVENT(librbd, copy2_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, resize_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, snap_name, - char, read_only, - uint64_t, size), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(snap_name, snap_name) - ctf_integer(char, read_only, read_only) - ctf_integer(uint64_t, size, size) - ) -) - -TRACEPOINT_EVENT(librbd, resize_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, rename_enter, - TP_ARGS( - const char*, pool_name, - uint64_t, id, - const char*, srcname, - const char*, dstname), - TP_FIELDS( - ctf_string(pool_name, pool_name) - ctf_integer(uint64_t, id, id) - ctf_string(srcname, srcname) - ctf_string(dstname, dstname) - ) -) - -TRACEPOINT_EVENT(librbd, rename_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, discard_enter, - TP_ARGS( - void*, imagectx, - const char*, name, - const char*, snap_name, - char, read_only, - uint64_t, off, - uint64_t, len), - TP_FIELDS( - ctf_integer_hex(void*, imagectx, imagectx) - ctf_string(name, name) - ctf_string(snap_name, snap_name) - ctf_integer(char, read_only, read_only) - ctf_integer(uint64_t, off, off) - ctf_integer(uint64_t, len, len) - ) -) - -TRACEPOINT_EVENT(librbd, discard_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, aio_is_complete_enter, - TP_ARGS( - rbd_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rbd_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librbd, aio_is_complete_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, aio_get_return_value_enter, - TP_ARGS( - rbd_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rbd_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librbd, aio_get_return_value_exit, - TP_ARGS( - ssize_t, retval), - TP_FIELDS( - ctf_integer(ssize_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, aio_wait_for_complete_enter, - TP_ARGS( - rbd_completion_t, completion), - TP_FIELDS( - ctf_integer_hex(rbd_completion_t, completion, completion) - ) -) - -TRACEPOINT_EVENT(librbd, aio_wait_for_complete_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(librbd, aio_complete_enter, - TP_ARGS( - rbd_completion_t, completion, - ssize_t, rval), - TP_FIELDS( - ctf_integer_hex(rbd_completion_t, completion, completion) - ctf_integer(ssize_t, rval, rval) - ) -) - -TRACEPOINT_EVENT(librbd, aio_complete_exit, - TP_ARGS(), - TP_FIELDS() -) diff --git a/src/tracing/objectstore.tp b/src/tracing/objectstore.tp deleted file mode 100644 index 9c3c45f9f13f..000000000000 --- a/src/tracing/objectstore.tp +++ /dev/null @@ -1,782 +0,0 @@ -TRACEPOINT_EVENT(objectstore, exists_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, exists_exit, - TP_ARGS( - uint8_t, retval), - TP_FIELDS( - ctf_integer(uint8_t, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, stat_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, stat_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, read_enter, - TP_ARGS( - const char *, coll_name, - uint64_t, offset, - size_t, len), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ctf_integer(uint64_t, offset, offset) - ctf_integer(size_t, len, len) - ) -) - -TRACEPOINT_EVENT(objectstore, read_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, fiemap_enter, - TP_ARGS( - const char *, coll_name, - uint64_t, offset, - size_t, len), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ctf_integer(uint64_t, offset, offset) - ctf_integer(size_t, len, len) - ) -) - -TRACEPOINT_EVENT(objectstore, fiemap_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, getattr_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, getattr_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, getattrs_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, getattrs_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, list_collections_enter, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(objectstore, list_collections_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_stat_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_stat_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_exists_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_exists_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_empty_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_empty_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_list_range_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_list_range_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_list_partial_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_list_partial_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_list_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, collection_list_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_get_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_get_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_get_header_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_get_header_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_get_keys_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_get_keys_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_get_values_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_get_values_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_check_keys_enter, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_check_keys_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, get_omap_iterator, - TP_ARGS( - const char *, coll_name), - TP_FIELDS( - ctf_string(coll_name, coll_name) - ) -) - -TRACEPOINT_EVENT(objectstore, write_enter, - TP_ARGS( - const char *, osr_name, - uint64_t, offset, - uint64_t, length), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ) -) - -TRACEPOINT_EVENT(objectstore, write_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, setallochint_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, setallochint_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, split_coll_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, split_coll_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, split_coll2_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, split_coll2_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_setheader_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_setheader_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_rmkeyrange_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_rmkeyrange_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_rmkeys_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_rmkeys_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_setkeys_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_setkeys_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_clear_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, omap_clear_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, coll_rename_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, coll_rename_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, startsync_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, startsync_exit, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(objectstore, coll_rmattr_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, coll_rmattr_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, coll_setattr_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, coll_setattr_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, coll_move_enter, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(objectstore, coll_move_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, coll_move_rename_enter, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(objectstore, coll_move_rename_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, coll_remove_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, coll_remove_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, coll_add_enter, - TP_ARGS(), - TP_FIELDS() -) - -TRACEPOINT_EVENT(objectstore, coll_add_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, rmcoll_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, rmcoll_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, mkcoll_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, mkcoll_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, clone_range2_enter, - TP_ARGS( - const char *, osr_name, - uint64_t, length), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ctf_integer(uint64_t, length, length) - ) -) - -TRACEPOINT_EVENT(objectstore, clone_range2_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, clone_range_enter, - TP_ARGS( - const char *, osr_name, - uint64_t, length), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ctf_integer(uint64_t, length, length) - ) -) - -TRACEPOINT_EVENT(objectstore, clone_range_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, clone_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, clone_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, rmattrs_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, rmattrs_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, rmattr_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, rmattr_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, setattrs_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, setattrs_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, setattr_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, setattr_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, remove_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, remove_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, truncate_enter, - TP_ARGS( - const char *, osr_name, - uint64_t, offset), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ctf_integer(uint64_t, offset, offset) - ) -) - -TRACEPOINT_EVENT(objectstore, truncate_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, zero_enter, - TP_ARGS( - const char *, osr_name, - uint64_t, offset, - uint64_t, length), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ) -) - -TRACEPOINT_EVENT(objectstore, zero_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) - -TRACEPOINT_EVENT(objectstore, touch_enter, - TP_ARGS( - const char *, osr_name), - TP_FIELDS( - ctf_string(osr_name, osr_name) - ) -) - -TRACEPOINT_EVENT(objectstore, touch_exit, - TP_ARGS( - int, retval), - TP_FIELDS( - ctf_integer(int, retval, retval) - ) -) diff --git a/src/tracing/oprequest.tp b/src/tracing/oprequest.tp deleted file mode 100644 index 4db3030785cc..000000000000 --- a/src/tracing/oprequest.tp +++ /dev/null @@ -1,45 +0,0 @@ -TRACEPOINT_EVENT(oprequest, set_rmw_flags, - TP_ARGS( - // osd_reqid_t - uint8_t, type, - int64_t, num, - uint64_t, tid, - int32_t, inc, - int, flag, - int, old_rmw_flags, - int, new_rmw_flags), - TP_FIELDS( - ctf_integer(uint8_t, type, type) - ctf_integer(int64_t, num, num) - ctf_integer(uint64_t, tid, tid) - ctf_integer(int32_t, inc, inc) - ctf_integer_hex(int, flag, flag) - ctf_integer_hex(int, old_rmw_flags, old_rmw_flags) - ctf_integer_hex(int, new_rmw_flags, new_rmw_flags) - ) -) - -TRACEPOINT_EVENT(oprequest, mark_flag_point, - TP_ARGS( - // osd_reqid_t - uint8_t, type, - int64_t, num, - uint64_t, tid, - int32_t, inc, - int, rmw_flags, - uint8_t, flag, - const char*, msg, - uint8_t, old_hit_flag_points, - uint8_t, new_hit_flag_points), - TP_FIELDS( - ctf_integer(uint8_t, type, type) - ctf_integer(int64_t, num, num) - ctf_integer(uint64_t, tid, tid) - ctf_integer(int32_t, inc, inc) - ctf_integer_hex(int, rmw_flags, rmw_flags) - ctf_integer_hex(uint8_t, flag, flag) - ctf_string(msg, msg) - ctf_integer_hex(uint8_t, old_hit_flag_points, old_hit_flag_points) - ctf_integer_hex(uint8_t, new_hit_flag_points, new_hit_flag_points) - ) -) diff --git a/src/tracing/osd.tp b/src/tracing/osd.tp deleted file mode 100644 index 50ca23c114c1..000000000000 --- a/src/tracing/osd.tp +++ /dev/null @@ -1,756 +0,0 @@ -TRACEPOINT_EVENT(osd, prepare_tx_enter, - TP_ARGS( - // osd_reqid_t - uint8_t, type, - int64_t, num, - uint64_t, tid, - int32_t, inc), - TP_FIELDS( - ctf_integer(uint8_t, type, type) - ctf_integer(int64_t, num, num) - ctf_integer(uint64_t, tid, tid) - ctf_integer(int32_t, inc, inc) - ) -) - -TRACEPOINT_EVENT(osd, prepare_tx_exit, - TP_ARGS( - // osd_reqid_t - uint8_t, type, - int64_t, num, - uint64_t, tid, - int32_t, inc), - TP_FIELDS( - ctf_integer(uint8_t, type, type) - ctf_integer(int64_t, num, num) - ctf_integer(uint64_t, tid, tid) - ctf_integer(int32_t, inc, inc) - ) -) - -TRACEPOINT_EVENT(osd, ms_fast_dispatch, - TP_ARGS( - // osd_reqid_t - uint8_t, type, - int64_t, num, - uint64_t, tid, - int32_t, inc), - TP_FIELDS( - ctf_integer(uint8_t, type, type) - ctf_integer(int64_t, num, num) - ctf_integer(uint64_t, tid, tid) - ctf_integer(int32_t, inc, inc) - ) -) - -TRACEPOINT_EVENT(osd, opwq_process_start, - TP_ARGS( - // osd_reqid_t - uint8_t, type, - int64_t, num, - uint64_t, tid, - int32_t, inc), - TP_FIELDS( - ctf_integer(uint8_t, type, type) - ctf_integer(int64_t, num, num) - ctf_integer(uint64_t, tid, tid) - ctf_integer(int32_t, inc, inc) - ) -) - -TRACEPOINT_EVENT(osd, opwq_process_finish, - TP_ARGS( - // osd_reqid_t - uint8_t, type, - int64_t, num, - uint64_t, tid, - int32_t, inc), - TP_FIELDS( - ctf_integer(uint8_t, type, type) - ctf_integer(int64_t, num, num) - ctf_integer(uint64_t, tid, tid) - ctf_integer(int32_t, inc, inc) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint16_t, op, - const char*, opname, - uint32_t, flags), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer_hex(uint16_t, op, op) - ctf_string(opname, opname) - ctf_integer_hex(uint32_t, flags, flags) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_read, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, osize, - uint32_t, oseq, - uint64_t, offset, - uint64_t, length, - uint64_t, truncate_size, - uint32_t, truncate_seq), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, osize, osize) - ctf_integer(uint32_t, oseq, oseq) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ctf_integer(uint64_t, truncate_size, truncate_size) - ctf_integer(uint32_t, truncate_seq, truncate_seq) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_mapext, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, offset, - uint64_t, length), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_sparse_read, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, osize, - uint32_t, oseq, - uint64_t, offset, - uint64_t, length, - uint64_t, truncate_size, - uint32_t, truncate_seq), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, osize, osize) - ctf_integer(uint32_t, oseq, oseq) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ctf_integer(uint64_t, truncate_size, truncate_size) - ctf_integer(uint32_t, truncate_seq, truncate_seq) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_call, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, class_name, - const char*, method_name), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(class_name, class_name) - ctf_string(method_name, method_name) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_stat, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_isdirty, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_undirty, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_try_flush, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_cache_flush, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_cache_evict, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_getxattr, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, aname), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(aname, aname) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_getxattrs, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_cmpxattr, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, aname), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(aname, aname) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_assert_ver, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, ver), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, ver, ver) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_list_watchers, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_list_snaps, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_assert_src_version, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, ver), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, ver, ver) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_notify, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, timeout), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, timeout, timeout) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_notify_ack, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, notify_id, - uint64_t, watch_cookie, - const char*, watch_cookie_valid), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, notify_id, notify_id) - ctf_integer(uint64_t, watch_cookie, watch_cookie) - ctf_string(watch_cookie_valid, watch_cookie_valid) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_setallochint, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, expected_object_size, - uint64_t, expected_write_size), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, expected_object_size, expected_object_size) - ctf_integer(uint64_t, expected_write_size, expected_write_size) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_write, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, osize, - uint32_t, oseq, - uint64_t, offset, - uint64_t, length, - uint64_t, truncate_size, - uint32_t, truncate_seq), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, osize, osize) - ctf_integer(uint32_t, oseq, oseq) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ctf_integer(uint64_t, truncate_size, truncate_size) - ctf_integer(uint32_t, truncate_seq, truncate_seq) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_writefull, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, osize, - uint64_t, offset, - uint64_t, length), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, osize, osize) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_rollback, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_zero, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, offset, - uint64_t, length), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_create, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_truncate, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, osize, - uint32_t, oseq, - uint64_t, offset, - uint64_t, length, - uint64_t, truncate_size, - uint32_t, truncate_seq), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, osize, osize) - ctf_integer(uint32_t, oseq, oseq) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ctf_integer(uint64_t, truncate_size, truncate_size) - ctf_integer(uint32_t, truncate_seq, truncate_seq) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_delete, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_clonerange, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, offset, - uint64_t, length, - uint64_t, src_offset), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ctf_integer(uint64_t, src_offset, src_offset) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_watch, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, cookie, - uint8_t, flag), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, cookie, cookie) - ctf_integer(uint8_t, flag, flag) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_setxattr, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, aname), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(aname, aname) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_rmxattr, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, aname), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(aname, aname) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_append, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint64_t, osize, - uint32_t, oseq, - uint64_t, offset, - uint64_t, length, - uint64_t, truncate_size, - uint32_t, truncate_seq), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer(uint64_t, osize, osize) - ctf_integer(uint32_t, oseq, oseq) - ctf_integer(uint64_t, offset, offset) - ctf_integer(uint64_t, length, length) - ctf_integer(uint64_t, truncate_size, truncate_size) - ctf_integer(uint32_t, truncate_seq, truncate_seq) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_startsync, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_tmapget, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_tmapput, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_tmapup, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_tmap2omap, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_omapgetkeys, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, start_after, - uint64_t, max_return), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(start_after, start_after) - ctf_integer(uint64_t, max_return, max_return) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_omapgetvals, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, start_after, - uint64_t, max_return, - const char*, filter_prefix), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(start_after, start_after) - ctf_integer(uint64_t, max_return, max_return) - ctf_string(filter_prefix, filter_prefix) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_omapgetheader, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_omapgetvalsbykeys, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, keys), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(keys, keys) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_omap_cmp, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, keys), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(keys, keys) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_omapsetvals, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, keys), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(keys, keys) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_omapsetheader, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_omapclear, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_omaprmkeys, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, keys), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(keys, keys) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_copy_get_classic, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_copy_get, - TP_ARGS( - const char*, oid, - uint64_t, snap), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_copy_from, - TP_ARGS( - const char*, oid, - uint64_t, snap, - const char*, src_name, - int64_t, src_pool, - const char*, src_key, - const char*, src_nspace, - int64_t, src_hash, - uint64_t, src_snapid, - uint64_t, src_version), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_string(src_name, src_name) - ctf_integer(int64_t, src_pool, src_pool) - ctf_string(src_key, src_key) - ctf_string(src_nspace, src_nspace) - ctf_integer(int64_t, src_hash, src_hash) - ctf_integer(uint64_t, src_snapid, src_snapid) - ctf_integer(uint64_t, src_version, src_version) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_pre_unknown, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint16_t, op, - const char*, opname), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer_hex(uint16_t, op, op) - ctf_string(opname, opname) - ) -) - -TRACEPOINT_EVENT(osd, do_osd_op_post, - TP_ARGS( - const char*, oid, - uint64_t, snap, - uint16_t, op, - const char*, opname, - uint32_t, flags, - int, result), - TP_FIELDS( - ctf_string(oid, oid) - ctf_integer(uint64_t, snap, snap) - ctf_integer_hex(uint16_t, op, op) - ctf_string(opname, opname) - ctf_integer_hex(uint32_t, flags, flags) - ctf_integer_hex(int, result, result) - ) -) diff --git a/src/tracing/pg.tp b/src/tracing/pg.tp deleted file mode 100644 index ce1474063291..000000000000 --- a/src/tracing/pg.tp +++ /dev/null @@ -1,16 +0,0 @@ -TRACEPOINT_EVENT(pg, queue_op, - TP_ARGS( - // osd_reqid_t - uint8_t, type, - int64_t, num, - uint64_t, tid, - int32_t, inc, - int, rmw_flags), - TP_FIELDS( - ctf_integer(uint8_t, type, type) - ctf_integer(int64_t, num, num) - ctf_integer(uint64_t, tid, tid) - ctf_integer(int32_t, inc, inc) - ctf_integer(int, rmw_flags, rmw_flags) - ) -) diff --git a/src/tracing/tracing-common.h b/src/tracing/tracing-common.h deleted file mode 100644 index 2ab1b764bfc2..000000000000 --- a/src/tracing/tracing-common.h +++ /dev/null @@ -1,96 +0,0 @@ -#if !defined(TRACING_COMMON_H) -#define TRACING_COMMON_H - -// Amount of buffer data to dump when using ceph_ctf_sequence or ceph_ctf_sequencep. -// If 0, then *_data field is omitted entirely. -#if !defined(CEPH_TRACE_BUF_TRUNC_LEN) -#define CEPH_TRACE_BUF_TRUNC_LEN 0 -#endif - -// TODO: This is GCC-specific. Replace CEPH_MAX and CEPH_MIN with standard macros, if possible. -#define CEPH_MAX(a,b) \ - ({ __typeof__ (a) _a = (a); \ - __typeof__ (b) _b = (b); \ - _a > _b ? _a : _b; }) - -#define CEPH_MIN(a,b) \ - ({ __typeof__ (a) _a = (a); \ - __typeof__ (b) _b = (b); \ - _a < _b ? _a : _b; }) - -// type should be an integer type -// val should have type type* -#define ceph_ctf_integerp(type, field, val) \ - ctf_integer(type, field, (val) == NULL ? 0 : (val)) \ - ctf_integer(uint8_t, field##_isnull, (val) == NULL) - -// val should have type char* -#define ceph_ctf_string(field, val) \ - ctf_string(field, (val) == NULL ? "" : (val)) \ - ctf_integer(uint8_t, field##_isnull, (val) == NULL) - -// val should have type char** -#define ceph_ctf_stringp(field, val) \ - ctf_string(field, ((val) == NULL || *(val) == NULL) ? "" : *(val)) \ - ctf_integer(uint8_t, field##_isnull, (val) == NULL) \ - ctf_integer(uint8_t, field##_data_isnull, (val) == NULL || *(val) == NULL) - -// val should have type type* -// lenval should have type lentype -#if CEPH_TRACE_BUF_TRUNC_LEN > 0 -#define ceph_ctf_sequence(type, field, val, lentype, lenval) \ - ctf_integer_hex(void*, field, val) \ - ctf_sequence(type, field##_data, (val) == NULL ? "" : (val), lentype, (val) == NULL ? 0 : CEPH_MIN((lenval), CEPH_TRACE_BUF_TRUNC_LEN)) \ - ctf_integer(uint8_t, field##_isnull, (val) == NULL) \ - ctf_integer(lentype, field##_len, lenval) -#else -#define ceph_ctf_sequence(type, field, val, lentype, lenval) \ - ctf_integer_hex(void*, field, val) \ - ctf_integer(uint8_t, field##_isnull, (val) == NULL) \ - ctf_integer(lentype, field##_len, lenval) -#endif - -// val should have type type** -// lenval should have type lentype* -#if CEPH_TRACE_BUF_TRUNC_LEN > 0 -#define ceph_ctf_sequencep(type, field, val, lentype, lenval) \ - ctf_integer_hex(void*, field, val) \ - ctf_sequence(type, \ - field##_data, \ - ((val) == NULL || *(val) == NULL) ? "" : *(val), \ - lentype, \ - ((val) == NULL || *(val) == NULL || (lenval) == NULL) ? 0 : CEPH_MIN(*(lenval), CEPH_TRACE_BUF_TRUNC_LEN)) \ - ctf_integer(uint8_t, field##_isnull, (val) == NULL) \ - ctf_integer(uint8_t, field##_data_isnull, ((val) == NULL || *(val) == NULL)) \ - ctf_integer(lentype, field##_len, (lenval) == NULL ? 0 : *(lenval)) \ - ctf_integer(lentype, field##_len_isnull, (lenval) == NULL) -#else -#define ceph_ctf_sequencep(type, field, val, lentype, lenval) \ - ctf_integer_hex(void*, field, val) \ - ctf_integer(uint8_t, field##_isnull, (val) == NULL) \ - ctf_integer(uint8_t, field##_data_isnull, ((val) == NULL || *(val) == NULL)) \ - ctf_integer(lentype, field##_len, (lenval) == NULL ? 0 : *(lenval)) \ - ctf_integer(lentype, field##_len_isnull, (lenval) == NULL) -#endif - -// p should be of type struct timeval* -#define ceph_ctf_timevalp(field, p) \ - ctf_integer(long int, field##_sec, (p) == NULL ? 0 : (p)->tv_sec) \ - ctf_integer(long int, field##_usec, (p) == NULL ? 0 : (p)->tv_usec) \ - ctf_integer(uint8_t, field##_isnull, (p) == NULL) - -// val should be of type time_t -// Currently assumes that time_t is an integer and no more than 64 bits wide. -// This is verified by the configure script. -#define ceph_ctf_time_t(field, val) \ - ctf_integer(uint64_t, field, (uint64_t)(val)) - -// val should be of type time_t* -// Currently assumes that time_t is an integer and no more than 64 bits wide. -// This is verified by the configure script. -#define ceph_ctf_time_tp(field, val) \ - ctf_integer(uint64_t, field, (val) == NULL ? 0 : (uint64_t)(*val)) \ - ctf_integer(uint8_t, field##_isnull, (val) == NULL) - - -#endif /* TRACING_COMMON_H */