From f4d63b0325d83ded1c700c8805e8661b198f43fb Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 20 Sep 2011 14:39:00 -0700 Subject: [PATCH] rgw: fix bucket removal (old scheme) --- src/rgw/rgw_rados.cc | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 8f424da7be365..d7c81a5a9ffc5 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -224,8 +224,9 @@ int RGWRados::list_objects(string& id, rgw_bucket& bucket, int max, string& pref return r; string bucket_marker = bucket.marker; - if (bucket_marker.size()) + if (bucket_marker.size()) { bucket_marker.append("_"); + } std::map dir_map; { @@ -236,7 +237,7 @@ int RGWRados::list_objects(string& id, rgw_bucket& bucket, int max, string& pref if (bucket_marker.size()) { if (obj.compare(0, bucket_marker.size(), bucket_marker) != 0) - continue; + continue; obj = obj.substr(bucket_marker.size()); key = obj; @@ -656,10 +657,22 @@ int RGWRados::delete_bucket(std::string& id, rgw_bucket& bucket, bool remove_poo if (r < 0) return r; + string bucket_marker = bucket.marker; + if (bucket_marker.size()) { + bucket_marker.append("_"); + } + ObjectIterator iter = list_ctx.objects_begin(); string ns; for (; iter != list_ctx.objects_end(); iter++) { string obj = *iter; + if (bucket_marker.size()) { + if (obj.compare(0, bucket_marker.size(), bucket_marker) != 0) + continue; + + obj = obj.substr(bucket_marker.size()); + } + if (rgw_obj::translate_raw_obj(obj, ns)) return -ENOTEMPTY; } -- 2.39.5