if (b.get_epoch() > latest_ver) {
dout(10) << __func__ << " using stashed monmap " << b.get_epoch()
<< " instead" << dendl;
- bl.claim(bl2);
+ bl = std::move(bl2);
} else {
dout(10) << __func__ << " ignoring stashed monmap " << b.get_epoch()
<< dendl;
}
}
if (found_first) {
- keys[start_after_key].claim(k);
+ keys[start_after_key] = std::move(k);
}
for (auto iter = keys.begin(); iter != keys.end(); ++iter) {
}
if (found_first) {
- keys[start_after_key].claim(k);
+ keys[start_after_key] = std::move(k);
}
for (auto iter = keys.begin(); iter != keys.end(); ++iter) {
inbl,
[&errss, outbl, &fin](int r, const std::string& err, bufferlist& out) {
errss << err;
- outbl->claim(out);
+ *outbl = std::move(out);
fin.finish(r);
});
{
}
}
- // sort-of-like-assignment-op
- void buffer::list::claim(list& bl)
- {
- // free my buffers
- clear();
- claim_append(bl);
- }
-
void buffer::list::claim_append(list& bl)
{
// steal the other guy's buffers
newdata.append(tail);
}
- data.claim(newdata);
+ data = std::move(newdata);
return 0;
}
if (get_size() > size) {
bufferlist bl;
bl.substr_of(data, 0, size);
- data.claim(bl);
+ data = std::move(bl);
} else if (get_size() == size) {
// do nothing
} else {
if (const auto ret = execute_osd_op(hctx, op); ret < 0) {
return ret;
}
- outbl->claim(op.outdata);
+ *outbl = std::move(op.outdata);
return outbl->length();
}
if (const auto ret = execute_osd_op(hctx, op); ret < 0) {
return ret;
}
- outbl->claim(op.outdata);
+ *outbl = std::move(op.outdata);
return outbl->length();
}
[this, &pop, &pi, first, t, response]
(auto& data_zeros, auto& data,
auto& usable_intervals) {
- data = pop.data;
- ceph::bufferlist usable_data;
- trim_pushed_data(pi.recovery_info.copy_subset, pop.data_included, data,
- &usable_intervals, &usable_data);
- data.claim(usable_data);
+ {
+ ceph::bufferlist usable_data;
+ trim_pushed_data(pi.recovery_info.copy_subset, pop.data_included, pop.data,
+ &usable_intervals, &usable_data);
+ data = std::move(usable_data);
+ }
pi.recovery_progress = pop.after_progress;
logger().debug("new recovery_info {}, new progress {}",
pi.recovery_info, pi.recovery_progress);
void reserve(size_t prealloc);
- void claim(list& bl);
+ [[deprecated("in favor of operator=(list&&)")]] void claim(list& bl) {
+ *this = std::move(bl);
+ }
void claim_append(list& bl);
// only for bl is bufferlist::page_aligned_appender
void claim_append_piecewise(list& bl);
if (preply_buf_len)
*preply_buf_len = reply_bl.length();
if (preply_bl)
- preply_bl->claim(reply_bl);
+ *preply_bl = std::move(reply_bl);
ctx->complete(ceph::from_error_code(ec));
}
return;
}
lock_owner_responded = true;
- response.claim(it.second);
+ response = std::move(it.second);
}
}
object_t oid = get_ondisk_object();
object_locator_t oloc(cache->mds->mdsmap->get_metadata_pool());
C_IO_Dir_OMAP_FetchedMore *fin = new C_IO_Dir_OMAP_FetchedMore(this, c);
- fin->hdrbl.claim(hdrbl);
+ fin->hdrbl = std::move(hdrbl);
fin->omap.swap(omap);
ObjectOperation rd;
rd.omap_get_vals(fin->omap.rbegin()->first,
} else if (mdr->more()->srcdn_auth_mds == *p &&
mdr->more()->inode_import.length() > 0) {
// information about rename imported caps
- r->inode_export.claim(mdr->more()->inode_import);
+ r->inode_export = std::move(mdr->more()->inode_import);
}
mds->send_message_mds(r, *p);
cache->encode_replica_inode(cur->inode, es.peer, bl, mds->mdsmap->get_up_features());
dout(7) << " added " << *cur->inode << dendl;
bl.claim_append(tracebl);
- tracebl.claim(bl);
+ tracebl = std::move(bl);
cur = cur->get_parent_dir();
// don't repeat dirfrags
cache->encode_replica_dir(cur, es.peer, bl);
dout(7) << " added " << *cur << dendl;
bl.claim_append(tracebl);
- tracebl.claim(bl);
+ tracebl = std::move(bl);
start = 'f'; // start with dirfrag
}
dirfrag_t df = cur->dirfrag();
struct MDSlaveUpdate {
MDSlaveUpdate(int oo, ceph::buffer::list &rbl) :
origop(oo) {
- rollback.claim(rbl);
+ rollback = std::move(rbl);
}
~MDSlaveUpdate() {
if (waiter)
capinfo.pathbase = pino;
capinfo.flock_len = 0;
snap_follows = sf;
- flockbl.claim(lb);
+ flockbl = std::move(lb);
}
void encode(ceph::buffer::list& bl) const;
void decode(ceph::buffer::list::const_iterator& bl);
// dir contents
void set_extra_bl(ceph::buffer::list& bl) {
- extra_bl.claim(bl);
+ extra_bl = std::move(bl);
}
ceph::buffer::list& get_extra_bl() {
return extra_bl;
// trace
void set_trace(ceph::buffer::list& bl) {
- trace_bl.claim(bl);
+ trace_bl = std::move(bl);
}
ceph::buffer::list& get_trace_bl() {
return trace_bl;
SafeMessage{MSG_MDS_LOCK, HEAD_VERSION, COMPAT_VERSION},
action(ac), asker(as), lock_type(lock->get_type()) {
lock->get_parent()->set_object_info(object_info);
- lockdata.claim(bl);
+ lockdata = std::move(bl);
}
~MLock() override {}
}
void add_slave_request(metareqid_t reqid, ceph::buffer::list& bl) {
- slave_requests[reqid].inode_caps.claim(bl);
+ slave_requests[reqid].inode_caps = std::move(bl);
}
void add_table_commits(int table, const std::set<version_t>& pending_commits) {
MMonMap() : Message{CEPH_MSG_MON_MAP} { }
explicit MMonMap(ceph::buffer::list &bl) : Message{CEPH_MSG_MON_MAP} {
- monmapbl.claim(bl);
+ monmapbl = std::move(bl);
}
private:
~MMonMap() override {}
}
void write(uint64_t off, uint64_t len, ceph::buffer::list& bl) {
add_simple_op(CEPH_OSD_OP_WRITE, off, len);
- data.claim(bl);
+ data = std::move(bl);
header.data_off = off;
}
void writefull(ceph::buffer::list& bl) {
add_simple_op(CEPH_OSD_OP_WRITEFULL, 0, bl.length());
- data.claim(bl);
+ data = std::move(bl);
header.data_off = 0;
}
void zero(uint64_t off, uint64_t len) {
void claim_op_out_data(std::vector<OSDOp>& o) {
ceph_assert(ops.size() == o.size());
for (unsigned i = 0; i < o.size(); i++) {
- ops[i].outdata.claim(o[i].outdata);
+ ops[i].outdata = std::move(o[i].outdata);
}
}
void claim_ops(std::vector<OSDOp>& o) {
epoch(e) {
set_tid(t);
if (blp)
- response_data.claim(*blp);
+ response_data = std::move(*blp);
}
std::string_view get_type_name() const override { return "poolopreply"; }
auto &op = command_table.get_command(tid);
if (op.outbl) {
- op.outbl->claim(data);
+ *op.outbl = std::move(data);
}
if (op.outs) {
void set_payload(ceph::buffer::list& bl) {
if (byte_throttler)
byte_throttler->put(payload.length());
- payload.claim(bl);
+ payload = std::move(bl);
if (byte_throttler)
byte_throttler->take(payload.length());
}
void set_middle(ceph::buffer::list& bl) {
if (byte_throttler)
byte_throttler->put(middle.length());
- middle.claim(bl);
+ middle = std::move(bl);
if (byte_throttler)
byte_throttler->take(middle.length());
}
void claim_data(ceph::buffer::list& bl) {
if (byte_throttler)
byte_throttler->put(data.length());
- bl.claim(data);
+ bl = std::move(data);
}
off_t get_data_len() const { return data.length(); }
}
OpenFile *o = new OpenFile;
o->path = p;
- o->bl.claim(bl);
+ o->bl = std::move(bl);
open_files[p] = o;
fi->fh = reinterpret_cast<uint64_t>(o);
++o->ref;
if (pbl) {
FuseStore::OpenFile *o = new FuseStore::OpenFile;
- o->bl.claim(*pbl);
+ o->bl = std::move(*pbl);
fi->fh = reinterpret_cast<uint64_t>(o);
}
return 0;
if (pbl) {
FuseStore::OpenFile *o = new FuseStore::OpenFile;
- o->bl.claim(*pbl);
+ o->bl = std::move(*pbl);
o->dirty = true;
fi->fh = reinterpret_cast<uint64_t>(o);
}
if (pc != cache_res.end() &&
pc->first == b_off) {
l = pc->second.length();
- ready_regions[pos].claim(pc->second);
+ ready_regions[pos] = std::move(pc->second);
dout(30) << __func__ << " use cache 0x" << std::hex << pos << ": 0x"
<< b_off << "~" << l << std::dec << dendl;
++pc;
return 0;
});
ceph_assert(r == 0);
- op->data.claim(bl);
+ op->data = std::move(bl);
dout(20) << __func__ << " deferred write 0x" << std::hex << b_off << "~"
<< b_len << std::dec << " of mutable " << *b
<< " at " << op->extents << dendl;
bluestore_deferred_op_t* op = _get_deferred_op(txc);
op->op = bluestore_deferred_op_t::OP_WRITE;
op->extents.swap(dctx.res_extents);
- op->data.claim(bl);
+ op->data = std::move(bl);
}
}
if (data.length()) {
ceph::buffer::list t;
t.substr_of(data, 0, newlen);
- data.claim(t);
+ data = std::move(t);
}
length = newlen;
}
ebl.append((const char*)&h, sizeof(h));
if (directio)
ebl.rebuild_aligned(CEPH_DIRECTIO_ALIGNMENT);
- tbl->claim(ebl);
+ *tbl = std::move(ebl);
return h.len;
}
ZTracer::Trace trace;
write_item(uint64_t s, ceph::buffer::list& b, int ol, TrackedOpRef opref) :
seq(s), orig_len(ol), tracked_op(opref) {
- bl.claim(b);
+ bl = std::move(b);
}
write_item() : seq(0), orig_len(0) {}
};
aio_info(ceph::buffer::list& b, uint64_t o, uint64_t s)
: iov(NULL), done(false), off(o), len(b.length()), seq(s) {
- bl.claim(b);
+ bl = std::move(b);
}
~aio_info() {
delete[] iov;
newdata.append(tail);
}
- data.claim(newdata);
+ data = std::move(newdata);
return 0;
}
if (get_size() > size) {
ceph::buffer::list bl;
bl.substr_of(data, 0, size);
- data.claim(bl);
+ data = std::move(bl);
} else if (get_size() == size) {
// do nothing
} else {
for(map<pg_shard_t, bufferlist>::iterator i = to_read.get<2>().begin();
i != to_read.get<2>().end();
++i) {
- from[i->first.shard].claim(i->second);
+ from[i->first.shard] = std::move(i->second);
}
dout(10) << __func__ << ": " << from << dendl;
int r;
sinfo.aligned_offset_len_to_chunk(
make_pair(req_iter->get<0>(), req_iter->get<1>()));
ceph_assert(adjusted.first == j->first);
- riter->get<2>()[from].claim(j->second);
+ riter->get<2>()[from] = std::move(j->second);
}
}
for (auto i = op.attrs_read.begin();
res.returned.front().get<2>().begin();
j != res.returned.front().get<2>().end();
++j) {
- to_decode[j->first.shard].claim(j->second);
+ to_decode[j->first.shard] = std::move(j->second);
}
int r = ECUtil::decode(
ec->sinfo,
return true;
}
ceph::buffer::list merge(ceph::buffer::list &&left, ceph::buffer::list &&right) const {
- ceph::buffer::list bl;
- bl.claim(left);
+ ceph::buffer::list bl{std::move(left)};
bl.claim_append(right);
return bl;
}
}
max--;
max_bytes -= bl.length();
- m->maps[since].claim(bl);
+ m->maps[since] = std::move(bl);
}
for (epoch_t e = since + 1; e <= to; ++e) {
bufferlist bl;
if (get_inc_map_bl(e, bl)) {
- m->incremental_maps[e].claim(bl);
+ m->incremental_maps[e] = std::move(bl);
} else {
dout(10) << __func__ << " missing incremental map " << e << dendl;
if (!get_map_bl(e, bl)) {
derr << __func__ << " also missing full map " << e << dendl;
goto panic;
}
- m->maps[e].claim(bl);
+ m->maps[e] = std::move(bl);
}
max--;
max_bytes -= bl.length();
// send something
bufferlist bl;
if (get_inc_map_bl(m->newest_map, bl)) {
- m->incremental_maps[m->newest_map].claim(bl);
+ m->incremental_maps[m->newest_map] = std::move(bl);
} else {
derr << __func__ << " unable to load latest map " << m->newest_map << dendl;
if (!get_map_bl(m->newest_map, bl)) {
<< dendl;
ceph_abort();
}
- m->maps[m->newest_map].claim(bl);
+ m->maps[m->newest_map] = std::move(bl);
}
return m;
}
++p) {
bufferlist bl(sizeof(*p) * 2);
p->encode_with_checksum(bl);
- (*km)[p->get_key_name()].claim(bl);
+ (*km)[p->get_key_name()] = std::move(bl);
}
for (auto p = log.log.rbegin();
++p) {
bufferlist bl(sizeof(*p) * 2);
p->encode_with_checksum(bl);
- (*km)[p->get_key_name()].claim(bl);
+ (*km)[p->get_key_name()] = std::move(bl);
}
if (log_keys_debug) {
break;
bufferlist bl;
encode(entry, bl);
- (*km)[entry.get_key_name()].claim(bl);
+ (*km)[entry.get_key_name()] = std::move(bl);
}
for (auto p = log.dups.rbegin();
++p) {
bufferlist bl;
encode(*p, bl);
- (*km)[p->get_key_name()].claim(bl);
+ (*km)[p->get_key_name()] = std::move(bl);
}
if (dirty_divergent_priors) {
++p) {
bufferlist bl(sizeof(*p) * 2);
p->encode_with_checksum(bl);
- (*km)[p->get_key_name()].claim(bl);
+ (*km)[p->get_key_name()] = std::move(bl);
}
for (auto p = log.log.rbegin();
++p) {
bufferlist bl(sizeof(*p) * 2);
p->encode_with_checksum(bl);
- (*km)[p->get_key_name()].claim(bl);
+ (*km)[p->get_key_name()] = std::move(bl);
}
if (log_keys_debug) {
break;
bufferlist bl;
encode(entry, bl);
- (*km)[entry.get_key_name()].claim(bl);
+ (*km)[entry.get_key_name()] = std::move(bl);
}
for (auto p = log.dups.rbegin();
++p) {
bufferlist bl;
encode(*p, bl);
- (*km)[p->get_key_name()].claim(bl);
+ (*km)[p->get_key_name()] = std::move(bl);
}
if (clear_divergent_priors) {
map <string, bufferlist> attrs;
bl.clear();
encode(snapset, bl);
- attrs[SS_ATTR].claim(bl);
+ attrs[SS_ATTR] = std::move(bl);
bl.clear();
encode(head_obc->obs.oi, bl,
get_osdmap()->get_features(CEPH_ENTITY_TYPE_OSD, nullptr));
- attrs[OI_ATTR].claim(bl);
+ attrs[OI_ATTR] = std::move(bl);
t->setattrs(head_oid, attrs);
}
ops[0].op.extent.length = 0;
ops[1].op.op = CEPH_OSD_OP_OMAPSETHEADER;
- ops[1].indata.claim(header);
+ ops[1].indata = std::move(header);
ops[2].op.op = CEPH_OSD_OP_OMAPSETVALS;
- ops[2].indata.claim(vals);
+ ops[2].indata = std::move(vals);
return do_osd_ops(ctx, ops);
}
int r = osd->store->fiemap(ch, ghobject_t(soid, ghobject_t::NO_GEN,
info.pgid.shard),
op.extent.offset, op.extent.length, bl);
- osd_op.outdata.claim(bl);
+ osd_op.outdata = std::move(bl);
if (r < 0)
result = r;
else
newop.op.extent.truncate_seq = oi.truncate_seq;
newop.indata = osd_op.indata;
result = do_osd_ops(ctx, nops);
- osd_op.outdata.claim(newop.outdata);
+ osd_op.outdata = std::move(newop.outdata);
}
break;
newop.op.extent.offset = 0;
newop.op.extent.length = 0;
result = do_osd_ops(ctx, nops);
- osd_op.outdata.claim(newop.outdata);
+ osd_op.outdata = std::move(newop.outdata);
}
break;
bufferlist bv(sizeof(ctx->new_obs.oi));
encode(ctx->new_obs.oi, bv,
get_osdmap()->get_features(CEPH_ENTITY_TYPE_OSD, nullptr));
- attrs[OI_ATTR].claim(bv);
+ attrs[OI_ATTR] = std::move(bv);
// snapset
if (soid.snap == CEPH_NOSNAP) {
<< " in " << soid << dendl;
bufferlist bss;
encode(ctx->new_snapset, bss);
- attrs[SS_ATTR].claim(bss);
+ attrs[SS_ATTR] = std::move(bss);
} else {
dout(10) << " no snapset (this is a clone)" << dendl;
}
ctx->clean_regions.mark_data_region_dirty(0, bl.length());
}
map <string, bufferlist> attrs;
- attrs[OI_ATTR].claim(boi);
- attrs[SS_ATTR].claim(bss);
+ attrs[OI_ATTR] = std::move(boi);
+ attrs[SS_ATTR] = std::move(bss);
setattrs_maybe_cache(ctx->obc, ctx->op_t.get(), attrs);
ctx->log.push_back(
pg_log_entry_t(
i != out->end();
++i) {
if (i->first.size() > 1 && i->first[0] == '_')
- tmp[i->first.substr(1, i->first.size())].claim(i->second);
+ tmp[i->first.substr(1, i->first.size())] = std::move(i->second);
}
tmp.swap(*out);
return r;
explicit NotifyAck(uint64_t notify_id) : notify_id(notify_id) {}
NotifyAck(uint64_t notify_id, uint64_t cookie, ceph::buffer::list& rbl)
: watch_cookie(cookie), notify_id(notify_id) {
- reply_bl.claim(rbl);
+ reply_bl = std::move(rbl);
}
};
std::list<NotifyAck> notify_acks;
&usable_intervals,
&usable_data);
data_included = usable_intervals;
- data.claim(usable_data);
+ data = std::move(usable_data);
pi.recovery_progress = pop.after_progress;
ret = (*pctx)->pg->do_osd_ops(*pctx, ops);
if (ret < 0)
return ret;
- outbl->claim(ops[0].outdata);
+ *outbl = std::move(ops[0].outdata);
return outbl->length();
}
if (r < 0)
return r;
- outbl->claim(op.outdata);
+ *outbl = std::move(op.outdata);
return outbl->length();
}
if (ret < 0)
return ret;
- outbl->claim(op.outdata);
+ *outbl = std::move(op.outdata);
return 0;
}
PrimaryLogPG::OpContext **pctx = (PrimaryLogPG::OpContext **)hctx;
vector<OSDOp> ops(1);
OSDOp& op = ops[0];
- op.indata.claim(*inbl);
+ op.indata = std::move(*inbl);
op.op.op = CEPH_OSD_OP_OMAPSETHEADER;
bl.reassign_to_mempool(mempool::mempool_osd_pglog);
}
void claim(ObjectModDesc &other) {
- bl.clear();
- bl.claim(other.bl);
+ bl = std::move(other.bl);
can_local_rollback = other.can_local_rollback;
rollback_info_completed = other.rollback_info_completed;
}
ceph::buffer::list bl;
bl.push_back(ceph::buffer::ptr_node::create(op.op.xattr.name_len));
bl.begin().copy_in(op.op.xattr.name_len, op.indata);
- op.indata.claim(bl);
+ op.indata = std::move(bl);
} else if (ceph_osd_op_type_exec(op.op.op) &&
op.op.cls.class_len &&
op.indata.length() >
ceph::buffer::list bl;
bl.push_back(ceph::buffer::ptr_node::create(len));
bl.begin().copy_in(len, op.indata);
- op.indata.claim(bl);
+ op.indata = std::move(bl);
} else {
op.indata.clear();
}
<< " into existing ceph::buffer of length " << op->outbl->length()
<< dendl;
cb::list t;
- t.claim(*op->outbl);
+ t = std::move(*op->outbl);
t.invalidate_crc(); // we're overwriting the raw buffers via c_str()
bl.begin().copy(bl.length(), t.c_str());
op->outbl->substr_of(t, 0, bl.length());
PoolOp *op = iter->second;
ldout(cct, 10) << "have request " << tid << " at " << op << " Op: "
<< ceph_pool_op_name(op->pool_op) << dendl;
- cb::list bl;
- bl.claim(m->response_data);
+ cb::list bl{std::move(m->response_data)};
if (m->version > last_seen_osdmap_version)
last_seen_osdmap_version = m->version;
if (osdmap->get_epoch() < m->epoch) {
r.assemble_result(cct, *bl, false);
} else {
ldout(cct, 15) << " only one frag" << dendl;
- bl->claim(resultbl[0]);
+ *bl = std::move(resultbl[0]);
}
// done
compressed = false;
ldout(cct, 5) << "Compression failed with exit code " << cr
<< " for first part, storing uncompressed" << dendl;
- out.claim(in);
+ out = std::move(in);
} else {
compressed = true;
}
} else {
compressed = false;
- out.claim(in);
+ out = std::move(in);
}
// end of compression stuff
}
in_bl.append(temp_in_bl);
waiting.clear();
} else {
- in_bl.claim(temp_in_bl);
+ in_bl = std::move(temp_in_bl);
}
bl_len = in_bl.length();
public:
RGWReadV(buffer::list& _bl, rgw_vio* _vio) : vio(_vio) {
- bl.claim(_bl);
+ bl = std::move(_bl);
}
struct rgw_vio* get_vio() { return vio; }
int get_data(buffer::list& _bl) override {
/* XXX for now, use sharing semantics */
- _bl.claim(bl);
+ _bl = std::move(bl);
uint32_t len = _bl.length();
bytes_written += len;
return len;
int get_data(buffer::list& _bl) override {
/* XXX for now, use sharing semantics */
uint32_t len = data.length();
- _bl.claim(data);
+ _bl = std::move(data);
bytes_written += len;
return len;
}
if (off != real_ofs) {
eio = true;
}
- data.claim(_bl);
+ data = std::move(_bl);
real_ofs += data.length();
ofs = off; /* consumed in exec_continue() */
}
} catch (buffer::error& err) {
return -EINVAL;
}
- state->bl.clear();
- state->bl.claim(old);
+ state->bl = std::move(old);
state->bl.claim_append(more);
state->p = state->bl.cbegin();
if ((unsigned)r < chunk)
if (bletag.length() > 0 && bletag[bletag.length() - 1] == '\0') {
bufferlist newbl;
bletag.splice(0, bletag.length() - 1, &newbl);
- bletag.claim(newbl);
+ bletag = std::move(newbl);
}
}
response.append((char)0); /* NULL terminate response */
if (outbl) {
- outbl->claim(response);
+ *outbl = std::move(response);
}
return status;
}
}
+TEST(BufferList, operator_assign_rvalue) {
+ bufferlist from;
+ {
+ bufferptr ptr(2);
+ from.append(ptr);
+ }
+ bufferlist to;
+ {
+ bufferptr ptr(4);
+ to.append(ptr);
+ }
+ EXPECT_EQ((unsigned)4, to.length());
+ EXPECT_EQ((unsigned)1, to.get_num_buffers());
+ to = std::move(from);
+ EXPECT_EQ((unsigned)2, to.length());
+ EXPECT_EQ((unsigned)1, to.get_num_buffers());
+ EXPECT_EQ((unsigned)0, from.get_num_buffers());
+ EXPECT_EQ((unsigned)0, from.length());
+}
+
TEST(BufferList, operator_equal) {
//
// list& operator= (const list& other)
}
}
-TEST(BufferList, claim) {
- bufferlist from;
- {
- bufferptr ptr(2);
- from.append(ptr);
- }
- bufferlist to;
- {
- bufferptr ptr(4);
- to.append(ptr);
- }
- EXPECT_EQ((unsigned)4, to.length());
- EXPECT_EQ((unsigned)1, to.get_num_buffers());
- to.claim(from);
- EXPECT_EQ((unsigned)2, to.length());
- EXPECT_EQ((unsigned)1, to.get_num_buffers());
- EXPECT_EQ((unsigned)0, from.get_num_buffers());
- EXPECT_EQ((unsigned)0, from.length());
-}
-
TEST(BufferList, claim_append) {
bufferlist from;
{