[PATCH] config: replace direct access with macros

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

 



For the new configuration framework, I need some way
to be able to move slowly between the 'old' way
(md_config_t) and the upcoming 'new' way. I suggest we
use macros for this. I've attached this patch as an
example of how I think we could accomplish this (that's
why I included multiple diffs instead of mailing them
separately).

First of all, I've included a stripped down config/config.h
with the macro definitions. I also forward-included this
header in the current common/config.h so I don't have to
touch a large number of files.

I've also changed some entries in MonMap.cc::build_initial
to show how we can use the macros.

If this is OK with you guys, I want to slowly replace access
to configuration value with these macros.

Signed-off-by: Roald van Loon <roaldvanloon@xxxxxxxxx>
---
 src/common/config.h |    2 ++
 src/config/config.h |   36 ++++++++++++++++++++++++++++++++++++
 src/mon/MonMap.cc   |   18 +++++++++---------
 3 files changed, 47 insertions(+), 9 deletions(-)

diff --git a/src/common/config.h b/src/common/config.h
index 86d240f..c9e2d1c 100644
--- a/src/common/config.h
+++ b/src/common/config.h
@@ -262,4 +262,6 @@ enum config_subsys_id {
   ceph_subsys_max
 };

+#include "config/config.h" // forward include this here, to allow
easy transition
+
 #endif
diff --git a/src/config/config.h b/src/config/config.h
new file mode 100644
index 0000000..3eb1c05
--- /dev/null
+++ b/src/config/config.h
@@ -0,0 +1,36 @@
+#ifndef CEPH_CONFIG_CONFIG_H
+#define CEPH_CONFIG_CONFIG_H
+
+#ifdef CEPH_USE_NEW_CONFIG
+
+
+#else /* CEPH_USE_NEW_CONFIG */
+
+#define CEPH_GLOBAL_CFG(type, paramname) \
+  g_ceph_context->_conf->paramname
+#define CEPH_GLOBAL_CFG_ID \
+  g_ceph_context->_conf->name.get_id()
+
+#define CEPH_GLOBAL_CFG_HAS(paramname) true
+#define CEPH_GLOBAL_CFG_STR(paramname) g_ceph_context->_conf->paramname
+#define CEPH_GLOBAL_CFG_UUID(paramname) CEPH_CFG(uuid_d, paramname)
+#define CEPH_GLOBAL_CFG_ADDR(paramname) CEPH_CFG(entity_addr_t, paramname)
+#define CEPH_GLOBAL_CFG_INT(paramname) CEPH_CFG(int, paramname)
+#define CEPH_GLOBAL_CFG_BOOL(paramname) CEPH_CFG(bool, paramname)
+
+#define CEPH_CFG(cct, type, paramname) \
+  cct->_conf->paramname
+#define CEPH_CFG_ID(cct) \
+  cct->_conf->name.get_id()
+
+#define CEPH_CFG_HAS(cct, paramname) true
+#define CEPH_CFG_STR(cct, paramname) cct->_conf->paramname
+#define CEPH_CFG_UUID(cct, paramname) CEPH_CFG(cct, uuid_d, paramname)
+#define CEPH_CFG_ADDR(cct, paramname) CEPH_CFG(cct, entity_addr_t, paramname)
+#define CEPH_CFG_INT(cct, paramname) CEPH_CFG(cct, int, paramname)
+#define CEPH_CFG_BOOL(cct, paramname) CEPH_CFG(cct, bool, paramname)
+
+#endif /* CEPH_USE_NEW_CONFIG */
+
+
+#endif /* CEPH_CONFIG_CONFIG_H */
diff --git a/src/mon/MonMap.cc b/src/mon/MonMap.cc
index 5a9d6ce..e444ba4 100644
--- a/src/mon/MonMap.cc
+++ b/src/mon/MonMap.cc
@@ -244,31 +244,31 @@ int MonMap::build_initial(CephContext *cct,
ostream& errout)
 {
   const md_config_t *conf = cct->_conf;
   // file?
-  if (!conf->monmap.empty()) {
+  if (!CEPH_CFG_STR(cct, monmap).empty()) {
     int r;
     try {
-      r = read(conf->monmap.c_str());
+      r = read(CEPH_CFG_STR(cct, monmap).c_str());
     }
     catch (const buffer::error &e) {
       r = -EINVAL;
     }
     if (r >= 0)
       return 0;
-    errout << "unable to read/decode monmap from " << conf->monmap
-        << ": " << cpp_strerror(-r) << std::endl;
+    errout << "unable to read/decode monmap from " << CEPH_CFG_STR(cct, monmap)
+   << ": " << cpp_strerror(-r) << std::endl;
     return r;
   }

   // fsid from conf?
-  if (!cct->_conf->fsid.is_zero()) {
-    fsid = cct->_conf->fsid;
+  if (!CEPH_CFG_UUID(cct, fsid).is_zero()) {
+    fsid = CEPH_CFG_UUID(cct, fsid);
   }

   // -m foo?
-  if (!conf->mon_host.empty()) {
-    int r = build_from_host_list(conf->mon_host, "noname-");
+  if (!CEPH_CFG_STR(cct, mon_host).empty()) {
+    int r = build_from_host_list(CEPH_CFG_STR(cct, mon_host), "noname-");
     if (r < 0) {
-      errout << "unable to parse addrs in '" << conf->mon_host << "'"
+      errout << "unable to parse addrs in '" << CEPH_CFG_STR(cct,
mon_host) << "'"
              << std::endl;
       return r;
     }
--
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