Return EOPNOTSUPP for auid-specific calls, or EINVAL for ones that get a non-default
auid value.
Signed-off-by: Sage Weil <sage@redhat.com>
__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);
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<uint64_t> *snaps)
{
return objecter->pool_snap_list(poolid, snaps);
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<time_t, time_t> > *pls);
int hit_set_get(uint32_t hash, AioCompletionImpl *c, time_t stamp,
});
}
-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();
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())
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();
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<std::pair<int64_t, string> >& ls);
int get_pool_stats(std::list<string>& ls, map<string,::pool_stat_t>& result);
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);
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()
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)
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)
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;
}
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;
}
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;
}
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;
}
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;
}
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));
}
}
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;
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;