std::string ns;
std::string object;
- rgw_obj() {}
- rgw_obj(const char *b, const char *o) {
+ bool in_extra_data; /* in-memory only member, does not serialize */
+
+ rgw_obj() : in_extra_data(false) {}
+ rgw_obj(const char *b, const char *o) : in_extra_data(false) {
rgw_bucket _b(b);
std::string _o(o);
init(_b, _o);
}
- rgw_obj(rgw_bucket& b, const char *o) {
+ rgw_obj(rgw_bucket& b, const char *o) : in_extra_data(false) {
std::string _o(o);
init(b, _o);
}
- rgw_obj(rgw_bucket& b, const std::string& o) {
+ rgw_obj(rgw_bucket& b, const std::string& o) : in_extra_data(false) {
init(b, o);
}
- rgw_obj(rgw_bucket& b, const std::string& o, const std::string& k) {
+ rgw_obj(rgw_bucket& b, const std::string& o, const std::string& k) : in_extra_data(false) {
init(b, o, k);
}
- rgw_obj(rgw_bucket& b, const std::string& o, const std::string& k, const std::string& n) {
+ rgw_obj(rgw_bucket& b, const std::string& o, const std::string& k, const std::string& n) : in_extra_data(false) {
init(b, o, k, n);
}
void init(rgw_bucket& b, const std::string& o, const std::string& k, const std::string& n) {
return true;
}
+ void set_in_extra_data(bool val) {
+ in_extra_data = val;
+ }
+
+ bool is_in_extra_data() const {
+ return in_extra_data;
+ }
+
void encode(bufferlist& bl) const {
ENCODE_START(3, 3, bl);
::encode(bucket.name, bl);
RGWMPObj mp(oid, upload_id);
oid = mp.get_meta();
obj.init_ns(bucket, oid, mp_ns);
+ obj.set_in_extra_data(true);
} else {
obj.init(bucket, oid);
}
rgw_obj meta_obj;
meta_obj.init_ns(bucket, multipart_meta_obj, mp_ns);
+ meta_obj.set_in_extra_data(true);
r = store->omap_set(meta_obj, p, bl);
obj.init_ns(s->bucket, tmp_obj_name, mp_ns);
// the meta object will be indexed with 0 size, we c
+ obj.set_in_extra_data(true);
ret = store->put_obj_meta(s->obj_ctx, obj, 0, NULL, attrs, RGW_OBJ_CATEGORY_MULTIMETA, PUT_OBJ_CREATE_EXCL, s->owner.get_id());
} while (ret == -EEXIST);
}
rgw_obj obj;
obj.init_ns(s->bucket, meta_oid, mp_ns);
+ obj.set_in_extra_data(true);
int ret = get_obj_attrs(store, s, obj, attrs, NULL, NULL);
if (ret < 0)
rgw_obj obj;
obj.init_ns(s->bucket, meta_oid, mp_ns);
+ obj.set_in_extra_data(true);
bool sorted_omap = is_v2_upload_id(upload_id) && !assume_unsorted;
// remove the upload obj
meta_obj.init_ns(s->bucket, meta_oid, mp_ns);
+ meta_obj.set_in_extra_data(true);
store->delete_obj(s->obj_ctx, s->bucket_owner.get_id(), meta_obj);
}
// and also remove the metadata obj
meta_obj.init_ns(s->bucket, meta_oid, mp_ns);
+ meta_obj.set_in_extra_data(true);
ret = store->delete_obj(s->obj_ctx, owner, meta_obj);
if (ret == -ENOENT) {
ret = -ERR_NO_SUCH_BUCKET;
bucket = obj.bucket;
prepend_bucket_marker(bucket, obj.object, oid);
prepend_bucket_marker(bucket, obj.key, key);
+
+ if (obj.is_in_extra_data() && !bucket.data_extra_pool.empty()) {
+ bucket.data_pool = bucket.data_extra_pool;
+ }
}
int rgw_policy_from_attrset(CephContext *cct, map<string, bufferlist>& attrset, RGWAccessControlPolicy *policy);