diff options
author | Yehuda Sadeh <yehuda@inktank.com> | 2013-03-31 00:02:15 -0700 |
---|---|---|
committer | Yehuda Sadeh <yehuda@inktank.com> | 2013-05-07 14:03:04 -0700 |
commit | 34cba5d9110470af987d58a0cfdb846f80db2199 (patch) | |
tree | 96e9e6fc3d0a7e3fcd8c43b672f314fcc489f7af | |
parent | 95a0bda7f007a33b0dc7adf4b330778fa1e5d70c (diff) | |
download | ceph-34cba5d9110470af987d58a0cfdb846f80db2199.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.cc | 17 |
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; |