From: Matt Benjamin Date: Wed, 27 Jan 2016 16:40:52 +0000 (-0500) Subject: librgw: properly detect RGWRados init failure X-Git-Tag: v10.1.0~382^2~21 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=4b42c57bde9c7792dc2e4709ff8b1d6952f915a3;p=ceph.git librgw: properly detect RGWRados init failure Unit tests correctly see fail result from librgw_create. Signed-off-by: Matt Benjamin --- diff --git a/src/rgw/librgw.cc b/src/rgw/librgw.cc index 1b706752bdd9..7deaecc06110 100644 --- a/src/rgw/librgw.cc +++ b/src/rgw/librgw.cc @@ -438,7 +438,8 @@ namespace rgw { rgw_init_resolver(); store = RGWStoreManager::get_storage(g_ceph_context, - g_conf->rgw_enable_gc_threads, g_conf->rgw_enable_quota_threads); + g_conf->rgw_enable_gc_threads, + g_conf->rgw_enable_quota_threads); if (!store) { mutex.Lock(); @@ -447,7 +448,7 @@ namespace rgw { mutex.Unlock(); derr << "Couldn't init storage provider (RADOS)" << dendl; - return EIO; + return -EIO; } r = rgw_perf_start(g_ceph_context); @@ -460,7 +461,7 @@ namespace rgw { mutex.Unlock(); if (r) - return 1; + return -EIO; rgw_user_init(store); rgw_bucket_init(store->meta_mgr); @@ -482,7 +483,7 @@ namespace rgw { fe->init(); if (r < 0) { derr << "ERROR: failed initializing frontend" << dendl; - return -r; + return r; } fe->run(); @@ -572,18 +573,20 @@ int librgw_create(librgw_t* rgw, int argc, char **argv) { using namespace rgw; + int rc = -EINVAL; + if (! g_ceph_context) { std::lock_guard lg(librgw_mtx); if (! g_ceph_context) { vector args; argv_to_vec(argc, const_cast(argv), args); - rgwlib.init(args); + rc = rgwlib.init(args); } } *rgw = g_ceph_context->get(); - return 0; + return rc; } void librgw_shutdown(librgw_t rgw)