From 48890c7741d76cf92b5f589f49378ca57292e88b Mon Sep 17 00:00:00 2001 From: David Zafman Date: Wed, 14 May 2014 17:50:16 -0700 Subject: [PATCH] ceph_filestore_dump: Add list-omap object command Signed-off-by: David Zafman --- src/tools/ceph_filestore_dump.cc | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/tools/ceph_filestore_dump.cc b/src/tools/ceph_filestore_dump.cc index 7f173c04da0eb..427f005a61cb5 100644 --- a/src/tools/ceph_filestore_dump.cc +++ b/src/tools/ceph_filestore_dump.cc @@ -1206,6 +1206,28 @@ int do_list_attrs(ObjectStore *store, coll_t coll, ghobject_t &ghobj) return 0; } +int do_list_omap(ObjectStore *store, coll_t coll, ghobject_t &ghobj) +{ + ObjectMap::ObjectMapIterator iter = store->get_omap_iterator(coll, ghobj); + if (!iter) { + cerr << "omap_get_iterator: " << cpp_strerror(ENOENT) << std::endl; + return -ENOENT; + } + iter->seek_to_first(); + map oset; + while(iter->valid()) { + get_omap_batch(iter, oset); + + for (map::iterator i = oset.begin();i != oset.end(); ++i) { + string key(i->first); + if (outistty) + cleanbin(key); + cout << key << std::endl; + } + } + return 0; +} + void usage(po::options_description &desc) { cerr << std::endl; @@ -1584,6 +1606,12 @@ int main(int argc, char **argv) ret = 1; } goto out; + } else if (objcmd == "list-omap") { + int r = do_list_omap(fs, coll, ghobj); + if (r) { + ret = 1; + } + goto out; } cerr << "Unknown object command '" << objcmd << "'" << std::endl; usage(desc); -- 2.39.5