summaryrefslogtreecommitdiffstats
path: root/src/rgw/driver/rados/rgw_rados.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/rgw/driver/rados/rgw_rados.cc')
-rw-r--r--src/rgw/driver/rados/rgw_rados.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/rgw/driver/rados/rgw_rados.cc b/src/rgw/driver/rados/rgw_rados.cc
index 05dd35e5d87..2b408dbb369 100644
--- a/src/rgw/driver/rados/rgw_rados.cc
+++ b/src/rgw/driver/rados/rgw_rados.cc
@@ -6592,18 +6592,30 @@ int RGWRados::set_attrs(const DoutPrefixProvider *dpp, RGWObjectCtx* octx, RGWBu
ACLOwner owner;
if (iter = attrs.find(RGW_ATTR_ACL); iter != attrs.end()) {
(void) decode_policy(dpp, iter->second, &owner);
+ } else if (iter = state->attrset.find(RGW_ATTR_ACL);
+ iter != state->attrset.end()) {
+ (void) decode_policy(dpp, iter->second, &owner);
}
std::string etag;
if (iter = attrs.find(RGW_ATTR_ETAG); iter != attrs.end()) {
etag = rgw_bl_str(iter->second);
+ } else if (iter = state->attrset.find(RGW_ATTR_ETAG);
+ iter != state->attrset.end()) {
+ etag = rgw_bl_str(iter->second);
}
std::string content_type;
if (iter = attrs.find(RGW_ATTR_CONTENT_TYPE); iter != attrs.end()) {
content_type = rgw_bl_str(iter->second);
+ } else if (iter = state->attrset.find(RGW_ATTR_CONTENT_TYPE);
+ iter != state->attrset.end()) {
+ content_type = rgw_bl_str(iter->second);
}
string storage_class;
if (iter = attrs.find(RGW_ATTR_STORAGE_CLASS); iter != attrs.end()) {
storage_class = rgw_bl_str(iter->second);
+ } else if (iter = state->attrset.find(RGW_ATTR_STORAGE_CLASS);
+ iter != state->attrset.end()) {
+ storage_class = rgw_bl_str(iter->second);
}
uint64_t epoch = ioctx.get_last_version();
int64_t poolid = ioctx.get_id();