//zero_crc = ceph_crc32c(0xffffffff, NULL, block_size);
if (b) {
bufferlist bl;
- bufferptr bp(block_size);
- bp.zero();
- bl.append(bp);
+ bl.append_zero(block_size);
zero_crc = bl.crc32c(crc_iv);
} else {
zero_crc = crc_iv;
raw.copy((k - padded_chunks) * blocksize, remainder, buf.c_str());
buf.zero(remainder, blocksize - remainder);
- encoded[chunk_index(k-padded_chunks)].push_back(buf);
+ encoded[chunk_index(k-padded_chunks)].push_back(std::move(buf));
for (unsigned int i = k - padded_chunks + 1; i < k; i++) {
bufferptr buf(buffer::create_aligned(blocksize, SIMD_ALIGN));
buf.zero();
- encoded[chunk_index(i)].push_back(buf);
+ encoded[chunk_index(i)].push_back(std::move(buf));
}
}
for (unsigned int i = k; i < k + m; i++) {
ImageCtx *ictx = (ImageCtx *)ctx;
tracepoint(librbd, read_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(), ictx->read_only, ofs, len);
bufferptr ptr(len);
- bl.push_back(ptr);
+ bl.push_back(std::move(ptr));
int r = ictx->aio_work_queue->read(ofs, len, bl.c_str(), 0);
tracepoint(librbd, read_exit, r);
return r;
tracepoint(librbd, read2_enter, ictx, ictx->name.c_str(), ictx->snap_name.c_str(),
ictx->read_only, ofs, len, op_flags);
bufferptr ptr(len);
- bl.push_back(ptr);
+ bl.push_back(std::move(ptr));
int r = ictx->aio_work_queue->read(ofs, len, bl.c_str(), op_flags);
tracepoint(librbd, read_exit, r);
return r;
// head
unsigned head = 0;
head = MIN(CEPH_PAGE_SIZE - (off & ~CEPH_PAGE_MASK), left);
- bufferptr bp = buffer::create(head);
- data.push_back(bp);
+ data.push_back(buffer::create(head));
left -= head;
}
unsigned middle = left & CEPH_PAGE_MASK;
if (middle > 0) {
- bufferptr bp = buffer::create_page_aligned(middle);
- data.push_back(bp);
+ data.push_back(buffer::create_page_aligned(middle));
left -= middle;
}
if (left) {
- bufferptr bp = buffer::create(left);
- data.push_back(bp);
+ data.push_back(buffer::create(left));
}
}
// read front
unsigned front_len = current_header.front_len;
if (front_len) {
- if (!front.length()) {
- bufferptr ptr = buffer::create(front_len);
- front.push_back(ptr);
- }
+ if (!front.length())
+ front.push_back(buffer::create(front_len));
+
r = read_until(front_len, front.c_str());
if (r < 0) {
ldout(async_msgr->cct, 1) << __func__ << " read message front failed" << dendl;
// read middle
unsigned middle_len = current_header.middle_len;
if (middle_len) {
- if (!middle.length()) {
- bufferptr ptr = buffer::create(middle_len);
- middle.push_back(ptr);
- }
+ if (!middle.length())
+ middle.push_back(buffer::create(middle_len));
+
r = read_until(middle_len, middle.c_str());
if (r < 0) {
ldout(async_msgr->cct, 1) << __func__ << " read message middle failed" << dendl;
}
{
bufferptr tp(sizeof(peer_addr));
- addrbl.push_back(tp);
+ addrbl.push_back(std::move(tp));
}
if (tcp_read(addrbl.c_str(), addrbl.length()) < 0) {
ldout(msgr->cct,10) << "accept couldn't read peer_addr" << dendl;
ldout(msgr->cct,10) << "accept couldn't read connect authorizer" << dendl;
goto fail_unlocked;
}
- authorizer.push_back(bp);
+ authorizer.push_back(std::move(bp));
authorizer_reply.clear();
}
int wirelen = sizeof(__u32) * 2 + sizeof(ceph_sockaddr_storage);
bufferptr p(wirelen * 2);
#endif
- addrbl.push_back(p);
+ addrbl.push_back(std::move(p));
}
if (tcp_read(addrbl.c_str(), addrbl.length()) < 0) {
ldout(msgr->cct,2) << "connect couldn't read peer addrs, " << cpp_strerror(errno) << dendl;
// head
unsigned head = 0;
head = MIN(CEPH_PAGE_SIZE - (off & ~CEPH_PAGE_MASK), left);
- bufferptr bp = buffer::create(head);
- data.push_back(bp);
+ data.push_back(buffer::create(head));
left -= head;
}
unsigned middle = left & CEPH_PAGE_MASK;
if (middle > 0) {
- bufferptr bp = buffer::create_page_aligned(middle);
- data.push_back(bp);
+ data.push_back(buffer::create_page_aligned(middle));
left -= middle;
}
if (left) {
- bufferptr bp = buffer::create(left);
- data.push_back(bp);
+ data.push_back(buffer::create(left));
}
}
bufferptr bp = buffer::create(front_len);
if (tcp_read(bp.c_str(), front_len) < 0)
goto out_dethrottle;
- front.push_back(bp);
+ front.push_back(std::move(bp));
ldout(msgr->cct,20) << "reader got front " << front.length() << dendl;
}
bufferptr bp = buffer::create(middle_len);
if (tcp_read(bp.c_str(), middle_len) < 0)
goto out_dethrottle;
- middle.push_back(bp);
+ middle.push_back(std::move(bp));
ldout(msgr->cct,20) << "reader got middle " << middle.length() << dendl;
}
} else {
final.claim_append(*pbl);
size_t zlen = offset - final.length();
- bufferptr z(zlen);
- z.zero();
- final.append(z);
+ final.append_zero(zlen);
}
}
final.append(buf, size);
uint32_t crc = bl.crc32c(-1);
::encode(crc, bl);
assert(bl.length() <= get_super_length());
- bufferptr z(get_super_length() - bl.length());
- z.zero();
- bl.append(z);
+ bl.append_zero(get_super_length() - bl.length());
bl.rebuild();
IOContext ioc(NULL);
{
uint64_t partial = bl.length() % super.block_size;
if (partial) {
- bufferptr z(super.block_size - partial);
- dout(10) << __func__ << " padding with " << z.length() << " zeros" << dendl;
- z.zero();
- bufferlist zbl;
- zbl.append(z);
- bl.append(z);
+ dout(10) << __func__ << " padding with " << super.block_size - partial << " zeros" << dendl;
+ bl.append_zero(super.block_size - partial);
}
}
dout(20) << __func__ << " caching tail of " << tail
<< " and padding block with zeros" << dendl;
h->tail_block.substr_of(bl, bl.length() - tail, tail);
- bufferptr z(super.block_size - tail);
- z.zero();
- t.append(z);
+ t.append_zero(super.block_size - tail);
}
bdev[p->bdev]->aio_write(p->offset + x_off, t, h->iocv[p->bdev], true);
bloff += x_len;
assert(bl.length() <= BDEV_LABEL_BLOCK_SIZE);
bufferptr z(BDEV_LABEL_BLOCK_SIZE - bl.length());
z.zero();
- bl.append(z);
+ bl.append(std::move(z));
int fd = ::open(path.c_str(), O_WRONLY);
if (fd < 0) {
// unwritten (zero) extent
dout(30) << __func__ << " data " << bp->first << ": " << bp->second
<< ", use " << x_len << " zeros" << dendl;
- bufferptr bp(x_len);
- bp.zero();
- bl.push_back(bp);
+ bl.append_zero(x_len);
}
offset += x_len;
length -= x_len;
// zero.
dout(30) << __func__ << " zero " << offset << "~" << x_len << dendl;
- bufferptr bp(x_len);
- bp.zero();
- bl.push_back(bp);
+ bl.append_zero(x_len);
offset += x_len;
length -= x_len;
continue;
uint64_t offset,
uint64_t length)
{
- bufferptr z(length);
- z.zero();
bufferlist zl;
- zl.push_back(z);
+ zl.append_zero(length);
return _do_write(txc, c, o, offset, length, zl, 0);
}
goto out;
}
pbl->clear();
- pbl->push_back(p);
+ pbl->push_back(std::move(p));
dout(40) << "data: ";
pbl->hexdump(*_dout);
dout(10) << __func__ << " read from buffer " << copied << dendl;
}
pbl->clear();
- pbl->push_back(p);
+ pbl->push_back(std::move(p));
r = t->return_code;
rte_free(t->buf);
memset(bpdata, 0, bp.length() - r);
}
- bl.push_back(bp);
+ bl.push_back(std::move(bp));
try {
bufferlist::iterator p = bl.begin();
<< r << dendl;
ceph_abort();
}
- bl->push_back(bp);
+ bl->push_back(std::move(bp));
pos += len;
olen -= len;
}
}
bufferlist bl;
- bl.push_back(bp);
+ bl.push_back(std::move(bp));
bufferlist::iterator i = bl.begin();
::decode(superblock, i);
return 0;
return ret;
}
bufferlist bl;
- bl.push_back(bp);
+ bl.push_back(std::move(bp));
bufferlist::iterator i = bl.begin();
::decode(*version, i);
dout(10) << __func__ << " was " << *version << " vs target "
return got;
}
bptr.set_length(got); // properly size the buffer
- bl.push_back(bptr); // put it in the target bufferlist
+ bl.push_back(std::move(bptr)); // put it in the target bufferlist
#ifdef HAVE_POSIX_FADVISE
if (op_flags & CEPH_OSD_OP_FLAG_FADVISE_DONTNEED)
// write zeros.. yuck!
dout(20) << "zero FALLOC_FL_PUNCH_HOLE not supported, falling back to writing zeros" << dendl;
{
- bufferptr bp(len);
- bp.zero();
bufferlist bl;
- bl.push_back(bp);
+ bl.append_zero(len);
ret = _write(cid, oid, offset, len, bl);
}
goto out;
}
r = _fgetattr(fd, n, bp);
- bl.push_back(bp);
+ bl.push_back(std::move(bp));
VOID_TEMP_FAILURE_RETRY(::close(fd));
out:
dout(10) << "collection_getattr " << fn << " '" << name << "' = " << r << dendl;
}
}
bufferlist bl;
- bl.append(bp);
+ bl.append(std::move(bp));
bufferlist::iterator p = bl.begin();
try {
::decode(*cm, p);
{
// fall back to writing zeros
bufferlist bl;
- bufferptr bp(length);
- bp.zero();
- bl.append(bp);
+ bl.append_zero(length);
r = ::lseek64(fd, offset, SEEK_SET);
if (r < 0) {
r = -errno;
offset = _offset;
length = len;
bufferptr p = buffer::create_page_aligned(length);
- bl.append(p);
io_prep_pread(&iocb, fd, p.c_str(), length, offset);
+ bl.append(std::move(p));
}
int get_return_value() {
length = o->onode.size - offset;
}
if (stripe_size == 0) {
- bufferptr z(length);
- z.zero();
- bl.append(z);
+ bl.append_zero(length);
r = length;
goto out;
}
dout(30) << __func__ << " taking " << stripe_off << "~" << l << dendl;
}
if (l < swant) {
- bufferptr z(swant - l);
- z.zero();
- bl.append(z);
- dout(30) << __func__ << " adding " << z.length() << " zeros" << dendl;
+ bl.append_zero(swant - l);
+ dout(30) << __func__ << " adding " << swant - l << " zeros" << dendl;
}
}
} else {
dout(30) << __func__ << " generating " << swant << " zeros" << dendl;
- bufferptr z(swant);
- z.zero();
- bl.append(z);
+ bl.append_zero(swant);
}
offset += swant;
length -= swant;
bl.substr_of(prev, 0, p);
}
if (p < offset_rem) {
- bufferptr z(offset_rem - p);
- dout(20) << __func__ << " add leading " << z.length() << " zeros" << dendl;
- z.zero();
- bl.append(z);
+ dout(20) << __func__ << " add leading " << offset_rem - p << " zeros" << dendl;
+ bl.append_zero(offset_rem - p);
}
}
unsigned use = stripe_size - offset_rem;
dout(20) << __func__ << " truncated stripe " << pos - stripe_off
<< " to " << bl.length() << dendl;
} else {
- bufferptr z(end - (pos - stripe_off + bl.length()));
- z.zero();
- bl.append(z);
- dout(20) << __func__ << " adding " << z.length() << " of zeros" << dendl;
+ auto len = end - (pos - stripe_off + bl.length());
+ bl.append_zero(len);
+ dout(20) << __func__ << " adding " << len << " of zeros" << dendl;
if (stripe.length() > bl.length()) {
unsigned l = stripe.length() - bl.length();
bufferlist t;
{
dout(10) << __func__ << " " << cid << " " << oid << " " << offset << "~"
<< len << dendl;
- bufferptr bp(len);
- bp.zero();
bufferlist bl;
- bl.push_back(bp);
+ bl.append_zero(len);
return _write(cid, oid, offset, len, bl);
}
newdata.substr_of(data, 0, offset);
} else {
newdata.substr_of(data, 0, get_size());
- bufferptr bp(offset - get_size());
- bp.zero();
- newdata.append(bp);
+ newdata.append(offset - get_size());
}
newdata.append(src);
} else if (get_size() == size) {
// do nothing
} else {
- bufferptr bp(size - get_size());
- bp.zero();
- data.append(bp);
+ data.append_zero(size - get_size());
}
return 0;
}
tls_pages.clear(); // drop page refs
- bl.append(buf);
+ bl.append(std::move(buf));
return len;
}
bufferlist bl;
bufferptr bp(osize);
bp.zero();
- bl.push_back(bp);
+ bl.push_back(std::move(bp));
bl.rebuild_page_aligned();
for (int i=0; i<onum; ++i) {
char nm[30];
bufferlist bl;
bufferptr bp(bsize);
bp.zero();
- bl.push_back(bp);
+ bl.push_back(std::move(bp));
bl.rebuild_page_aligned();
{
bp);
if (r >= 0 && out) {
out->clear();
- out->push_back(bp);
+ out->push_back(std::move(bp));
}
return r;
}
<< dendl;
if (r >= 0 && bl.length() < length) {
- bufferptr bp(length - bl.length());
- bp.zero();
ldout(cct, 7) << "bh_read_finish " << oid << " padding " << start << "~"
- << length << " with " << bp.length() << " bytes of zeroes"
+ << length << " with " << length - bl.length() << " bytes of zeroes"
<< dendl;
- bl.push_back(bp);
+ bl.append_zero(length - bl.length());
}
list<Context*> ls;
// put substr here first, since substr_of clobbers, and we
// may get multiple bh's at this stripe_map position
if (bh->is_zero()) {
- bufferptr bp(len);
- bp.zero();
- stripe_map[f_it->first].push_back(bp);
+ stripe_map[f_it->first].append_zero(len);
} else {
bit.substr_of(bh->bl,
opos - bh->start(),
size_t len = p->second.first.length();
if (len < p->second.second) {
if (zero_tail || bl.length()) {
- bufferptr bp(p->second.second - len);
- bp.zero();
- bl.push_front(bp);
+ bl.append_zero(p->second.second - len);
bl.claim_prepend(p->second.first);
} else {
bl.claim_prepend(p->second.first);