From: Yehuda Sadeh Date: Mon, 25 Aug 2014 17:38:42 +0000 (-0700) Subject: rgw: fix test to identify whether object has tail X-Git-Tag: v0.80.8~64^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b8fa2ed60b6cce51701df972dbb6f5e02e0d84ba;p=ceph.git rgw: fix test to identify whether object has tail Fixes: #9226 Reported-by: Sylvain Munaut Backport: firefly We need to identify whether an object is just composed of a head, or also has a tail. Test for pre-firefly objects ("explicit objs") was broken as it was just looking at the number of explicit objs in the manifest. However, this is insufficient, as we might have empty head, and in this case it wouldn't appear, so we need to check whether the sole object is actually pointing at the head. Signed-off-by: Yehuda Sadeh (cherry picked from commit 751b3e26532932a42ca34f9c062a0a3e29a58cff) --- diff --git a/src/rgw/rgw_rados.h b/src/rgw/rgw_rados.h index eea113769e9d..dcaec8384a91 100644 --- a/src/rgw/rgw_rados.h +++ b/src/rgw/rgw_rados.h @@ -298,6 +298,11 @@ public: bool has_tail() { if (explicit_objs) { + if (objs.size() == 1) { + map::iterator iter = objs.begin(); + rgw_obj& obj = iter->second.loc; + return head_obj.object != obj.object; + } return (objs.size() >= 2); } return (obj_size > head_size);