hobject_t oid;
uint64_t off;
bufferlist bl;
- AppendOp(const hobject_t &oid, uint64_t off, bufferlist &bl)
- : oid(oid), off(off), bl(bl) {}
+ uint32_t fadvise_flags;
+ AppendOp(const hobject_t &oid, uint64_t off, bufferlist &bl, uint32_t flags)
+ : oid(oid), off(off), bl(bl), fadvise_flags(flags) {}
};
struct CloneOp {
hobject_t source;
const hobject_t &hoid,
uint64_t off,
uint64_t len,
- bufferlist &bl) {
+ bufferlist &bl,
+ uint32_t fadvise_flags) {
if (len == 0) {
touch(hoid);
return;
}
written += len;
assert(len == bl.length());
- ops.push_back(AppendOp(hoid, off, bl));
+ ops.push_back(AppendOp(hoid, off, bl, fadvise_flags));
}
void stash(
const hobject_t &hoid,
const hobject_t &hoid, ///< [in] object to write
uint64_t off, ///< [in] off at which to write
uint64_t len, ///< [in] len to write from bl
- bufferlist &bl ///< [in] bl to write will be claimed to len
+ bufferlist &bl, ///< [in] bl to write will be claimed to len
+ uint32_t fadvise_flags = 0 ///< [in] fadvise hint
) { assert(0); }
virtual void omap_setkeys(
const hobject_t &hoid, ///< [in] object to write
const hobject_t &hoid, ///< [in] object to write
uint64_t off, ///< [in] off at which to write
uint64_t len, ///< [in] len to write from bl
- bufferlist &bl ///< [in] bl to write will be claimed to len
- ) { write(hoid, off, len, bl); }
+ bufferlist &bl, ///< [in] bl to write will be claimed to len
+ uint32_t fadvise_flags ///< [in] fadvise hint
+ ) { write(hoid, off, len, bl, fadvise_flags); }
/// to_append *must* have come from the same PGBackend (same concrete type)
virtual void append(
if (result < 0)
break;
if (pool.info.require_rollback()) {
- t->append(soid, op.extent.offset, op.extent.length, osd_op.indata);
+ t->append(soid, op.extent.offset, op.extent.length, osd_op.indata, op.flags);
} else {
- t->write(soid, op.extent.offset, op.extent.length, osd_op.indata);
+ t->write(soid, op.extent.offset, op.extent.length, osd_op.indata, op.flags);
}
write_update_size_and_usage(ctx->delta_stats, oi, ctx->modified_ranges,
op.extent.offset, op.extent.length, true);
}
}
ctx->mod_desc.create();
- t->append(soid, op.extent.offset, op.extent.length, osd_op.indata);
+ t->append(soid, op.extent.offset, op.extent.length, osd_op.indata, op.flags);
if (obs.exists) {
map<string, bufferlist> to_set = ctx->obc->attr_cache;
map<string, boost::optional<bufferlist> > &overlay =
if (obs.exists) {
t->truncate(soid, 0);
}
- t->write(soid, op.extent.offset, op.extent.length, osd_op.indata);
+ t->write(soid, op.extent.offset, op.extent.length, osd_op.indata, op.flags);
}
if (!obs.exists) {
ctx->delta_stats.num_objects++;
cop->results.temp_oid,
cop->temp_cursor.data_offset,
cop->data.length(),
- cop->data);
+ cop->data,
+ 0);
cop->data.clear();
}
if (!pool.info.require_rollback()) {
bufferlist boi(sizeof(ctx->new_obs.oi));
::encode(ctx->new_obs.oi, boi);
- ctx->op_t->append(oid, 0, bl.length(), bl);
+ ctx->op_t->append(oid, 0, bl.length(), bl, 0);
setattr_maybe_cache(ctx->obc, ctx, ctx->op_t, OI_ATTR, boi);
setattr_maybe_cache(ctx->obc, ctx, ctx->op_t, SS_ATTR, bss);
ctx->log.push_back(