bc(c)
{
assert(sbid > 0);
- get_shared_blob_key(sbid, &key);
}
BlueStore::SharedBlob::~SharedBlob()
{
assert(!sb->loaded);
bufferlist v;
- int r = store->db->get(PREFIX_SHARED_BLOB, sb->key, &v);
+ string key;
+ get_shared_blob_key(sb->sbid, &key);
+ int r = store->db->get(PREFIX_SHARED_BLOB, key, &v);
if (r < 0) {
derr << __func__ << " sbid 0x" << std::hex << sb->sbid << std::dec
- << " not found at key " << pretty_binary_string(sb->key) << dendl;
+ << " not found at key " << pretty_binary_string(key) << dendl;
assert(0 == "uh oh, missing shared_blob");
}
// update shared blob
b->shared_blob->loaded = true; // we are new and therefore up to date
b->shared_blob->sbid = blob.sbid;
- get_shared_blob_key(blob.sbid, &b->shared_blob->key);
shared_blob_set.add(b->shared_blob.get());
for (auto p : blob.extents) {
if (p.is_valid()) {
// finalize shared_blobs
for (auto sb : txc->shared_blobs) {
+ string key;
+ get_shared_blob_key(sb->sbid, &key);
if (sb->shared_blob.empty()) {
dout(20) << " shared_blob 0x" << std::hex << sb->sbid << std::dec
<< " is empty" << dendl;
- t->rmkey(PREFIX_SHARED_BLOB, sb->key);
+ t->rmkey(PREFIX_SHARED_BLOB, key);
} else {
bufferlist bl;
::encode(sb->shared_blob, bl);
dout(20) << " shared_blob 0x" << std::hex << sb->sbid << std::dec
<< " is " << bl.length() << dendl;
- t->set(PREFIX_SHARED_BLOB, sb->key, bl);
+ t->set(PREFIX_SHARED_BLOB, key, bl);
}
}
}