return r;
}
+void cls_rgw_encode_suggestion(char op, rgw_bucket_dir_entry& dirent, bufferlist& updates)
+{
+ updates.append(op);
+ ::encode(dirent, updates);
+}
+
+void cls_rgw_suggest_changes(ObjectWriteOperation& o, bufferlist& updates)
+{
+ o.exec("rgw", "dir_suggest_changes", updates);
+}
+
int cls_rgw_get_dir_header(IoCtx& io_ctx, string& oid, rgw_bucket_dir_header *header)
{
bufferlist in, out;
int cls_rgw_get_dir_header(librados::IoCtx& io_ctx, string& oid, rgw_bucket_dir_header *header);
+void cls_rgw_encode_suggestion(char op, rgw_bucket_dir_entry& dirent, bufferlist& updates);
+
+void cls_rgw_suggest_changes(librados::ObjectWriteOperation& o, bufferlist& updates);
+
/* usage logging */
int cls_rgw_usage_log_read(librados::IoCtx& io_ctx, string& oid, string& user,
uint64_t start_epoch, uint64_t end_epoch, uint32_t max_entries,
}
if (updates.length()) {
+ ObjectWriteOperation o;
+ cls_rgw_suggest_changes(o, updates);
// we don't care if we lose suggested updates, send them off blindly
AioCompletion *c = librados::Rados::aio_create_completion(NULL, NULL, NULL);
- r = io_ctx.aio_exec(oid, c, "rgw", "dir_suggest_changes", updates, NULL);
+ r = io_ctx.aio_operate(oid, c, &o);
c->release();
}
return m.size();
}
// encode a suggested removal of that key
list_state.epoch = io_ctx.get_last_version();
- suggested_updates.append(CEPH_RGW_REMOVE);
- ::encode(list_state, suggested_updates);
+ cls_rgw_encode_suggestion(CEPH_RGW_REMOVE, list_state, suggested_updates);
}
if (r < 0)
return r;
list_state.epoch = io_ctx.get_last_version();
list_state.meta.size = object.size;
list_state.meta.mtime.set_from_double(double(object.mtime));
- suggested_updates.append(CEPH_RGW_UPDATE);
- ::encode(list_state, suggested_updates);
+ cls_rgw_encode_suggestion(CEPH_RGW_UPDATE, list_state, suggested_updates);
return 0;
}