TODO:
+ * collection_list must flush pending db work
* multiple fragments per object (with configurable size.. maybe 1 or 2 mb default?)
* read path should be totally generic (handle any fragment pattern)
* write path should ideally tolerate any fragment pattern, but only generate a fixed layout (since the tunable may be changed over time).
}
if (!o->onode.omap_head)
goto out;
+ o->flush();
{
KeyValueDB::Iterator it = db->get_iterator(PREFIX_OMAP);
string head, tail;
}
if (!o->onode.omap_head)
goto out;
+ o->flush();
{
string head;
get_omap_header(o->onode.omap_head, &head);
}
if (!o->onode.omap_head)
goto out;
+ o->flush();
{
KeyValueDB::Iterator it = db->get_iterator(PREFIX_OMAP);
string head, tail;
}
if (!o->onode.omap_head)
goto out;
+ o->flush();
for (set<string>::const_iterator p = keys.begin(); p != keys.end(); ++p) {
string key;
get_omap_key(o->onode.omap_head, *p, &key);
}
if (!o->onode.omap_head)
goto out;
+ o->flush();
for (set<string>::const_iterator p = keys.begin(); p != keys.end(); ++p) {
string key;
get_omap_key(o->onode.omap_head, *p, &key);
dout(10) << __func__ << " " << oid << "doesn't exist" <<dendl;
return ObjectMap::ObjectMapIterator();
}
+ o->flush();
dout(10) << __func__ << " header = " << o->onode.omap_head <<dendl;
KeyValueDB::Iterator it = db->get_iterator(PREFIX_OMAP);
return ObjectMap::ObjectMapIterator(new OmapIteratorImpl(c, o, it));