From: Yehuda Sadeh Date: Sat, 14 Apr 2012 06:17:51 +0000 (-0700) Subject: cls_rgw: don't zero out error code before reading value X-Git-Tag: v0.46~65^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=73badda69465e09e30b96d11fbf75d6d60979967;p=ceph.git cls_rgw: don't zero out error code before reading value We were zeroing the return code before reading it. Signed-off-by: Yehuda Sadeh --- diff --git a/src/cls_rgw.cc b/src/cls_rgw.cc index a406a618541c..06746d512705 100644 --- a/src/cls_rgw.cc +++ b/src/cls_rgw.cc @@ -140,18 +140,25 @@ int rgw_bucket_prepare_op(cls_method_context_t hctx, bufferlist *in, bufferlist if (rc < 0 && rc != -ENOENT) return rc; + struct rgw_bucket_dir_entry entry; + + bool noent = (rc == -ENOENT); + rc = 0; - struct rgw_bucket_dir_entry entry; - if (rc != -ENOENT) { + if (!noent) { try { bufferlist::iterator biter = cur_value.begin(); ::decode(entry, biter); } catch (buffer::error& err) { CLS_LOG("ERROR: rgw_bucket_prepare_op(): failed to decode entry\n"); /* ignoring error */ + + noent = true; } - } else { // no entry, initialize fields + } + + if (noent) { // no entry, initialize fields entry.name = op.name; entry.epoch = 0; entry.exists = false; @@ -243,7 +250,6 @@ int rgw_bucket_complete_op(cls_method_context_t hctx, bufferlist *in, bufferlist } bufferlist op_bl; - if (cancel) { if (op.tag.size()) { bufferlist new_key_bl;