]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #3167 from ceph/wip-10307
authorJosh Durgin <jdurgin@redhat.com>
Wed, 7 Jan 2015 21:23:44 +0000 (13:23 -0800)
committerJosh Durgin <jdurgin@redhat.com>
Wed, 7 Jan 2015 21:23:44 +0000 (13:23 -0800)
rgw: use s->bucket_attrs instead of trying to read obj attrs

Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Reviewed-by: Sage Weil <sage@redhat.com>
1  2 
src/rgw/rgw_op.cc

index 0319a56982da4500189f715bc8260ffedc7f9c76,97d64f5e494ca1e683a35076208feabfe6ed0411..80008dc7a08a5c87fcabbdcd1389cbbe3be09173
@@@ -1911,18 -1897,15 +1911,22 @@@ 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;
+   }
  
 +  if (!s->object && !placement_rule.empty()) {
 +    if (placement_rule != s->bucket_info.placement_rule) {
 +      ret = -EEXIST;
 +      return;
 +    }
 +  }
 +
    /* only remove meta attrs */
    for (iter = orig_attrs.begin(); iter != orig_attrs.end(); ++iter) {
      const string& name = iter->first;