From: David Zafman Date: Fri, 3 Oct 2014 22:09:30 +0000 (-0700) Subject: MemStore: Need set/get_allow_sharded_objects() to work for ceph_objectstore_tool X-Git-Tag: v0.88~112^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F2639%2Fhead;p=ceph.git 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 --- 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);