]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: add high level omap calls
authorYehuda Sadeh <yehuda@hq.newdream.net>
Tue, 6 Mar 2012 21:40:17 +0000 (13:40 -0800)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Tue, 6 Mar 2012 22:18:18 +0000 (14:18 -0800)
also rename get_vals_by_key to get_vals_by_keys

Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
src/include/ceph_strings.cc
src/include/rados.h
src/include/rados/librados.hpp
src/librados.cc
src/osd/ReplicatedPG.cc
src/osdc/Objecter.h

index e94a8daeaf8ebc6aea78f8da49aa748ed6b44b50..026ca4e2f99eaff6f764b61cca21f979860c3a6e 100644 (file)
@@ -82,7 +82,7 @@ const char *ceph_osd_op_name(int op)
        case CEPH_OSD_OP_OMAPGETKEYS: return "omap-get-keys";
        case CEPH_OSD_OP_OMAPGETVALS: return "omap-get-vals";
        case CEPH_OSD_OP_OMAPGETHEADER: return "omap-get-header";
-       case CEPH_OSD_OP_OMAPGETVALSBYKEY: return "omap-get-vals-by-key";
+       case CEPH_OSD_OP_OMAPGETVALSBYKEYS: return "omap-get-vals-by-keys";
        case CEPH_OSD_OP_OMAPSETVALS: return "omap-set-vals";
        case CEPH_OSD_OP_OMAPSETHEADER: return "omap-set-header";
        case CEPH_OSD_OP_OMAPCLEAR: return "omap-clear";
index b95ac754595671d0507a0691b0e82c61ff34c519..44f7162bd15ee8d93f7ae00ab0590a436ae57730 100644 (file)
@@ -201,7 +201,7 @@ enum {
        CEPH_OSD_OP_OMAPGETKEYS   = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 17,
        CEPH_OSD_OP_OMAPGETVALS   = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 18,
        CEPH_OSD_OP_OMAPGETHEADER = CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 19,
-       CEPH_OSD_OP_OMAPGETVALSBYKEY  =
+       CEPH_OSD_OP_OMAPGETVALSBYKEYS  =
          CEPH_OSD_OP_MODE_RD | CEPH_OSD_OP_TYPE_DATA | 20,
        CEPH_OSD_OP_OMAPSETVALS   = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_DATA | 21,
        CEPH_OSD_OP_OMAPSETHEADER = CEPH_OSD_OP_MODE_WR | CEPH_OSD_OP_TYPE_DATA | 22,
index 2309343652de10594cd4cd85ab41dc5d22f7892f..56fe400c4f56be76eee54c01c166b0a55f855269 100644 (file)
@@ -334,6 +334,27 @@ namespace librados
     int tmap_put(const std::string& oid, bufferlist& bl);
     int tmap_get(const std::string& oid, bufferlist& bl);
 
+    int omap_get_vals(const std::string& oid,
+                      const std::string& start_after,
+                      uint64_t max_return,
+                      std::map<std::string, bufferlist> *out_vals);
+    int omap_get_keys(const std::string& oid,
+                      const std::string& start_after,
+                      uint64_t max_return,
+                      std::set<std::string> *out_keys);
+    int omap_get_header(const std::string& oid,
+                        bufferlist *bl);
+    int omap_get_vals_by_keys(const std::string& oid,
+                              const std::set<std::string>& keys,
+                              std::map<std::string, bufferlist> *vals);
+    int omap_set(const std::string& oid,
+                 const map<string, bufferlist>& map);
+    int omap_set_header(const std::string& oid,
+                        const bufferlist& bl);
+    int omap_clear(const std::string& oid);
+    int omap_rm_keys(const std::string& oid,
+                     const std::set<std::string>& keys);
+
     void snap_set_read(snap_t seq);
     int selfmanaged_snap_set_write_ctx(snap_t seq, std::vector<snap_t>& snaps);
 
index 3e8084b8b87c8ec583480223229cc113d500281a..b3b5c792d1a1956f4d08fdd52ec150ee947a7bcb 100644 (file)
@@ -238,13 +238,13 @@ void librados::ObjectReadOperation::omap_get_header(bufferlist *bl, int *prval)
   o->omap_get_header(bl, prval);
 }
 
