int r;
{
RWLock::RLocker l(c->lock);
- string k(name);
+ mempool::bluestore_meta_other::string k(name);
OnodeRef o = c->get_onode(oid, false);
if (!o || !o->exists) {
r = -ENOENT;
goto out;
}
- aset = o->onode.attrs;
+ for (auto& i : o->onode.attrs) {
+ aset.emplace(i.first.c_str(), i.second);
+ }
r = 0;
}
<< " expected_write_size " << o->onode.expected_write_size
<< " in " << o->onode.extent_map_shards.size() << " shards"
<< dendl;
- for (map<string,bufferptr>::iterator p = o->onode.attrs.begin();
+ for (auto p = o->onode.attrs.begin();
p != o->onode.attrs.end();
++p) {
dout(log_level) << __func__ << " attr " << p->first
<< dendl;
int r = 0;
if (val.is_partial())
- o->onode.attrs[name] = bufferptr(val.c_str(), val.length());
+ o->onode.attrs[name.c_str()] = bufferptr(val.c_str(), val.length());
else
- o->onode.attrs[name] = val;
+ o->onode.attrs[name.c_str()] = val;
txc->write_onode(o);
dout(10) << __func__ << " " << c->cid << " " << o->oid
<< " " << name << " (" << val.length() << " bytes)"
for (map<string,bufferptr>::const_iterator p = aset.begin();
p != aset.end(); ++p) {
if (p->second.is_partial())
- o->onode.attrs[p->first] = bufferptr(p->second.c_str(), p->second.length());
+ o->onode.attrs[p->first.c_str()] =
+ bufferptr(p->second.c_str(), p->second.length());
else
- o->onode.attrs[p->first] = p->second;
+ o->onode.attrs[p->first.c_str()] = p->second;
}
txc->write_onode(o);
dout(10) << __func__ << " " << c->cid << " " << o->oid
dout(15) << __func__ << " " << c->cid << " " << o->oid
<< " " << name << dendl;
int r = 0;
- map<string, bufferptr>::iterator it = o->onode.attrs.find(name);
+ auto it = o->onode.attrs.find(name.c_str());
if (it == o->onode.attrs.end())
goto out;
f->dump_unsigned("nid", nid);
f->dump_unsigned("size", size);
f->open_object_section("attrs");
- for (map<string,bufferptr>::const_iterator p = attrs.begin();
- p != attrs.end(); ++p) {
+ for (auto p = attrs.begin(); p != attrs.end(); ++p) {
f->open_object_section("attr");
- f->dump_string("name", p->first);
+ f->dump_string("name", p->first.c_str()); // it's not quite std::string
f->dump_unsigned("len", p->second.length());
f->close_section();
}
struct bluestore_onode_t {
uint64_t nid = 0; ///< numeric id (locally unique)
uint64_t size = 0; ///< object size
- map<string, bufferptr> attrs; ///< attrs
+ map<mempool::bluestore_meta_other::string, bufferptr> attrs; ///< attrs
struct shard_info {
uint32_t offset = 0; ///< logical offset for start of shard