summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@inktank.com>2013-10-11 15:34:33 -0700
committerSage Weil <sage@inktank.com>2013-10-22 13:45:39 -0700
commit9aaffbc0802d69f35d79d2d6d535a23d5a71525b (patch)
tree27660d7f313a57a1e09e0e7d255c0e4befeee4d8
parent35f0b043d7ed6fe257d0a7a2234fe94dd54f4d9e (diff)
downloadceph-9aaffbc0802d69f35d79d2d6d535a23d5a71525b.tar.gz
librados: expose methods for calculating object hash position
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r--src/include/rados/librados.hpp3
-rw-r--r--src/librados/IoCtxImpl.cc12
-rw-r--r--src/librados/IoCtxImpl.h3
-rw-r--r--src/librados/librados.cc10
4 files changed, 28 insertions, 0 deletions
diff --git a/src/include/rados/librados.hpp b/src/include/rados/librados.hpp
index 25e96210b15..436c9a60418 100644
--- a/src/include/rados/librados.hpp
+++ b/src/include/rados/librados.hpp
@@ -741,6 +741,9 @@ namespace librados
int64_t get_id();
+ uint32_t get_object_hash_position(const std::string& oid);
+ uint32_t get_object_pg_hash_position(const std::string& oid);
+
config_t cct();
private:
diff --git a/src/librados/IoCtxImpl.cc b/src/librados/IoCtxImpl.cc
index ae943f8bc92..49a61173cc1 100644
--- a/src/librados/IoCtxImpl.cc
+++ b/src/librados/IoCtxImpl.cc
@@ -64,6 +64,18 @@ int librados::IoCtxImpl::set_snap_write_context(snapid_t seq, vector<snapid_t>&
return 0;
}
+uint32_t librados::IoCtxImpl::get_object_hash_position(const std::string& oid)
+{
+ Mutex::Locker l(*lock);
+ return objecter->get_object_hash_position(poolid, oid, oloc.nspace);
+}
+
+uint32_t librados::IoCtxImpl::get_object_pg_hash_position(const std::string& oid)
+{
+ Mutex::Locker l(*lock);
+ return objecter->get_object_pg_hash_position(poolid, oid, oloc.nspace);
+}
+
void librados::IoCtxImpl::queue_aio_write(AioCompletionImpl *c)
{
get();
diff --git a/src/librados/IoCtxImpl.h b/src/librados/IoCtxImpl.h
index 6137ba91257..7d7cf3722c7 100644
--- a/src/librados/IoCtxImpl.h
+++ b/src/librados/IoCtxImpl.h
@@ -91,6 +91,9 @@ struct librados::IoCtxImpl {
return poolid;
}
+ uint32_t get_object_hash_position(const std::string& oid);
+ uint32_t get_object_pg_hash_position(const std::string& oid);
+
::ObjectOperation *prepare_assert_ops(::ObjectOperation *op);
// snaps
diff --git a/src/librados/librados.cc b/src/librados/librados.cc
index 4a16704abd9..738c3224afe 100644
--- a/src/librados/librados.cc
+++ b/src/librados/librados.cc
@@ -1333,6 +1333,16 @@ int64_t librados::IoCtx::get_id()
return io_ctx_impl->get_id();
}
+uint32_t librados::IoCtx::get_object_hash_position(const std::string& oid)
+{
+ return io_ctx_impl->get_object_hash_position(oid);
+}
+
+uint32_t librados::IoCtx::get_object_pg_hash_position(const std::string& oid)
+{
+ return io_ctx_impl->get_object_pg_hash_position(oid);
+}
+
librados::config_t librados::IoCtx::cct()
{
return (config_t)io_ctx_impl->client->cct;