From patchwork Wed Feb 25 20:59:27 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Shewmaker X-Patchwork-Id: 5883421 Return-Path: X-Original-To: patchwork-ceph-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 08D77BF440 for ; Wed, 25 Feb 2015 20:59:52 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id F2A062037B for ; Wed, 25 Feb 2015 20:59:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0D5472037E for ; Wed, 25 Feb 2015 20:59:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753545AbbBYU7k (ORCPT ); Wed, 25 Feb 2015 15:59:40 -0500 Received: from mail-pa0-f47.google.com ([209.85.220.47]:35789 "EHLO mail-pa0-f47.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753541AbbBYU7j (ORCPT ); Wed, 25 Feb 2015 15:59:39 -0500 Received: by padfa1 with SMTP id fa1so8145327pad.2 for ; Wed, 25 Feb 2015 12:59:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jHzVUsSjM/Y+9nIcqj+GpYFuy6wgaEufqAQwoXeL2ms=; b=xfWTFUttp728uq5/Aw30LjXm8+UFvBcRx4eyHp7wvSU1GL+KOSasOHiXk80xAlH2Uk +Lq3NwLHzEitMxNkL3CcRHdBhX+WRWMerXj5gej1oS7fXrz6YSMEYyGoy36MWlKI9lZc NbUKo6xYudPejmTvX1qp2907uPYTqooFq7ZtPoPf4dMy9u2cWZnTNHQNQYztEQJLguwW bINfnTIg95Nku2wgv8W0W4KbCUzpuOUGj8S0l/Qlupeomz1Qi8Z5tSwhoIzckHIfSGOK VjfVd2wbZ35Wc1tdwrUZo8mK0AGOFkVkRq8aEtiNXcRnqrgDC1hLmnktgn+nPA8ex9U4 Q/IQ== X-Received: by 10.66.255.98 with SMTP id ap2mr8673751pad.134.1424897978944; Wed, 25 Feb 2015 12:59:38 -0800 (PST) Received: from scruffy.soe.ucsc.edu (scruffy.soe.ucsc.edu. [128.114.53.124]) by mx.google.com with ESMTPSA id ny1sm42117033pbb.77.2015.02.25.12.59.37 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 25 Feb 2015 12:59:38 -0800 (PST) From: Andrew Shewmaker To: ceph-devel@vger.kernel.org Cc: agshew@gmail.com, marioskogias@gmail.com, chendi.xue@intel.com Subject: [PATCH 6/6] Rados example for blkin (LTTng + Zipkin) tracing Date: Wed, 25 Feb 2015 12:59:27 -0800 Message-Id: <1424897967-879-7-git-send-email-agshew@gmail.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1424897967-879-1-git-send-email-agshew@gmail.com> References: <1424897967-879-1-git-send-email-agshew@gmail.com> Sender: ceph-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: ceph-devel@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This code is Marios', with the following exceptions: * split out example from other tracing changes * changed name of example * whitespace issues have been fixed * Makefile cleans up the new example Signed-off-by: Marios-Evaggelos Kogias Signed-off-by: Filippos Giannakos Signed-off-by: Andrew Shewmaker --- examples/librados/Makefile | 9 ++++ examples/librados/hello_blkin.c | 107 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 examples/librados/hello_blkin.c diff --git a/examples/librados/Makefile b/examples/librados/Makefile index 190cca2..f8d8e1d 100644 --- a/examples/librados/Makefile +++ b/examples/librados/Makefile @@ -1,4 +1,8 @@ +ifdef WITH_BLKIN +all: librados_hello_world librados_hello_world_c librados_hello_blkin +else all: librados_hello_world librados_hello_world_c +endif librados_hello_world: hello_world.cc g++ -g -c hello_world.cc -o hello_world.o $(CFLAGS) @@ -8,6 +12,11 @@ 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) +librados_hello_blkin: hello_blkin.c + cc -g -c hello_blkin.c -o hello_blkin.o $(CFLAGS) + cc -g hello_blkin.o -lrados -lblkin-front -o librados_hello_blkin $(LDFLAGS) + clean: rm hello_world.o librados_hello_world rm hello_world_c.o librados_hello_world_c + rm hello_blkin.o librados_hello_blkin diff --git a/examples/librados/hello_blkin.c b/examples/librados/hello_blkin.c new file mode 100644 index 0000000..1bc1c50 --- /dev/null +++ b/examples/librados/hello_blkin.c @@ -0,0 +1,107 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#include +#include +#include +#include + +#define POOL "data" + +const char *object_name = "hello_world_object"; +const char *object_val = "hello world!"; + +rados_ioctx_t *connect_to_rados() +{ + rados_t rados; + rados_ioctx_t *ioctx = malloc(sizeof(rados_ioctx_t)); + + if (rados_create(&rados, NULL) < 0) { + return NULL; + } + if (rados_conf_read_file(rados, NULL) < 0){ + return NULL; + } + if (rados_connect(rados) < 0) { + printf("Could not connect\n"); + rados_shutdown(rados); + return NULL; + } + if (rados_pool_lookup(rados, POOL) < 0) { + printf("Could not find pool\n"); + rados_shutdown(rados); + return NULL; + } + if (rados_ioctx_create(rados, POOL, ioctx) < 0){ + rados_shutdown(rados); + return NULL; + } + return ioctx; +} + +void end_read(rados_completion_t c, void *arg) +{ + fprintf(stderr, "just read\n"); +} + +void end_write(rados_completion_t c, void *arg) +{ + fprintf(stderr, "just wrote\n"); +} + +int main() +{ + int r, i; + char temp[12]; + rados_completion_t compl; + rados_ioctx_t *rados_ctx; + /*initialize lib*/ + r = blkin_init(); + if (r < 0) { + fprintf(stderr, "Could not initialize blkin\n"); + exit(1); + } + /*initialize endpoint*/ + struct blkin_endpoint endp; + blkin_init_endpoint(&endp, "10.0.0.1", 5000, "rados client"); + struct blkin_trace trace; + blkin_init_new_trace(&trace, "client", &endp); + BLKIN_TIMESTAMP(&trace, &endp, "start"); + + //connect + rados_ctx = connect_to_rados(); + if (rados_ctx == NULL){ + printf("Connect return NULL\n"); + exit(1); + } + printf("connected\n"); + + //write an object + r = rados_aio_create_completion(NULL, end_write, end_write, &compl); + if (r<0) { + printf("could not create completion\n"); + exit(1); + } + printf("created completion\n"); + r = rados_aio_write_traced(*rados_ctx, object_name, compl, object_val, 12, + 0, &trace.info); + + rados_aio_wait_for_complete(compl); + printf("completed\n"); + + //read an object + r = rados_aio_create_completion(NULL, end_read, end_read, &compl); + if (r<0) { + printf("could not create completion\n"); + exit(1); + } + printf("created completion\n"); + r = rados_aio_read_traced(*rados_ctx, object_name, compl, temp, 12, 0, + &trace.info); + rados_aio_wait_for_complete(compl); + printf("I read:\n"); + for (i=0;i<12;i++) + printf("%c",temp[i]); + printf("completed\n"); + BLKIN_TIMESTAMP(&trace, &endp, "Span ended"); +}