time_t *mtime,
int flags);
+/**
+ * Perform a write operation asynchronously
+ * @param write_op operation to perform
+ * @param io the ioctx that the object is in
+ * @param completion what to do when operation has been attempted
+ * @param oid the object id
+ * @param mtime the time to set the mtime to, NULL for the current time
+ * @param flags flags to apply to the entire operation (LIBRADOS_OPERATION_*)
+ */
+CEPH_RADOS_API int rados_aio_write_op_operate2(rados_write_op_t write_op,
+ rados_ioctx_t io,
+ rados_completion_t completion,
+ const char *oid,
+ struct timespec *mtime,
+ int flags);
+
/**
* Create a new rados_read_op_t read operation. This will store all
* actions to be performed atomically. You must call
}
LIBRADOS_C_API_BASE_DEFAULT(rados_aio_write_op_operate);
+extern "C" int LIBRADOS_C_API_DEFAULT_F(rados_aio_write_op_operate2)(
+ rados_write_op_t write_op,
+ rados_ioctx_t io,
+ rados_completion_t completion,
+ const char *oid,
+ struct timespec *mtime,
+ int flags)
+{
+ tracepoint(librados, rados_aio_write_op_operate2_enter, write_op, io, completion, oid, mtime, flags);
+ object_t obj(oid);
+ auto oimpl = static_cast<librados::ObjectOperationImpl*>(write_op);
+ librados::IoCtxImpl *ctx = (librados::IoCtxImpl *)io;
+ librados::AioCompletionImpl *c = (librados::AioCompletionImpl*)completion;
+
+ if (mtime) {
+ oimpl->rt = ceph::real_clock::from_timespec(*mtime);
+ oimpl->prt = &oimpl->rt;
+ }
+
+ int retval = ctx->aio_operate(obj, &oimpl->o, c, ctx->snapc, oimpl->prt, translate_flags(flags));
+ tracepoint(librados, rados_aio_write_op_operate_exit, retval);
+ return retval;
+}
+LIBRADOS_C_API_BASE_DEFAULT(rados_aio_write_op_operate2);
+
extern "C" rados_read_op_t LIBRADOS_C_API_DEFAULT_F(rados_create_read_op)()
{
tracepoint(librados, rados_create_read_op_enter);
)
)
+TRACEPOINT_EVENT(librados, rados_aio_write_op_operate2_enter,
+ TP_ARGS(
+ rados_write_op_t, op,
+ rados_ioctx_t, ioctx,
+ rados_completion_t, completion,
+ const char*, oid,
+ struct timespec*, ts,
+ int, flags),
+ TP_FIELDS(
+ ctf_integer_hex(rados_write_op_t, op, op)
+ ctf_integer_hex(rados_ioctx_t, ioctx, ioctx)
+ ctf_integer_hex(rados_completion_t, completion, completion)
+ ctf_string(oid, oid)
+ ceph_ctf_timespecp(ts, ts)
+ ctf_integer_hex(int, flags, flags)
+ )
+)
+
TRACEPOINT_EVENT(librados, rados_aio_write_op_operate_exit,
TP_ARGS(
int, retval),