diff options
author | David Zafman <david.zafman@inktank.com> | 2013-09-23 13:02:16 -0700 |
---|---|---|
committer | David Zafman <david.zafman@inktank.com> | 2013-09-23 13:12:42 -0700 |
commit | 4f7526a785692795ee29f7101b8b18482b4c6e11 (patch) | |
tree | b77c9ccdcae405d4980168274defb813595a91d4 | |
parent | 164149209dec088c6255fb9ab79f65c152f19ba5 (diff) | |
download | ceph-4f7526a785692795ee29f7101b8b18482b4c6e11.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.cc | 45 | ||||
-rw-r--r-- | src/os/ObjectStore.h | 10 |
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( |