} else {
endoff = n->offset;
}
- unsigned nn;
bufferlist& bl = encoded_shards[pos].bl;
- if (encode_some(p->offset, endoff - p->offset, bl, &nn)) {
+ if (encode_some(p->offset, endoff - p->offset, bl, &p->extents)) {
if (!force) {
return;
}
return false;
}
-void BlueStore::ExtentMap::decode_some(bufferlist& bl)
+unsigned BlueStore::ExtentMap::decode_some(bufferlist& bl)
{
/*
derr << __func__ << ":";
}
assert(n == num);
+ return num;
}
void BlueStore::ExtentMap::bound_encode_spanning_blobs(size_t& p)
}
}
);
- decode_some(v);
+ p->extents = decode_some(v);
p->loaded = true;
dout(20) << __func__ << " open shard 0x" << std::hex << p->offset
<< std::dec << " (" << v.length() << " bytes)" << dendl;
struct Shard {
bluestore_onode_t::shard_info *shard_info;
uint32_t offset = 0; ///< starting logical offset
+ unsigned extents = 0; ///< count extents in this shard
bool loaded = false; ///< true if shard is loaded
bool dirty = false; ///< true if shard is dirty and needs reencoding
};
bool encode_some(uint32_t offset, uint32_t length, bufferlist& bl,
unsigned *pn);
- void decode_some(bufferlist& bl);
+ unsigned decode_some(bufferlist& bl);
void bound_encode_spanning_blobs(size_t& p);
void encode_spanning_blobs(bufferlist::contiguous_appender& p);