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:04 -0700
commit34cba5d9110470af987d58a0cfdb846f80db2199 (patch)
tree96e9e6fc3d0a7e3fcd8c43b672f314fcc489f7af
parent95a0bda7f007a33b0dc7adf4b330778fa1e5d70c (diff)
downloadceph-wip-4600-bobtail.tar.gz
rgw: translate object marker to raw formatwip-4600-bobtail
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 31332b5993e..df0306c4095 100644
--- a/src/rgw/rgw_rados.cc
+++ b/src/rgw/rgw_rados.cc
@@ -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;