From: xie xingguo Date: Fri, 29 Jan 2016 09:57:15 +0000 (+0800) Subject: kstore: simplify open_collection logic a bit X-Git-Tag: v10.0.4~110^2~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=4ad085822ad5f75a4b99cf4bc8234a8a9fd15dbe;p=ceph.git kstore: simplify open_collection logic a bit Signed-off-by: xie xingguo --- diff --git a/src/os/kstore/KStore.cc b/src/os/kstore/KStore.cc index 1e7b01b875ab3..28631cd8fc00f 100644 --- a/src/os/kstore/KStore.cc +++ b/src/os/kstore/KStore.cc @@ -891,10 +891,15 @@ int KStore::_open_collections(int *errors) coll_t cid; if (cid.parse(it->key())) { CollectionRef c(new Collection(this, cid)); - bufferlist bl; - db->get(PREFIX_COLL, it->key(), &bl); + bufferlist bl = it->value(); bufferlist::iterator p = bl.begin(); - ::decode(c->cnode, p); + try { + ::decode(c->cnode, p); + } catch (buffer::error& e) { + derr << __func__ << " failed to decode cnode, key:" + << pretty_binary_string(it->key()) << dendl; + return -EIO; + } dout(20) << __func__ << " opened " << cid << dendl; coll_map[cid] = c; } else {