From b12c1477a3aceb0bc222af0f0d7098d6265c5527 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 12 Sep 2012 16:41:17 -0700 Subject: [PATCH] cls_rgw: change scoping of suggested changes vars Fixes: #3127 Bad variable scoping made it so that specific variables weren't initialized between suggested changes iterations. This specifically affected a case where in a specific change we had an updated followed by a remove, and the remove was on a non-existent key (e.g., was already removed earlier). We ended up re-substracting the object stats, as the entry wasn't reset between the iterations (and we didn't read it because the key didn't exist). backport:argonaut Signed-off-by: Yehuda Sadeh --- src/cls/rgw/cls_rgw.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/cls/rgw/cls_rgw.cc b/src/cls/rgw/cls_rgw.cc index 2535cb0b2cceb..efc6073502d2e 100644 --- a/src/cls/rgw/cls_rgw.cc +++ b/src/cls/rgw/cls_rgw.cc @@ -378,12 +378,11 @@ int rgw_dir_suggest_changes(cls_method_context_t hctx, bufferlist *in, bufferlis tag_timeout = (header.tag_timeout ? header.tag_timeout : CEPH_RGW_TAG_TIMEOUT); bufferlist::iterator in_iter = in->begin(); - __u8 op; - rgw_bucket_dir_entry cur_change; - rgw_bucket_dir_entry cur_disk; - bufferlist op_bl; while (!in_iter.end()) { + __u8 op; + rgw_bucket_dir_entry cur_change; + rgw_bucket_dir_entry cur_disk; try { ::decode(op, in_iter); ::decode(cur_change, in_iter); -- 2.39.5