}
template <class T>
-static int read_index_entry(cls_method_context_t hctx, string& name, T *entry)
+static int read_omap_entry(cls_method_context_t hctx, const std::string& name,
+ T *entry)
{
bufferlist current_entry;
int rc = cls_cxx_map_get_val(hctx, name, ¤t_entry);
try {
decode(*entry, cur_iter);
} catch (buffer::error& err) {
- CLS_LOG(1, "ERROR: read_index_entry(): failed to decode entry\n");
+ CLS_LOG(1, "ERROR: %s(): failed to decode entry\n", __func__);
return -EIO;
}
+ return 0;
+}
+
+template <class T>
+static int read_index_entry(cls_method_context_t hctx, string& name, T *entry)
+{
+ int ret = read_omap_entry(hctx, name, entry);
+ if (ret < 0) {
+ return ret;
+ }
log_entry(__func__, "existing entry", entry);
return 0;
string index;
prepend_index_prefix(key, type, &index);
- bufferlist bl;
- int ret = cls_cxx_map_get_val(hctx, index, &bl);
+ int ret = read_omap_entry(hctx, key, info);
if (ret < 0)
return ret;
- try {
- auto iter = bl.cbegin();
- decode(*info, iter);
- } catch (buffer::error& err) {
- CLS_LOG(0, "ERROR: rgw_cls_gc_omap_get(): failed to decode index=%s\n", index.c_str());
- }
-
return 0;
}
return 0;
}
-static int get_reshard_entry(cls_method_context_t hctx, const string& key, cls_rgw_reshard_entry *entry)
-{
- bufferlist bl;
- int ret = cls_cxx_map_get_val(hctx, key, &bl);
- if (ret < 0)
- return ret;
- auto iter = bl.cbegin();
- try {
- decode(*entry, iter);
- } catch (buffer::error& err) {
- CLS_LOG(0, "ERROR: %s : failed to decode entry %s\n", __func__, err.what());
- return -EIO;
- }
- return 0;
-}
-
static int rgw_reshard_get(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
{
auto in_iter = in->cbegin();
string key;
cls_rgw_reshard_entry entry;
op.entry.get_key(&key);
- int ret = get_reshard_entry(hctx, key, &entry);
+ int ret = read_omap_entry(hctx, key, &entry);
if (ret < 0) {
return ret;
}
string key;
cls_rgw_reshard_entry entry;
cls_rgw_reshard_entry::generate_key(op.tenant, op.bucket_name, &key);
- int ret = get_reshard_entry(hctx, key, &entry);
+ int ret = read_omap_entry(hctx, key, &entry);
if (ret < 0) {
return ret;
}