seastar::future<> PGBackend::setxattr(
ObjectState& os,
- const OSDOp& osd_op,
+ OSDOp& osd_op,
ceph::os::Transaction& txn)
{
if (local_conf()->osd_max_attr_size > 0 &&
bp.copy(osd_op.op.xattr.name_len, aname);
name = "_" + aname;
bp.copy(osd_op.op.xattr.value_len, val);
+ osd_op.indata.splice(0, bp.get_off());
}
logger().debug("setxattr on obj={} for attr={}", os.oi.soid, name);
std::string aname;
bp.copy(osd_op.op.xattr.name_len, aname);
name = "_" + aname;
+ osd_op.indata.splice(0, bp.get_off());
}
logger().debug("getxattr on obj={} for attr={}", os.oi.soid, name);
return getxattr(os.oi.soid, name).safe_then([&osd_op] (ceph::bufferptr val) {
auto p = osd_op.indata.cbegin();
decode(start_after, p);
decode(max_return, p);
+ osd_op.indata.splice(0, p.get_off());
} catch (buffer::error&) {
throw crimson::osd::invalid_argument{};
}
decode(start_after, p);
decode(max_return, p);
decode(filter_prefix, p);
+ osd_op.indata.splice(0, p.get_off());
} catch (buffer::error&) {
throw crimson::osd::invalid_argument{};
}
try {
auto p = osd_op.indata.cbegin();
decode(keys_to_get, p);
+ osd_op.indata.splice(0, p.get_off());
} catch (buffer::error&) {
throw crimson::osd::invalid_argument();
}
seastar::future<> PGBackend::omap_set_vals(
ObjectState& os,
- const OSDOp& osd_op,
+ OSDOp& osd_op,
ceph::os::Transaction& txn,
osd_op_params_t& osd_op_params)
{
try {
auto p = osd_op.indata.cbegin();
decode_str_str_map_to_bl(p, &to_set_bl);
+ osd_op.indata.splice(0, p.get_off());
} catch (buffer::error&) {
throw crimson::osd::invalid_argument{};
}
seastar::future<> PGBackend::omap_remove_range(
ObjectState& os,
- const OSDOp& osd_op,
+ OSDOp& osd_op,
ceph::os::Transaction& txn)
{
std::string key_begin, key_end;
auto p = osd_op.indata.cbegin();
decode(key_begin, p);
decode(key_end, p);
+ osd_op.indata.splice(0, p.get_off());
} catch (buffer::error& e) {
throw crimson::osd::invalid_argument{};
}
uint64_t limit) const;
seastar::future<> setxattr(
ObjectState& os,
- const OSDOp& osd_op,
+ OSDOp& osd_op,
ceph::os::Transaction& trans);
using get_attr_errorator = crimson::os::FuturizedStore::get_attr_errorator;
get_attr_errorator::future<> getxattr(
OSDOp& osd_op) const;
seastar::future<> omap_set_vals(
ObjectState& os,
- const OSDOp& osd_op,
+ OSDOp& osd_op,
ceph::os::Transaction& trans,
osd_op_params_t& osd_op_params);
seastar::future<ceph::bufferlist> omap_get_header(
ceph::os::Transaction& trans);
seastar::future<> omap_remove_range(
ObjectState& os,
- const OSDOp& osd_op,
+ OSDOp& osd_op,
ceph::os::Transaction& trans);
virtual void got_rep_op_reply(const MOSDRepOpReply&) {}