From patchwork Tue Nov 25 18:54:28 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew Shewmaker X-Patchwork-Id: 5382191 Return-Path: X-Original-To: patchwork-ceph-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 7D35B9F3D0 for ; Tue, 25 Nov 2014 18:54:58 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 143B6201FB for ; Tue, 25 Nov 2014 18:54:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 48492201EC for ; Tue, 25 Nov 2014 18:54:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751587AbaKYSy3 (ORCPT ); Tue, 25 Nov 2014 13:54:29 -0500 Received: from mail-pa0-f45.google.com ([209.85.220.45]:38801 "EHLO mail-pa0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751523AbaKYSy2 (ORCPT ); Tue, 25 Nov 2014 13:54:28 -0500 Received: by mail-pa0-f45.google.com with SMTP id lj1so1139765pab.4 for ; Tue, 25 Nov 2014 10:54:28 -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=Pls8V7jOLwKEB7fnpbw9gvEhjB3Yic9iFpmkVzrZRVo=; b=rYGXh2N+Ahju4KEGB7vxsW7xBVj9zqu+a+OVpMEi8LuKiMb3dwUlc5jeHn6SBlIPl2 mVZ//17UfR9v9NubrKxRiPKIwPqNzds5H5PTnC2ayVrDImTmb7kv2tGxDmn9dR5qpGUA wCyb+g8y96P/7/LKHBfQ96y7r3kgGy00Z2LH2nHHotIW0BQR+/hW/NQusmZhm3gqxKGd jFQtaCh9BeNy1gvQR9SziIqwAOLOhLCawL1asxGpQs6gvCU9nBraKZeyS/owSaNDzdek 7xu1lOn22moM5TjLIGEGLvfoXp+eSywKdtwGTvdyCm0kNp0JC5Dk/gMPVuRWacL5V3aw EW1A== X-Received: by 10.70.102.35 with SMTP id fl3mr13919742pdb.30.1416941668132; Tue, 25 Nov 2014 10:54:28 -0800 (PST) Received: from scruffy.soe.ucsc.edu (scruffy.soe.ucsc.edu. [128.114.53.124]) by mx.google.com with ESMTPSA id i11sm2214692pat.3.2014.11.25.10.54.27 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 25 Nov 2014 10:54:27 -0800 (PST) From: Andrew Shewmaker To: ceph-devel@vger.kernel.org Cc: Andrew Shewmaker , Marios-Evaggelos Kogias , Filippos Giannakos Subject: [PATCH V2 6/6] Rados example for blkin (LTTng + Zipkin) tracing Date: Tue, 25 Nov 2014 10:54:28 -0800 Message-Id: <1416941668-26150-7-git-send-email-agshew@gmail.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1416941668-26150-1-git-send-email-agshew@gmail.com> References: <1416941668-26150-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 | 5 +- examples/librados/hello_blkin.c | 107 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 2 deletions(-) create mode 100644 examples/librados/hello_blkin.c diff --git a/examples/librados/Makefile b/examples/librados/Makefile index a40051f..c0ede9f 100644 --- a/examples/librados/Makefile +++ b/examples/librados/Makefile @@ -1,5 +1,6 @@ -all: hello_world.cc +all: hello_world.cc hello_blkin.c + gcc hello_blkin.c -o hello_blkin -lrados -lblkin-front 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 \ No newline at end of file + rm hello_world.o librados_hello_world hello 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"); +}