From 0c330c211aaf6380aa1509143cf3f4c2f201026c Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Sat, 11 Aug 2018 13:55:03 -0500 Subject: [PATCH] librados: deprecate calls that take auid Return EOPNOTSUPP for auid-specific calls, or EINVAL for ones that get a non-default auid value. Signed-off-by: Sage Weil --- src/include/rados/librados.hpp | 2 ++ src/librados/IoCtxImpl.cc | 26 -------------- src/librados/IoCtxImpl.h | 3 -- src/librados/RadosClient.cc | 24 ++----------- src/librados/RadosClient.h | 8 ++--- src/librados/librados.cc | 62 ++++++++++++++++++++++++++-------- src/test/librados/pool.cc | 10 ------ src/tools/rados/rados.cc | 4 +-- 8 files changed, 59 insertions(+), 80 deletions(-) diff --git a/src/include/rados/librados.hpp b/src/include/rados/librados.hpp index b14154eff4c3e..da44dd2089545 100644 --- a/src/include/rados/librados.hpp +++ b/src/include/rados/librados.hpp @@ -1337,11 +1337,13 @@ namespace librados __attribute__ ((deprecated)); int pool_create(const char *name, uint64_t auid, uint8_t crush_rule) __attribute__ ((deprecated)); + int pool_create_with_rule(const char *name, uint8_t crush_rule); int pool_create_async(const char *name, PoolAsyncCompletion *c); int pool_create_async(const char *name, uint64_t auid, PoolAsyncCompletion *c) __attribute__ ((deprecated)); int pool_create_async(const char *name, uint64_t auid, uint8_t crush_rule, PoolAsyncCompletion *c) __attribute__ ((deprecated)); + int pool_create_with_rule_async(const char *name, uint8_t crush_rule, PoolAsyncCompletion *c); int pool_get_base_tier(int64_t pool, int64_t* base_tier); int pool_delete(const char *name); int pool_delete_async(const char *name, PoolAsyncCompletion *c); diff --git a/src/librados/IoCtxImpl.cc b/src/librados/IoCtxImpl.cc index c148eb18f7bc1..41ef8f547aa06 100644 --- a/src/librados/IoCtxImpl.cc +++ b/src/librados/IoCtxImpl.cc @@ -500,32 +500,6 @@ void librados::IoCtxImpl::aio_selfmanaged_snap_remove(uint64_t snapid, objecter->delete_selfmanaged_snap(poolid, snapid, onfinish); } -int librados::IoCtxImpl::pool_change_auid(unsigned long long auid) -{ - int reply; - - Mutex mylock("IoCtxImpl::pool_change_auid::mylock"); - Cond cond; - bool done; - objecter->change_pool_auid(poolid, - new C_SafeCond(&mylock, &cond, &done, &reply), - auid); - - mylock.Lock(); - while (!done) cond.Wait(mylock); - mylock.Unlock(); - return reply; -} - -int librados::IoCtxImpl::pool_change_auid_async(unsigned long long auid, - PoolAsyncCompletionImpl *c) -{ - objecter->change_pool_auid(poolid, - new C_PoolAsync_Safe(c), - auid); - return 0; -} - int librados::IoCtxImpl::snap_list(vector *snaps) { return objecter->pool_snap_list(poolid, snaps); diff --git a/src/librados/IoCtxImpl.h b/src/librados/IoCtxImpl.h index b769fcd178cb8..b0848c09db3c8 100644 --- a/src/librados/IoCtxImpl.h +++ b/src/librados/IoCtxImpl.h @@ -226,9 +226,6 @@ struct librados::IoCtxImpl { const char *name); int aio_cancel(AioCompletionImpl *c); - int pool_change_auid(unsigned long long auid); - int pool_change_auid_async(unsigned long long auid, PoolAsyncCompletionImpl *c); - int hit_set_list(uint32_t hash, AioCompletionImpl *c, std::list< std::pair > *pls); int hit_set_get(uint32_t hash, AioCompletionImpl *c, time_t stamp, diff --git a/src/librados/RadosClient.cc b/src/librados/RadosClient.cc index 6ad5d3780a027..51d3b9f2cebbb 100644 --- a/src/librados/RadosClient.cc +++ b/src/librados/RadosClient.cc @@ -170,24 +170,6 @@ int librados::RadosClient::pool_required_alignment2(int64_t pool_id, }); } -int librados::RadosClient::pool_get_auid(uint64_t pool_id, - unsigned long long *auid) -{ - int r = wait_for_osdmap(); - if (r < 0) - return r; - objecter->with_osdmap([&](const OSDMap& o) { - const pg_pool_t *pg = o.get_pg_pool(pool_id); - if (!pg) { - r = -ENOENT; - } else { - r = 0; - *auid = pg->auid; - } - }); - return r; -} - int librados::RadosClient::pool_get_name(uint64_t pool_id, std::string *s, bool wait_latest_map) { int r = wait_for_osdmap(); @@ -704,7 +686,7 @@ bool librados::RadosClient::put() { return (refcnt == 0); } -int librados::RadosClient::pool_create(string& name, unsigned long long auid, +int librados::RadosClient::pool_create(string& name, int16_t crush_rule) { if (!name.length()) @@ -733,8 +715,8 @@ int librados::RadosClient::pool_create(string& name, unsigned long long auid, return reply; } -int librados::RadosClient::pool_create_async(string& name, PoolAsyncCompletionImpl *c, - unsigned long long auid, +int librados::RadosClient::pool_create_async(string& name, + PoolAsyncCompletionImpl *c, int16_t crush_rule) { int r = wait_for_osdmap(); diff --git a/src/librados/RadosClient.h b/src/librados/RadosClient.h index 676b9e6e95a4a..57ea9eb9e15ed 100644 --- a/src/librados/RadosClient.h +++ b/src/librados/RadosClient.h @@ -113,8 +113,8 @@ public: int pool_requires_alignment2(int64_t pool_id, bool *requires); uint64_t pool_required_alignment(int64_t pool_id); int pool_required_alignment2(int64_t pool_id, uint64_t *alignment); - int pool_get_auid(uint64_t pool_id, unsigned long long *auid); - int pool_get_name(uint64_t pool_id, std::string *auid, bool wait_latest_map = false); + int pool_get_name(uint64_t pool_id, std::string *name, + bool wait_latest_map = false); int pool_list(std::list >& ls); int get_pool_stats(std::list& ls, map& result); @@ -127,8 +127,8 @@ public: b) the first ruleset in crush ruleset c) error out if no value find */ - int pool_create(string& name, unsigned long long auid=0, int16_t crush_rule=-1); - int pool_create_async(string& name, PoolAsyncCompletionImpl *c, unsigned long long auid=0, + int pool_create(string& name, int16_t crush_rule=-1); + int pool_create_async(string& name, PoolAsyncCompletionImpl *c, int16_t crush_rule=-1); int pool_get_base_tier(int64_t pool_id, int64_t* base_tier); int pool_delete(const char *name); diff --git a/src/librados/librados.cc b/src/librados/librados.cc index 33ee1ba2c6008..b341051432a2d 100644 --- a/src/librados/librados.cc +++ b/src/librados/librados.cc @@ -1134,17 +1134,17 @@ void librados::IoCtx::dup(const IoCtx& rhs) int librados::IoCtx::set_auid(uint64_t auid_) { - return io_ctx_impl->pool_change_auid(auid_); + return -EOPNOTSUPP; } int librados::IoCtx::set_auid_async(uint64_t auid_, PoolAsyncCompletion *c) { - return io_ctx_impl->pool_change_auid_async(auid_, c->pc); + return -EOPNOTSUPP; } int librados::IoCtx::get_auid(uint64_t *auid_) { - return rados_ioctx_pool_get_auid(io_ctx_impl, auid_); + return -EOPNOTSUPP; } bool librados::IoCtx::pool_requires_alignment() @@ -2422,14 +2422,26 @@ int librados::Rados::pool_create(const char *name) int librados::Rados::pool_create(const char *name, uint64_t auid) { + if (auid != CEPH_AUTH_UID_DEFAULT) { + return -EINVAL; + } string str(name); - return client->pool_create(str, auid); + return client->pool_create(str); } int librados::Rados::pool_create(const char *name, uint64_t auid, __u8 crush_rule) +{ + if (auid != CEPH_AUTH_UID_DEFAULT) { + return -EINVAL; + } + string str(name); + return client->pool_create(str, crush_rule); +} + +int librados::Rados::pool_create_with_rule(const char *name, __u8 crush_rule) { string str(name); - return client->pool_create(str, auid, crush_rule); + return client->pool_create(str, crush_rule); } int librados::Rados::pool_create_async(const char *name, PoolAsyncCompletion *c) @@ -2440,15 +2452,29 @@ int librados::Rados::pool_create_async(const char *name, PoolAsyncCompletion *c) int librados::Rados::pool_create_async(const char *name, uint64_t auid, PoolAsyncCompletion *c) { + if (auid != CEPH_AUTH_UID_DEFAULT) { + return -EINVAL; + } string str(name); - return client->pool_create_async(str, c->pc, auid); + return client->pool_create_async(str, c->pc); } int librados::Rados::pool_create_async(const char *name, uint64_t auid, __u8 crush_rule, PoolAsyncCompletion *c) +{ + if (auid != CEPH_AUTH_UID_DEFAULT) { + return -EINVAL; + } + string str(name); + return client->pool_create_async(str, c->pc, crush_rule); +} + +int librados::Rados::pool_create_with_rule_async( + const char *name, __u8 crush_rule, + PoolAsyncCompletion *c) { string str(name); - return client->pool_create_async(str, c->pc, auid, crush_rule); + return client->pool_create_async(str, c->pc, crush_rule); } int librados::Rados::pool_get_base_tier(int64_t pool_id, int64_t* base_tier) @@ -3908,7 +3934,12 @@ extern "C" int rados_pool_create_with_auid(rados_t cluster, const char *name, tracepoint(librados, rados_pool_create_with_auid_enter, cluster, name, auid); librados::RadosClient *radosp = (librados::RadosClient *)cluster; string sname(name); - int retval = radosp->pool_create(sname, auid); + int retval = 0; + if (auid != CEPH_AUTH_UID_DEFAULT) { + retval = -EINVAL; + } else { + retval = radosp->pool_create(sname); + } tracepoint(librados, rados_pool_create_with_auid_exit, retval); return retval; } @@ -3919,7 +3950,7 @@ extern "C" int rados_pool_create_with_crush_rule(rados_t cluster, const char *na tracepoint(librados, rados_pool_create_with_crush_rule_enter, cluster, name, crush_rule_num); librados::RadosClient *radosp = (librados::RadosClient *)cluster; string sname(name); - int retval = radosp->pool_create(sname, 0, crush_rule_num); + int retval = radosp->pool_create(sname, crush_rule_num); tracepoint(librados, rados_pool_create_with_crush_rule_exit, retval); return retval; } @@ -3930,7 +3961,12 @@ extern "C" int rados_pool_create_with_all(rados_t cluster, const char *name, tracepoint(librados, rados_pool_create_with_all_enter, cluster, name, auid, crush_rule_num); librados::RadosClient *radosp = (librados::RadosClient *)cluster; string sname(name); - int retval = radosp->pool_create(sname, auid, crush_rule_num); + int retval = 0; + if (auid != CEPH_AUTH_UID_DEFAULT) { + retval = -EINVAL; + } else { + retval = radosp->pool_create(sname, crush_rule_num); + } tracepoint(librados, rados_pool_create_with_all_exit, retval); return retval; } @@ -3956,8 +3992,7 @@ extern "C" int rados_pool_delete(rados_t cluster, const char *pool_name) extern "C" int rados_ioctx_pool_set_auid(rados_ioctx_t io, uint64_t auid) { tracepoint(librados, rados_ioctx_pool_set_auid_enter, io, auid); - librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->pool_change_auid(auid); + int retval = -EOPNOTSUPP; tracepoint(librados, rados_ioctx_pool_set_auid_exit, retval); return retval; } @@ -3965,8 +4000,7 @@ extern "C" int rados_ioctx_pool_set_auid(rados_ioctx_t io, uint64_t auid) extern "C" int rados_ioctx_pool_get_auid(rados_ioctx_t io, uint64_t *auid) { tracepoint(librados, rados_ioctx_pool_get_auid_enter, io); - librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io; - int retval = ctx->client->pool_get_auid(ctx->get_id(), (unsigned long long *)auid); + int retval = -EOPNOTSUPP; tracepoint(librados, rados_ioctx_pool_get_auid_exit, retval, *auid); return retval; } diff --git a/src/test/librados/pool.cc b/src/test/librados/pool.cc index 5cda7edd20978..74c89595bf12b 100644 --- a/src/test/librados/pool.cc +++ b/src/test/librados/pool.cc @@ -98,16 +98,6 @@ TEST(LibRadosPools, PoolCreateWithCrushRule) { pool2_name.c_str(), 0)); ASSERT_EQ(0, rados_pool_delete(cluster, pool2_name.c_str())); - std::string pool3_name = get_temp_pool_name(); - ASSERT_EQ(0, rados_pool_create_with_all(cluster, pool3_name.c_str(), - 456ull, 0)); - rados_ioctx_t ioctx; - ASSERT_EQ(0, rados_ioctx_create(cluster, pool3_name.c_str(), &ioctx)); - uint64_t auid; - ASSERT_EQ(0, rados_ioctx_pool_get_auid(ioctx, &auid)); - ASSERT_EQ(456ull, auid); - ASSERT_EQ(0, rados_pool_delete(cluster, pool3_name.c_str())); - rados_ioctx_destroy(ioctx); ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster)); } diff --git a/src/tools/rados/rados.cc b/src/tools/rados/rados.cc index bd59ead47a025..89c58c48435f2 100644 --- a/src/tools/rados/rados.cc +++ b/src/tools/rados/rados.cc @@ -2125,7 +2125,7 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, } if (create_pool) { - ret = rados.pool_create(pool_name, 0, 0); + ret = rados.pool_create(pool_name); if (ret < 0) { cerr << "error creating pool " << pool_name << ": " << cpp_strerror(ret) << std::endl; @@ -3067,7 +3067,7 @@ static int rados_tool_common(const std::map < std::string, std::string > &opts, cerr << "using crush rule " << (int)crush_rule << std::endl; } } - ret = rados.pool_create(nargs[1], auid, crush_rule); + ret = rados.pool_create_with_rule(nargs[1], crush_rule); if (ret < 0) { cerr << "error creating pool " << nargs[1] << ": " << cpp_strerror(ret) << std::endl; -- 2.39.5