-void librados::ObjectReadOperation::omap_get_vals_by_key(
+void librados::ObjectReadOperation::omap_get_vals_by_keys(
   const std::set<std::string> &keys,
   std::map<std::string, bufferlist> *map,
   int *prval)
 {
   ::ObjectOperation *o = (::ObjectOperation *)impl;
-  o->omap_get_vals_by_key(keys, map, prval);
+  o->omap_get_vals_by_keys(keys, map, prval);
 }
 
 void librados::ObjectReadOperation::getxattrs(map<string, bufferlist> *pattrs, int *prval)
@@ -2180,7 +2180,6 @@ int librados::RadosClient::tmap_get(IoCtxImpl& io, const object_t& oid, bufferli
   return r;
 }
 
-
 int librados::RadosClient::exec(IoCtxImpl& io, const object_t& oid,
                                const char *cls, const char *method,
                                bufferlist& inbl, bufferlist& outbl)
@@ -3017,6 +3016,98 @@ int librados::IoCtx::tmap_get(const std::string& oid, bufferlist& bl)
   return io_ctx_impl->client->tmap_get(*io_ctx_impl, obj, bl);
 }
 
+int librados::IoCtx::omap_get_vals(const std::string& oid,
+                                   const std::string& start_after,
+                                   uint64_t max_return,
+                                   std::map<std::string, bufferlist> *out_vals)
+{
+  ObjectReadOperation op;
+  int r;
+  op.omap_get_vals(start_after, max_return, out_vals, &r);
+  bufferlist bl;
+  int ret = operate(oid, &op, &bl);
+  if (ret < 0)
+    return ret;
+
+  return r;
+}
+
+int librados::IoCtx::omap_get_keys(const std::string& oid,
+                                   const std::string& start_after,
+                                   uint64_t max_return,
+                                   std::set<std::string> *out_keys)
+{
+  ObjectReadOperation op;
+  int r;
+  op.omap_get_keys(start_after, max_return, out_keys, &r);
+  bufferlist bl;
+  int ret = operate(oid, &op, &bl);
+  if (ret < 0)
+    return ret;
+
+  return r;
+}
+
+int librados::IoCtx::omap_get_header(const std::string& oid,
+                                     bufferlist *bl)
+{
+  ObjectReadOperation op;
+  int r;
+  op.omap_get_header(bl, &r);
+  bufferlist b;
+  int ret = operate(oid, &op, &b);
+  if (ret < 0)
+    return ret;
+
+  return r;
+}
+
+int librados::IoCtx::omap_get_vals_by_keys(const std::string& oid,
+                                           const std::set<std::string>& keys,
+                                           std::map<std::string, bufferlist> *vals)
+{
+  ObjectReadOperation op;
+  int r;
+  bufferlist bl;
+  op.omap_get_vals_by_keys(keys, vals, &r);
+  int ret = operate(oid, &op, &bl);
+  if (ret < 0)
+    return ret;
+
+  return r;
+}
+
+int librados::IoCtx::omap_set(const std::string& oid,
+                              const map<string, bufferlist>& m)
+{
+  ObjectWriteOperation op;
+  op.omap_set(m);
+  return operate(oid, &op);
+}
+
+int librados::IoCtx::omap_set_header(const std::string& oid,
+                                     const bufferlist& bl)
+{
+  ObjectWriteOperation op;
+  op.omap_set_header(bl);
+  return operate(oid, &op);
+}
+
+int librados::IoCtx::omap_clear(const std::string& oid)
+{
+  ObjectWriteOperation op;
+  op.omap_clear();
+  return operate(oid, &op);
+}
+
+int librados::IoCtx::omap_rm_keys(const std::string& oid,
+                                  const std::set<std::string>& keys)
+{
+  ObjectWriteOperation op;
+  op.omap_rm_keys(keys);
+  return operate(oid, &op);
+}
+
 int librados::IoCtx::operate(const std::string& oid, librados::ObjectWriteOperation *o)
 {
   object_t obj(oid);
index 595b434c1fb875f2bfde14ec427f1c34d8407055..b8d1c6c5bf964a71b0f6cd6141fc6d0282b9c7af 100644 (file)
@@ -2514,7 +2514,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& ops)
        osd->store->omap_get_header(coll, soid, &osd_op.outdata);
       }
       break;
-    case CEPH_OSD_OP_OMAPGETVALSBYKEY:
+    case CEPH_OSD_OP_OMAPGETVALSBYKEYS:
       {
        set<string> keys_to_get;
        ::decode(keys_to_get, bp);
index 2b3b8a323762e97f11c2656416a1ab7cacf2f83c..d40ffcc65e63993167ab6337653816b65a51489d 100644 (file)
@@ -403,10 +403,10 @@ struct ObjectOperation {
     }
   }
 
-  void omap_get_vals_by_key(const std::set<std::string> &to_get,
+  void omap_get_vals_by_keys(const std::set<std::string> &to_get,
                            std::map<std::string, bufferlist> *out_set,
                            int *prval) {
-    OSDOp &op = add_op(CEPH_OSD_OP_OMAPGETVALSBYKEY);
+    OSDOp &op = add_op(CEPH_OSD_OP_OMAPGETVALSBYKEYS);
     bufferlist bl;
     ::encode(to_get, bl);
     op.op.extent.offset = 0;