From 177a33b5e55c3a5a32670dcdf70dcd9abce8ad8f Mon Sep 17 00:00:00 2001 From: David Zafman Date: Fri, 3 Oct 2014 15:09:30 -0700 Subject: [PATCH] MemStore: Need set/get_allow_sharded_objects() to work for ceph_objectstore_tool Keep a bool sharded in memory and use for set/get_allow_sharded_objects() Create a file "sharded" in the data dir when sharded is true during _save() Check for file "sharded" during _load() Fixes: #9661 Signed-off-by: David Zafman --- src/os/MemStore.cc | 13 +++++++++++++ src/os/MemStore.h | 7 +++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/os/MemStore.cc b/src/os/MemStore.cc index 6743916b2000..f3c4c3021059 100644 --- a/src/os/MemStore.cc +++ b/src/os/MemStore.cc @@ -88,6 +88,14 @@ int MemStore::_save() if (r < 0) return r; + if (sharded) { + string fn = path + "/sharded"; + bufferlist bl; + int r = bl.write_file(fn.c_str()); + if (r < 0) + return r; + } + return 0; } @@ -168,6 +176,11 @@ int MemStore::_load() coll_map[*q] = c; } + fn = path + "/sharded"; + struct stat st; + if (::stat(fn.c_str(), &st) == 0) + set_allow_sharded_objects(); + dump_all(); return 0; diff --git a/src/os/MemStore.h b/src/os/MemStore.h index fa16b07ef0bc..8a05020c29f9 100644 --- a/src/os/MemStore.h +++ b/src/os/MemStore.h @@ -232,7 +232,8 @@ public: : ObjectStore(path), coll_lock("MemStore::coll_lock"), apply_lock("MemStore::apply_lock"), - finisher(cct) { } + finisher(cct), + sharded(false) { } ~MemStore() { } int update_version_stamp() { @@ -264,10 +265,12 @@ public: return 0; } + bool sharded; void set_allow_sharded_objects() { + sharded = true; } bool get_allow_sharded_objects() { - return true; + return sharded; } int statfs(struct statfs *buf); -- 2.47.3