]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: use s->bucket_attrs instead of trying to read obj attrs 3568/head
authorYehuda Sadeh <yehuda@redhat.com>
Sat, 13 Dec 2014 01:07:30 +0000 (17:07 -0800)
committerLoic Dachary <ldachary@redhat.com>
Mon, 2 Feb 2015 14:20:01 +0000 (15:20 +0100)
Fixes: #10307
Backport: firefly, giant

This is needed, since we can't really read the bucket attrs by trying to
read the bucket entry point attrs. We already have the bucket attrs
anyway, use these.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
(cherry picked from commit 5cf193c8686196d5235889e68cb5ea8f1fc8e556)

src/rgw/rgw_op.cc

index 2ada0e678663ae4a2b377598c06428beb0f26b00..52635acc92bd77e26907d3f4d9a23f72dcdc4435 100644 (file)
@@ -1945,10 +1945,14 @@ void RGWPutMetadata::execute()
   /* no need to track object versioning, need it for bucket's data only */
   RGWObjVersionTracker *ptracker = (s->object ? NULL : &s->bucket_info.objv_tracker);
 
-  /* check if obj exists, read orig attrs */
-  ret = get_obj_attrs(store, s, obj, orig_attrs, NULL, ptracker);
-  if (ret < 0)
-    return;
+  if (s->object) {
+    /* check if obj exists, read orig attrs */
+    ret = get_obj_attrs(store, s, obj, orig_attrs, NULL, ptracker);
+    if (ret < 0)
+      return;
+  } else {
+    orig_attrs = s->bucket_attrs;
+  }
 
   /* only remove meta attrs */
   for (iter = orig_attrs.begin(); iter != orig_attrs.end(); ++iter) {