Not sure why but this seems to resolve a linking problem when loading
classes:
2013-08-17 13:28:19.015776
7fb2bcffa700 0 _load_class could not open class /usr/lib/rados-classes/libcls_hello.so (dlopen failed): /usr/lib/rados-classes/libcls_hello.so: undefined symbol: cls_log
2013-08-17 13:28:19.015786
7fb2bcffa700 -1 osd.4 12 class hello open got (5) Input/output error
In any case, it's simpler.
Signed-off-by: Sage Weil <sage@inktank.com>
osd/ClassHandler.cc \
osd/OpRequest.cc \
osd/SnapMapper.cc \
- objclass/class_debug.cc \
objclass/class_api.cc
libosd_a_CXXFLAGS= ${AM_CXXFLAGS}
noinst_LIBRARIES += libosd.a
// vim: ts=8 sw=2 smarttab
#include "common/config.h"
+#include "common/debug.h"
#include "objclass/objclass.h"
#include "osd/ReplicatedPG.h"
static ClassHandler *ch;
+#define dout_subsys ceph_subsys_objclass
+
void cls_initialize(ClassHandler *h)
{
ch = h;
*s = buf;
}
+
+int cls_log(int level, const char *format, ...)
+{
+ int size = 256;
+ va_list ap;
+ while (1) {
+ char buf[size];
+ va_start(ap, format);
+ int n = vsnprintf(buf, size, format, ap);
+ va_end(ap);
+#define MAX_SIZE 8196
+ if ((n > -1 && n < size) || size > MAX_SIZE) {
+ dout(level) << buf << dendl;
+ return n;
+ }
+ size *= 2;
+ }
+}
+++ /dev/null
-// -*- mode:C; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-
-#include "common/config.h"
-
-#include "common/debug.h"
-#include "objclass/objclass.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-
-#include <iostream>
-
-#define dout_subsys ceph_subsys_objclass
-
-int cls_log(int level, const char *format, ...)
-{
- int size = 256;
- va_list ap;
- while (1) {
- char buf[size];
- va_start(ap, format);
- int n = vsnprintf(buf, size, format, ap);
- va_end(ap);
-#define MAX_SIZE 8196
- if ((n > -1 && n < size) || size > MAX_SIZE) {
- dout(level) << buf << dendl;
- return n;
- }
- size *= 2;
- }
-}