]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
os/memstore/MemStore: set Collection::cid on create 7521/head
authorSage Weil <sage@redhat.com>
Thu, 4 Feb 2016 14:24:22 +0000 (09:24 -0500)
committerSage Weil <sage@redhat.com>
Thu, 4 Feb 2016 14:24:22 +0000 (09:24 -0500)
This was broken by the collection handles merge in
2e52a8b17c348bb3356eb76a8a0f6ef6efbe5bd3 because the c->cid
value was never initialized and now we started to rely on it.

Signed-off-by: Sage Weil <sage@redhat.com>
src/os/memstore/MemStore.cc
src/os/memstore/MemStore.h

index cd0cd3610e878018065bc30e3b383607592a3155..68972dd51dbd7b5a0b448301025e4ce4a90ca46e 100644 (file)
@@ -157,7 +157,7 @@ int MemStore::_load()
     int r = cbl.read_file(fn.c_str(), &err);
     if (r < 0)
       return r;
-    CollectionRef c(new Collection(cct));
+    CollectionRef c(new Collection(cct, *q));
     bufferlist::iterator p = cbl.begin();
     c->decode(p);
     coll_map[*q] = c;
@@ -466,6 +466,8 @@ int MemStore::collection_list(const coll_t& cid, ghobject_t start, ghobject_t en
     return -ENOENT;
   RWLock::RLocker l(c->lock);
 
+  dout(10) << __func__ << " cid " << cid << " start " << start
+          << " end " << end << dendl;
   map<ghobject_t,ObjectRef,ghobject_t::BitwiseComparator>::iterator p = c->object_map.lower_bound(start);
   while (p != c->object_map.end() &&
         ls->size() < (unsigned)max &&
@@ -479,6 +481,7 @@ int MemStore::collection_list(const coll_t& cid, ghobject_t start, ghobject_t en
     else
       *next = p->first;
   }
+  dout(10) << __func__ << " cid " << cid << " got " << ls->size() << dendl;
   return 0;
 }
 
@@ -1281,7 +1284,7 @@ int MemStore::_create_collection(const coll_t& cid)
   auto result = coll_map.insert(std::make_pair(cid, CollectionRef()));
   if (!result.second)
     return -EEXIST;
-  result.first->second.reset(new Collection(cct));
+  result.first->second.reset(new Collection(cct, cid));
   return 0;
 }
 
index df37d88165218ce6d6c48518fc311055e6ae8855..2d809f3384f954ce926f6df97ee31663672f59de 100644 (file)
@@ -243,8 +243,10 @@ public:
       return result;
     }
 
-    explicit Collection(CephContext *cct)
-      : cct(cct), use_page_set(cct->_conf->memstore_page_set),
+    explicit Collection(CephContext *cct, coll_t c)
+      : cid(c),
+       cct(cct),
+       use_page_set(cct->_conf->memstore_page_set),
         lock("MemStore::Collection::lock", true, false),
        exists(true) {}
   };