#include "include/rados/librados.hpp"
#include "common/errno.h"
#include "osd/osd_types.h"
+#include "rgw/rgw_tools.h"
#define dout_subsys ceph_subsys_rgw
return 0;
}
-int RGWSI_RADOS::Obj::operate(librados::ObjectWriteOperation *op)
+int RGWSI_RADOS::Obj::operate(librados::ObjectWriteOperation *op,
+ optional_yield y)
{
- return ref.ioctx.operate(ref.oid, op);
+ return rgw_rados_operate(ref.ioctx, ref.oid, op, y);
}
-int RGWSI_RADOS::Obj::operate(librados::ObjectReadOperation *op, bufferlist *pbl)
+int RGWSI_RADOS::Obj::operate(librados::ObjectReadOperation *op, bufferlist *pbl,
+ optional_yield y)
{
- return ref.ioctx.operate(ref.oid, op, pbl);
+ return rgw_rados_operate(ref.ioctx, ref.oid, op, pbl, y);
}
int RGWSI_RADOS::Obj::aio_operate(librados::AioCompletion *c, librados::ObjectWriteOperation *op)
#include "rgw/rgw_service.h"
#include "include/rados/librados.hpp"
+#include "common/async/yield_context.h"
class RGWAccessListFilter {
public:
int open();
- int operate(librados::ObjectWriteOperation *op);
- int operate(librados::ObjectReadOperation *op, bufferlist *pbl);
+ int operate(librados::ObjectWriteOperation *op, optional_yield y);
+ int operate(librados::ObjectReadOperation *op, bufferlist *pbl,
+ optional_yield y);
int aio_operate(librados::AioCompletion *c, librados::ObjectWriteOperation *op);
int aio_operate(librados::AioCompletion *c, librados::ObjectReadOperation *op,
bufferlist *pbl);
op.read(0, cct->_conf->rgw_max_chunk_size, first_chunk, nullptr);
}
bufferlist outbl;
- r = rados_obj.operate(&op, &outbl);
+ r = rados_obj.operate(&op, &outbl, null_yield);
if (epoch) {
*epoch = rados_obj.get_last_version();
ldout(cct, 20) << "get_rados_obj() on obj=" << obj << " returned " << r << dendl;
return r;
}
- r = rados_obj.operate(&op, nullptr);
+ r = rados_obj.operate(&op, nullptr, null_yield);
if (r < 0) {
ldout(cct, 20) << "rados_obj.operate() r=" << r << " bl.length=" << bl->length() << dendl;
return r;
int rval;
op.getxattr(name, dest, &rval);
- r = rados_obj.operate(&op, nullptr);
+ r = rados_obj.operate(&op, nullptr, null_yield);
if (r < 0)
return r;
bufferlist bl;
- r = rados_obj.operate(&op);
+ r = rados_obj.operate(&op, null_yield);
if (r < 0)
return r;
int rval;
op.omap_get_vals2(start_after, count, &t, &more, &rval);
- r = rados_obj.operate(&op, nullptr);
+ r = rados_obj.operate(&op, nullptr, null_yield);
if (r < 0) {
return r;
}
int rval;
op.omap_get_vals2(start_after, count, &t, &more, &rval);
- r = rados_obj.operate(&op, nullptr);
+ r = rados_obj.operate(&op, nullptr, null_yield);
if (r < 0) {
return r;
}
if (must_exist)
op.assert_exists();
op.omap_set(m);
- r = rados_obj.operate(&op);
+ r = rados_obj.operate(&op, null_yield);
return r;
}
if (must_exist)
op.assert_exists();
op.omap_set(m);
- r = rados_obj.operate(&op);
+ r = rados_obj.operate(&op, null_yield);
return r;
}
op.omap_rm_keys(k);
- r = rados_obj.operate(&op);
+ r = rados_obj.operate(&op, null_yield);
return r;
}
}
op.remove();
- r = rados_obj.operate(&op);
+ r = rados_obj.operate(&op, null_yield);
if (r < 0)
return r;
op.setxattr(name.c_str(), bl);
}
- r = rados_obj.operate(&op);
+ r = rados_obj.operate(&op, null_yield);
if (r < 0) {
return r;
}
objv_tracker->prepare_op_for_write(&op);
}
op.write_full(bl);
- r = rados_obj.operate(&op);
+ r = rados_obj.operate(&op, null_yield);
if (r < 0)
return r;