]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix test to identify whether object has tail
authorYehuda Sadeh <yehuda@redhat.com>
Mon, 25 Aug 2014 17:38:42 +0000 (10:38 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Tue, 23 Sep 2014 20:55:48 +0000 (13:55 -0700)
Fixes: #9226
Reported-by: Sylvain Munaut <s.munaut@whatever-company.com>
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 <yehuda@redhat.com>
(cherry picked from commit 751b3e26532932a42ca34f9c062a0a3e29a58cff)

src/rgw/rgw_rados.h

index eea113769e9d1f2c786806795d81bda3844d9dc6..dcaec8384a91e14a987ff515e19b4c66919092f0 100644 (file)
@@ -298,6 +298,11 @@ public:
 
   bool has_tail() {
     if (explicit_objs) {
+      if (objs.size() == 1) {
+        map<uint64_t, RGWObjManifestPart>::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);