});
case CEPH_OSD_OP_CREATE:
return do_write_op([&osd_op] (auto& backend, auto& os, auto& txn) {
+ osd_op_params = osd_op_params_t();
return backend.create(os, osd_op, txn);
}, true);
case CEPH_OSD_OP_WRITE:
return osd_op_errorator::now();
case CEPH_OSD_OP_SETXATTR:
return do_write_op([&osd_op] (auto& backend, auto& os, auto& txn) {
+ osd_op_params = osd_op_params_t();
return backend.setxattr(os, osd_op, txn);
}, true);
case CEPH_OSD_OP_DELETE:
return do_write_op([] (auto& backend, auto& os, auto& txn) {
+ osd_op_params = osd_op_params_t();
return backend.remove(os, txn);
}, true);
case CEPH_OSD_OP_CALL:
}
#endif
return do_write_op([&osd_op] (auto& backend, auto& os, auto& txn) {
+ osd_op_params = osd_op_params_t();
return backend.omap_set_header(os, osd_op, txn);
}, true);
case CEPH_OSD_OP_OMAPRMKEYRANGE:
}
#endif
return do_write_op([&osd_op] (auto& backend, auto& os, auto& txn) {
+ osd_op_params = osd_op_params_t();
return backend.omap_remove_range(os, osd_op, txn);
}, true);
// watch/notify
case CEPH_OSD_OP_WATCH:
return do_write_op([this, &osd_op] (auto& backend, auto& os, auto& txn) {
+ osd_op_params = osd_op_params_t();
return do_op_watch(osd_op, os, txn);
}, false);
case CEPH_OSD_OP_NOTIFY:
assert(obc);
const bool want_mutate = !txn.empty();
if (want_mutate) {
- if (!osd_op_params) {
- osd_op_params = osd_op_params_t();
- }
+ // osd_op_params are instantiated by every wr-like operation.
+ assert(osd_op_params);
osd_op_params->req = std::move(msg);
osd_op_params->at_version = pg.next_version();
osd_op_params->pg_trim_to = pg.get_pg_trim_to();