[prev in list] [next in list] [prev in thread] [next in thread]
List: ceph-devel
Subject: Re: Problem using librados
From: Atish Kathpal <atish.kathpal () gmail ! com>
Date: 2011-10-29 15:35:43
Message-ID: CAMiHsJ+=ggbve70K_-x+7Y50Lxf3aQEm1nRuWmTrh1_R2Dy+Ug () mail ! gmail ! com
[Download RAW message or body]
On Fri, Oct 28, 2011 at 9:16 PM, Josh Durgin <josh.durgin@dreamhost.com> wrote:
> On Fri, 28 Oct 2011 16:22:07 +0530, Atish Kathpal
> <atish.kathpal@gmail.com> wrote:
>> Hello developers,
>>
>> This is a users query. Please help out.
>> I am trying to use the librados-dev library to use RADOS components of Ceph.
>> I have got Ceph installed on my machine, and the rados command line
>> shows me a pool named "data" when I say "rados lspools". I have also
>> tried out creating objects in this pool and it works perfectly.
>> However, when I try to access the same pool "data" through my C code,
>> by using librados.h, my code compiles and links fine but at run time I
>> get this error:-
>>
>> $./a.out: cannot open rados pool data: No such file or directory
>>
>> My code is as follows:-
>> #include <stdio.h>
>> #include "rados/librados.h"
>> main(int argc, char *argv[])
>> {
>> int err;
>> rados_t cluster;
>> err = rados_create(&cluster, NULL);
>> if (err < 0) {
>> printf("%s: cannot open a rados connection: %s\n",
>> argv[0], strerror(-err));
>> }
>
> You need a couple more steps here - rados_create doesn't connect to the
> cluster yet. Looks like the docs need updating for this. You need to do
>
> the following before opening the pool (error checking omitted for
> brevity):
>
> // get configuration info - use NULL as the path to search the
> default ceph.conf locations
> rados_conf_read_file(cluster, path);
> rados_connect(cluster);
>
Thanks Josh.
>> rados_ioctx_t io;
>> char *poolname = "data";
>> err = rados_ioctx_create(cluster, poolname, &io);
>> //<--------------------This line is causing the problem. Why am I not
>> able to access the pool?
>> if (err < 0) {
>> printf("%s: cannot open rados pool %s: %s\n", argv[0],
>> poolname, strerror(-err));
>> rados_shutdown(cluster);
>> }
>> err = rados_write_full(io, "BITARRAY", "hello", 5);
>> if (err < 0) {
>> printf("%s: cannot write pool %s: %s\n", argv[0],
>> poolname, strerror(-err));
>> rados_ioctx_destroy(io);
>> rados_shutdown(cluster);
>> }
>> }
>>
>> To show that the pool "data" exists, here's the output of the command
>> line rados tool:-
>> $ rados lspools
>> data
>> metadata
>> rbd
>>
>>
>> Please help me out.
>>
>> Thank you.
>>
>> Regards
>> Atish
>
>
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic