From: Yehuda Sadeh Date: Wed, 1 Feb 2012 20:55:52 +0000 (-0800) Subject: cls_rgw: update bucket index when deleting object (with pending) X-Git-Tag: v0.44~105 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3353f572f84707fbc0e99a9af2dc48de2d0aa2c9;p=ceph.git cls_rgw: update bucket index when deleting object (with pending) Bug #2012. Racing delete with other operations (update or another delete) failed to update the bucket index. Signed-off-by: Yehuda Sadeh --- diff --git a/src/cls_rgw.cc b/src/cls_rgw.cc index 7e5f4de619d2..a6b3e736693c 100644 --- a/src/cls_rgw.cc +++ b/src/cls_rgw.cc @@ -248,8 +248,14 @@ int rgw_bucket_complete_op(cls_method_context_t hctx, bufferlist *in, bufferlist if (!entry.pending_map.size()) { op_bl.append(CEPH_OSD_TMAP_RM); ::encode(op.name, op_bl); - } else + } else { entry.exists = false; + bufferlist new_key_bl; + ::encode(entry, new_key_bl); + op_bl.append(CEPH_OSD_TMAP_SET); + ::encode(op.name, op_bl); + ::encode(new_key_bl, op_bl); + } } else { return -ENOENT; }