Re: Problem using librados

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 28 Oct 2011 16:22:07 +0530, Atish Kathpal
<atish.kathpal@xxxxxxxxx> 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);

>         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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux