The effective part of this change is to always set a value
for RGW_ATTR_UNIX_KEY1 (because it is expected later).
Secondarily, do not pass the address of the to-set attributes
buffer::list as remove attrs--this is confusing.
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
(cherry picked from commit
08afb40b2812270a6af3cd1965e8c03c10392ace)
Fixes: http://tracker.ceph.com/issues/17393
rgw_fh->encode_attrs(ux_key, ux_attrs);
/* save attrs */
+ req.emplace_attr(RGW_ATTR_UNIX_KEY1, std::move(ux_key));
req.emplace_attr(RGW_ATTR_UNIX1, std::move(ux_attrs));
rc = rgwlib.get_fe()->execute_req(&req);
store->set_atomic(s->obj_ctx, obj);
if (!s->object.empty()) {
- op_ret = store->set_attrs(s->obj_ctx, obj, attrs, &attrs);
+ op_ret = store->set_attrs(s->obj_ctx, obj, attrs, nullptr);
} else {
for (auto& iter : attrs) {
s->bucket_attrs[iter.first] = std::move(iter.second);