summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@inktank.com>2013-03-31 00:02:15 -0700
committercaleb miles <caleb.miles@inktank.com>2013-04-05 10:27:40 -0700
commitb083dece36a050ec15ac41a275aeef0ece1ac009 (patch)
tree38378c1d77304442177f933a9af26f283441a1d5
parentbe6961bd28f11a9e0dde8ebc92d62fbcefc487ea (diff)
downloadceph-b083dece36a050ec15ac41a275aeef0ece1ac009.tar.gz
rgw: translate object marker to raw format
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>
-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 134a74b49e5..e47e2e90e8e 100644
--- a/src/rgw/rgw_rados.cc
+++ b/src/rgw/rgw_rados.cc
@@ -728,24 +728,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;