]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: translate object marker to raw format
authorYehuda Sadeh <yehuda@inktank.com>
Sun, 31 Mar 2013 07:02:15 +0000 (00:02 -0700)
committerGreg Farnum <greg@inktank.com>
Mon, 17 Jun 2013 17:57:26 +0000 (10:57 -0700)
Fixes: #4600
Object marker should be treated as an object, so that name is formatted
correctly when getting the raw oid.

Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
(cherry picked from commit b083dece36a050ec15ac41a275aeef0ece1ac009)

src/rgw/rgw_rados.cc

index 1fed42f5dd589ee39014b6e47a1e4f05b4958f22..522dbbb7b5b118b16dea2cd3bd0115f4deb7f884 100644 (file)
@@ -686,24 +686,17 @@ int RGWRados::list_objects(rgw_bucket& bucket, int max, string& prefix, string&
                           bool get_content_type, string& ns, bool *is_truncated, RGWAccessListFilter *filter)
 {
   int count = 0;
-  string cur_marker = marker;
   bool truncated;
-  string ns_prefix;
 
   if (bucket_is_system(bucket)) {
     return -EINVAL;
   }
   result.clear();
-  if (!ns.empty()) {
-    ns_prefix = "_";
-    ns_prefix += ns + "_";
-    if (cur_marker < ns_prefix) {
-      cur_marker = ns_prefix;
-    } else if (cur_marker.substr(0, ns.size()) > ns_prefix) {
-      truncated = false;
-      goto done;
-    }
-  }
+
+  rgw_obj marker_obj;
+  marker_obj.set_ns(ns);
+  marker_obj.set_obj(marker);
+  string cur_marker = marker_obj.object;
 
   do {
     std::map<string, RGWObjEnt> ent_map;