summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Zafman <david.zafman@inktank.com>2013-09-23 13:02:16 -0700
committerDavid Zafman <david.zafman@inktank.com>2013-09-23 13:12:42 -0700
commit4f7526a785692795ee29f7101b8b18482b4c6e11 (patch)
treeb77c9ccdcae405d4980168274defb813595a91d4
parent164149209dec088c6255fb9ab79f65c152f19ba5 (diff)
downloadceph-wip-5862.tar.gz
Temporary collection_list* funcs in ObjectStore to do ghobject_t to hobject_t conversionwip-5862
Signed-off-by: David Zafman <david.zafman@inktank.com>
-rw-r--r--src/os/ObjectStore.cc45
-rw-r--r--src/os/ObjectStore.h10
2 files changed, 55 insertions, 0 deletions
diff --git a/src/os/ObjectStore.cc b/src/os/ObjectStore.cc
index 97c858b6773..84549821aff 100644
--- a/src/os/ObjectStore.cc
+++ b/src/os/ObjectStore.cc
@@ -15,6 +15,7 @@
#include <tr1/memory>
#include "ObjectStore.h"
#include "common/Formatter.h"
+#include "FileStore.h"
ostream& operator<<(ostream& out, const ObjectStore::Sequencer& s)
{
@@ -497,3 +498,47 @@ void ObjectStore::Transaction::generate_test_instances(list<ObjectStore::Transac
o.push_back(t);
}
+int ObjectStore::collection_list(coll_t c, vector<hobject_t>& o)
+{
+ vector<ghobject_t> go;
+ FileStore *fs = dynamic_cast<FileStore * >(this);
+ int ret = fs->collection_list(c, go);
+ if (ret == 0) {
+ o.reserve(go.size());
+ for (vector<ghobject_t>::iterator i = go.begin(); i != go.end() ; i++)
+ o.push_back(i->hobj);
+ }
+ return ret;
+}
+
+int ObjectStore::collection_list_partial(coll_t c, hobject_t start,
+ int min, int max, snapid_t snap,
+ vector<hobject_t> *ls, hobject_t *next)
+{
+ vector<ghobject_t> go;
+ ghobject_t gnext, gstart(start);
+ FileStore *fs = dynamic_cast<FileStore * >(this);
+ int ret = fs->collection_list_partial(c, gstart, min, max, snap, &go, &gnext);
+ if (ret == 0) {
+ *next = gnext.hobj;
+ ls->reserve(go.size());
+ for (vector<ghobject_t>::iterator i = go.begin(); i != go.end() ; i++)
+ ls->push_back(i->hobj);
+ }
+ return ret;
+}
+
+int ObjectStore::collection_list_range(coll_t c, hobject_t start, hobject_t end,
+ snapid_t seq, vector<hobject_t> *ls)
+{
+ vector<ghobject_t> go;
+ ghobject_t gstart(start), gend(end);
+ FileStore *fs = dynamic_cast<FileStore * >(this);
+ int ret = fs->collection_list_range(c, gstart, gend, seq, &go);
+ if (ret == 0) {
+ ls->reserve(go.size());
+ for (vector<ghobject_t>::iterator i = go.begin(); i != go.end() ; i++)
+ ls->push_back(i->hobj);
+ }
+ return ret;
+}
diff --git a/src/os/ObjectStore.h b/src/os/ObjectStore.h
index aea12c2aa2c..07473b344f5 100644
--- a/src/os/ObjectStore.h
+++ b/src/os/ObjectStore.h
@@ -950,6 +950,16 @@ public:
virtual int collection_list_range(coll_t c, ghobject_t start, ghobject_t end,
snapid_t seq, vector<ghobject_t> *ls) = 0;
+ //TODO: Remove
+ int collection_list(coll_t c, vector<hobject_t>& o);
+
+ int collection_list_partial(coll_t c, hobject_t start,
+ int min, int max, snapid_t snap,
+ vector<hobject_t> *ls, hobject_t *next);
+
+ int collection_list_range(coll_t c, hobject_t start, hobject_t end,
+ snapid_t seq, vector<hobject_t> *ls);
+
/// OMAP
/// Get omap contents
virtual int omap_get(