int rgw_rados_operate(librados::IoCtx& ioctx, const std::string& oid,
librados::ObjectReadOperation *op, bufferlist* pbl,
- optional_yield y)
+ optional_yield y, int flags)
{
#ifdef HAVE_BOOST_CONTEXT
// given a yield_context, call async_operate() to yield the coroutine instead
auto& context = y.get_io_context();
auto& yield = y.get_yield_context();
boost::system::error_code ec;
- auto bl = librados::async_operate(context, ioctx, oid, op, 0, yield[ec]);
+ auto bl = librados::async_operate(
+ context, ioctx, oid, op, flags, yield[ec]);
if (pbl) {
*pbl = std::move(bl);
}
dout(20) << "WARNING: blocking librados call" << dendl;
}
#endif
- return ioctx.operate(oid, op, nullptr);
+ return ioctx.operate(oid, op, nullptr, flags);
}
int rgw_rados_operate(librados::IoCtx& ioctx, const std::string& oid,
- librados::ObjectWriteOperation *op, optional_yield y)
+ librados::ObjectWriteOperation *op, optional_yield y,
+ int flags)
{
#ifdef HAVE_BOOST_CONTEXT
if (y) {
auto& context = y.get_io_context();
auto& yield = y.get_yield_context();
boost::system::error_code ec;
- librados::async_operate(context, ioctx, oid, op, 0, yield[ec]);
+ librados::async_operate(context, ioctx, oid, op, flags, yield[ec]);
return -ec.value();
}
if (is_asio_thread) {
dout(20) << "WARNING: blocking librados call" << dendl;
}
#endif
- return ioctx.operate(oid, op);
+ return ioctx.operate(oid, op, flags);
}
int rgw_rados_notify(librados::IoCtx& ioctx, const std::string& oid,