]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: use s->bucket_attrs instead of trying to read obj attrs
authorYehuda Sadeh <yehuda@redhat.com>
Sat, 13 Dec 2014 01:07:30 +0000 (17:07 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Wed, 14 Jan 2015 23:51:45 +0000 (15:51 -0800)
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 1c22c68ccc59f727a3fe11bb7a23f344294fcb6e..cd1f3a1dbffa9e1979fafc47d2ea60cf9c383a15 100644 (file)
@@ -1884,10 +1884,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) {