int RGWSI_SysObj_Cache::remove(RGWSysObjectCtxBase& obj_ctx,
RGWObjVersionTracker *objv_tracker,
- const rgw_raw_obj& obj)
+ const rgw_raw_obj& obj,
+ optional_yield y)
{
rgw_pool pool;
cache.remove(name);
ObjectCacheInfo info;
- int r = distribute_cache(name, obj, info, REMOVE_OBJ);
+ int r = distribute_cache(name, obj, info, REMOVE_OBJ, y);
if (r < 0) {
ldout(cct, 0) << "ERROR: " << __func__ << "(): failed to distribute cache: r=" << r << dendl;
}
- return RGWSI_SysObj_Core::remove(obj_ctx, objv_tracker, obj);
+ return RGWSI_SysObj_Core::remove(obj_ctx, objv_tracker, obj, y);
}
int RGWSI_SysObj_Cache::read(RGWSysObjectCtxBase& obj_ctx,
map<string, bufferlist> *attrs,
bool raw_attrs,
rgw_cache_entry_info *cache_info,
- boost::optional<obj_version> refresh_version)
+ boost::optional<obj_version> refresh_version,
+ optional_yield y)
{
rgw_pool pool;
string oid;
if (ofs != 0) {
return RGWSI_SysObj_Core::read(obj_ctx, read_state, objv_tracker,
- obj, obl, ofs, end, attrs, raw_attrs,
- cache_info, refresh_version);
+ obj, obl, ofs, end, attrs, raw_attrs,
+ cache_info, refresh_version, y);
}
normalize_pool_and_obj(obj.pool, obj.oid, pool, oid);
(attrs ? &unfiltered_attrset : nullptr),
true, /* cache unfiltered attrs */
cache_info,
- refresh_version);
+ refresh_version, y);
if (r < 0) {
if (r == -ENOENT) { // only update ENOENT, we'd rather retry other errors
info.status = r;
}
int RGWSI_SysObj_Cache::get_attr(const rgw_raw_obj& obj,
- const char *attr_name,
- bufferlist *dest)
+ const char *attr_name,
+ bufferlist *dest,
+ optional_yield y)
{
rgw_pool pool;
string oid;
return dest->length();
}
/* don't try to cache this one */
- return RGWSI_SysObj_Core::get_attr(obj, attr_name, dest);
+ return RGWSI_SysObj_Core::get_attr(obj, attr_name, dest, y);
}
int RGWSI_SysObj_Cache::set_attrs(const rgw_raw_obj& obj,
map<string, bufferlist>& attrs,
map<string, bufferlist> *rmattrs,
- RGWObjVersionTracker *objv_tracker)
+ RGWObjVersionTracker *objv_tracker,
+ optional_yield y)
{
rgw_pool pool;
string oid;
info.version = objv_tracker->write_version;
info.flags |= CACHE_FLAG_OBJV;
}
- int ret = RGWSI_SysObj_Core::set_attrs(obj, attrs, rmattrs, objv_tracker);
+ int ret = RGWSI_SysObj_Core::set_attrs(obj, attrs, rmattrs, objv_tracker, y);
string name = normal_name(pool, oid);
if (ret >= 0) {
cache.put(name, info, NULL);
- int r = distribute_cache(name, obj, info, UPDATE_OBJ);
+ int r = distribute_cache(name, obj, info, UPDATE_OBJ, y);
if (r < 0)
ldout(cct, 0) << "ERROR: failed to distribute cache for " << obj << dendl;
} else {
bool exclusive,
const bufferlist& data,
RGWObjVersionTracker *objv_tracker,
- real_time set_mtime)
+ real_time set_mtime,
+ optional_yield y)
{
rgw_pool pool;
string oid;
}
ceph::real_time result_mtime;
int ret = RGWSI_SysObj_Core::write(obj, &result_mtime, attrs,
- exclusive, data,
- objv_tracker, set_mtime);
+ exclusive, data,
+ objv_tracker, set_mtime, y);
if (pmtime) {
*pmtime = result_mtime;
}
// will need that system object in the near-term and b) it
// generates additional network traffic.
if (!exclusive) {
- int r = distribute_cache(name, obj, info, UPDATE_OBJ);
+ int r = distribute_cache(name, obj, info, UPDATE_OBJ, y);
if (r < 0)
ldout(cct, 0) << "ERROR: failed to distribute cache for " << obj << dendl;
}
int RGWSI_SysObj_Cache::write_data(const rgw_raw_obj& obj,
const bufferlist& data,
bool exclusive,
- RGWObjVersionTracker *objv_tracker)
+ RGWObjVersionTracker *objv_tracker,
+ optional_yield y)
{
rgw_pool pool;
string oid;
info.version = objv_tracker->write_version;
info.flags |= CACHE_FLAG_OBJV;
}
- int ret = RGWSI_SysObj_Core::write_data(obj, data, exclusive, objv_tracker);
+ int ret = RGWSI_SysObj_Core::write_data(obj, data, exclusive, objv_tracker, y);
string name = normal_name(pool, oid);
if (ret >= 0) {
cache.put(name, info, NULL);
- int r = distribute_cache(name, obj, info, UPDATE_OBJ);
+ int r = distribute_cache(name, obj, info, UPDATE_OBJ, y);
if (r < 0)
ldout(cct, 0) << "ERROR: failed to distribute cache for " << obj << dendl;
} else {
int RGWSI_SysObj_Cache::raw_stat(const rgw_raw_obj& obj, uint64_t *psize, real_time *pmtime, uint64_t *pepoch,
map<string, bufferlist> *attrs, bufferlist *first_chunk,
- RGWObjVersionTracker *objv_tracker)
+ RGWObjVersionTracker *objv_tracker,
+ optional_yield y)
{
rgw_pool pool;
string oid;
objv_tracker->read_version = info.version;
goto done;
}
- r = RGWSI_SysObj_Core::raw_stat(obj, &size, &mtime, &epoch, &info.xattrs, first_chunk, objv_tracker);
+ r = RGWSI_SysObj_Core::raw_stat(obj, &size, &mtime, &epoch, &info.xattrs,
+ first_chunk, objv_tracker, y);
if (r < 0) {
if (r == -ENOENT) {
info.status = r;
return 0;
}
-int RGWSI_SysObj_Cache::distribute_cache(const string& normal_name, const rgw_raw_obj& obj, ObjectCacheInfo& obj_info, int op)
+int RGWSI_SysObj_Cache::distribute_cache(const string& normal_name,
+ const rgw_raw_obj& obj,
+ ObjectCacheInfo& obj_info, int op,
+ optional_yield y)
{
RGWCacheNotifyInfo info;
-
info.op = op;
-
info.obj_info = obj_info;
info.obj = obj;
bufferlist bl;
encode(info, bl);
- return notify_svc->distribute(normal_name, bl);
+ return notify_svc->distribute(normal_name, bl, y);
}
int RGWSI_SysObj_Cache::watch_cb(uint64_t notify_id,
int raw_stat(const rgw_raw_obj& obj, uint64_t *psize, real_time *pmtime, uint64_t *epoch,
map<string, bufferlist> *attrs, bufferlist *first_chunk,
- RGWObjVersionTracker *objv_tracker) override;
+ RGWObjVersionTracker *objv_tracker,
+ optional_yield y) override;
int read(RGWSysObjectCtxBase& obj_ctx,
GetObjState& read_state,
map<string, bufferlist> *attrs,
bool raw_attrs,
rgw_cache_entry_info *cache_info,
- boost::optional<obj_version>) override;
+ boost::optional<obj_version>,
+ optional_yield y) override;
- int get_attr(const rgw_raw_obj& obj, const char *name, bufferlist *dest) override;
+ int get_attr(const rgw_raw_obj& obj, const char *name, bufferlist *dest,
+ optional_yield y) override;
int set_attrs(const rgw_raw_obj& obj,
map<string, bufferlist>& attrs,
map<string, bufferlist> *rmattrs,
- RGWObjVersionTracker *objv_tracker);
+ RGWObjVersionTracker *objv_tracker,
+ optional_yield y);
int remove(RGWSysObjectCtxBase& obj_ctx,
RGWObjVersionTracker *objv_tracker,
- const rgw_raw_obj& obj) override;
+ const rgw_raw_obj& obj,
+ optional_yield y) override;
int write(const rgw_raw_obj& obj,
real_time *pmtime,
bool exclusive,
const bufferlist& data,
RGWObjVersionTracker *objv_tracker,
- real_time set_mtime) override;
+ real_time set_mtime,
+ optional_yield y) override;
int write_data(const rgw_raw_obj& obj,
const bufferlist& bl,
bool exclusive,
- RGWObjVersionTracker *objv_tracker);
+ RGWObjVersionTracker *objv_tracker,
+ optional_yield y);
- int distribute_cache(const string& normal_name, const rgw_raw_obj& obj, ObjectCacheInfo& obj_info, int op);
+ int distribute_cache(const string& normal_name, const rgw_raw_obj& obj,
+ ObjectCacheInfo& obj_info, int op,
+ optional_yield y);
int watch_cb(uint64_t notify_id,
uint64_t cookie,