For librados and librbd there are currently C and C++ bindings. The nice thing about the C++ bindings is the interface is cleaner (class-based) and they expose the native bufferlists. On the other hand, things get messy when there are multiple .so's exposing C++ bindings (librados currently, now librbd, potentially a libceph.hpp too). For example, where does bufferlist.h et al go? (Currently /usr/include/rados/bufferlist.h.) I see a few options... - stack the libraries (librbd and libceph depend on librados), even though internally they do not. Export the needed C++ symbols from librados for the others to use (e.g. ceph::buffer_total_alloc). - push the bufferlist/spinlock/atomic stuff into a libceph-common that the others depend on. - drop the C++ interfaces. probably fine, and less dangerous because we don't have to worry about bufferlist implementation drifting between the library user and library. OTOH, we currently use it for most of our internal rados/rbd tools. sage -- 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