summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@inktank.com>2013-03-31 00:02:15 -0700
committerYehuda Sadeh <yehuda@inktank.com>2013-05-07 14:03:37 -0700
commit9feeb901a1958370beb63619cb686becdcd72a29 (patch)
treee9e7bf506a1d46f929981ac83eb61ed68bc34e61
parent2382d9b7c0a283d0cab6188c92e5cf970b713f8f (diff)
downloadceph-9feeb901a1958370beb63619cb686becdcd72a29.tar.gz
rgw: translate object marker to raw formatwip-4600-argonaut
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)
-rw-r--r--src/rgw/rgw_rados.cc17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc
index e356dffc5d9..26d498bec84 100644
--- a/src/rgw/rgw_rados.cc
+++ b/src/rgw/rgw_rados.cc
@@ -507,24 +507,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;