[Qemu] Passing config options to librados

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

 



Hi all,

While testing with Qemu-KVM and RBD I got:

Unable to find any monitors in the configuration file, because there is
no configuration file. Please specify monitors via -m monaddr or -c
ceph.conf
qemu-system-x86_64: -drive file=rbd:rbd/beta,format=rbd: error
connecting
qemu: could not open disk image rbd:rbd/beta: No such file or directory

Some searching through the source-code showed me that ceph.conf isn't
read by librados anymore, but you have to force this with
rados_conf_read_file

The current RBD code doesn't do this, thus leaving librados
unconfigured.

I'm using the patch below to force reading the ceph.conf, but imho that
is not flexible enough.

The current RBD code has no way of reading config options from Qemu and
converting them into librados options by rados_conf_set() nor specifying
a conf file to be read by rados_conf_read_file().

Something that still has to be implemented or am I missing something?

Wido


>From 03cfbebf1363b89bca6c97beb90e30e04add5db9 Mon Sep 17 00:00:00 2001
From: Wido den Hollander <wido@xxxxxxxxx>
Date: Tue, 15 Mar 2011 13:11:24 +0100
Subject: [PATCH] librados: Force reading ceph.conf


Signed-off-by: Wido den Hollander <wido@xxxxxxxxx>
---
 block/rbd.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/block/rbd.c b/block/rbd.c
index f722cb4..7cd12f4 100644
--- a/block/rbd.c
+++ b/block/rbd.c
@@ -222,6 +222,11 @@ static int qemu_rbd_create(const char *filename,
QEMUOptionParameter *options)
         return -EIO;
     }
 
+    if (rados_conf_read_file(cluster, "/etc/ceph/ceph.conf") < 0) {
+        error_report("error reading configuration file");
+        return -EIO;
+    }
+
     if (rados_connect(cluster) < 0) {
         error_report("error connecting");
         rados_shutdown(cluster);
@@ -351,6 +356,11 @@ static int qemu_rbd_open(BlockDriverState *bs,
const char *filename, int flags)
         return r;
     }
 
+    if ((r = rados_conf_read_file(s->cluster, "/etc/ceph/ceph.conf")) <
0) {
+        error_report("error reading configuration file");
+        return r;
+    }
+
     if ((r = rados_connect(s->cluster)) < 0) {
         error_report("error connecting");
         rados_shutdown(s->cluster);
-- 
1.7.0.4

--
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