]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
objclass, cls_rgw: add prefix to omap_get_vals()
authorYehuda Sadeh <yehuda@hq.newdream.net>
Thu, 8 Mar 2012 01:03:45 +0000 (17:03 -0800)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Thu, 8 Mar 2012 01:03:45 +0000 (17:03 -0800)
src/cls_rgw.cc
src/objclass/class_api.cc
src/objclass/objclass.h
src/rgw/rgw_cls_api.h

index b1efc7815df79c28404a8b951c76f083b820ae94..cb5716b495e256a5a54b74016e60ee89299daf0a 100644 (file)
@@ -59,7 +59,7 @@ int rgw_bucket_list(cls_method_context_t hctx, bufferlist *in, bufferlist *out)
   bufferlist bl;
 
   map<string, bufferlist> keys;
-  rc = cls_cxx_map_read_keys(hctx, op.start_obj, op.num_entries + 1, &keys);
+  rc = cls_cxx_map_read_keys(hctx, op.start_obj, op.filter_prefix, op.num_entries + 1, &keys);
   if (rc < 0)
     return rc;
 
index 50d736353092c982deeef40db48853e5b67d1373..861c0006207d46cb353f6459d9cfd337adc6db59 100644 (file)
@@ -251,11 +251,13 @@ int cls_cxx_map_read_all_keys(cls_method_context_t hctx, map<string, bufferlist>
   int ret;
 
   string start_after;
+  string filter_prefix;
   uint64_t max = (uint64_t)-1;
   bufferlist inbl;
 
   ::encode(start_after, op.indata);
   ::encode(max, op.indata);
+  ::encode(filter_prefix, op.indata);
 
   op.op.op = CEPH_OSD_OP_OMAPGETVALS;
   
@@ -272,7 +274,8 @@ int cls_cxx_map_read_all_keys(cls_method_context_t hctx, map<string, bufferlist>
   return vals->size();
 }
 
-int cls_cxx_map_read_keys(cls_method_context_t hctx, string& start_obj, uint64_t max, map<string, bufferlist>* vals)
+int cls_cxx_map_read_keys(cls_method_context_t hctx, string& start_obj,
+                          string& filter_prefix, uint64_t max, map<string, bufferlist>* vals)
 {
   ReplicatedPG::OpContext **pctx = (ReplicatedPG::OpContext **)hctx;
   vector<OSDOp> ops(1);
@@ -284,6 +287,7 @@ int cls_cxx_map_read_keys(cls_method_context_t hctx, string& start_obj, uint64_t
 
   ::encode(start_obj, op.indata);
   ::encode(max, op.indata);
+  ::encode(filter_prefix, op.indata);
 
   op.op.op = CEPH_OSD_OP_OMAPGETVALS;
   
index 3b4fb53f8c93ce2145c7be5b6d84d32bcaba068a..6ccfc6282ebfd2443a78f04756f7b77da748e2d7 100644 (file)
@@ -94,7 +94,8 @@ extern int cls_cxx_write_full(cls_method_context_t hctx, bufferlist *bl);
 extern int cls_cxx_replace(cls_method_context_t hctx, int ofs, int len, bufferlist *bl);
 extern int cls_cxx_snap_revert(cls_method_context_t hctx, snapid_t snapid);
 extern int cls_cxx_map_read_all_keys(cls_method_context_t hctx, std::map<string, bufferlist> *keys);
-extern int cls_cxx_map_read_keys(cls_method_context_t hctx, string& start_after, uint64_t max, std::map<string, bufferlist> *keys);
+extern int cls_cxx_map_read_keys(cls_method_context_t hctx, string& start_after, string& filter_prefix,
+                                uint64_t max, std::map<string, bufferlist> *keys);
 extern int cls_cxx_map_read_header(cls_method_context_t hctx, bufferlist *outbl);
 extern int cls_cxx_map_read_key(cls_method_context_t hctx, string key, bufferlist *outbl);
 extern int cls_cxx_map_write_key(cls_method_context_t hctx, string key, bufferlist *inbl);
index f19fd9634866f558f9b49933a9ffdd5130ec5896..a66a9da011c0e6b939e846766cc23e288c16f064 100644 (file)
@@ -259,18 +259,22 @@ struct rgw_cls_list_op
 {
   string start_obj;
   uint32_t num_entries;
+  string filter_prefix;
 
   void encode(bufferlist &bl) const {
-    __u8 struct_v = 1;
+    __u8 struct_v = 2;
     ::encode(struct_v, bl);
     ::encode(start_obj, bl);
     ::encode(num_entries, bl);
+    ::encode(filter_prefix, bl);
   }
   void decode(bufferlist::iterator &bl) {
     __u8 struct_v;
     ::decode(struct_v, bl);
     ::decode(start_obj, bl);
     ::decode(num_entries, bl);
+    if (struct_v >= 2)
+      ::decode(filter_prefix, bl);
   }
 };
 WRITE_CLASS_ENCODER(rgw_cls_list_op)