class rgw_obj {
std::string orig_obj;
- std::string orig_loc;
std::string loc;
std::string object;
std::string instance;
public:
const std::string& get_object() const { return object; }
+ const std::string& get_orig_obj() const { return orig_obj; }
const std::string& get_loc() const { return loc; }
const std::string& get_instance() const { return instance; }
rgw_bucket bucket;
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) : 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) : in_extra_data(false) {
- init(b, o, k, n);
- }
rgw_obj(rgw_bucket& b, const rgw_obj_key& k) {
init(b, k.name);
set_instance(k.instance);
}
- void init(rgw_bucket& b, const std::string& o, const std::string& k, const std::string& n) {
- bucket = b;
- set_ns(n);
- set_obj(o);
- set_loc(k);
- }
- void init(rgw_bucket& b, const std::string& o, const std::string& k) {
- bucket = b;
- set_obj(o);
- set_loc(k);
- }
void init(rgw_bucket& b, const std::string& o) {
bucket = b;
set_obj(o);
- orig_loc = loc = o;
+ reset_loc();
}
void init_ns(rgw_bucket& b, const std::string& o, const std::string& n) {
bucket = b;
}
void set_loc(const string& k) {
- orig_loc = k;
loc = k;
}
void reset_loc() {
- orig_loc.clear();
loc.clear();
}
object.reserve(128);
orig_obj = o;
- if (ns.empty()) {
+ if (ns.empty() && instance.empty()) {
if (o.empty()) {
return;
}
object.append("_");
object.append(o);
}
- if (orig_loc.size())
- set_loc(orig_loc);
- else
- set_loc(orig_obj);
}
/*
extra_params.owner = bucket_owner;
if (versioned_object) {
- rgw_obj ver_head_obj = head_obj;
-
+ rgw_obj ver_head_obj(head_obj.bucket, head_obj.get_orig_obj());
+ ver_head_obj.set_ns(head_obj.ns);
ver_head_obj.set_instance("instance");
r = store->put_obj_meta(NULL, ver_head_obj, obj_len, attrs,
{
rgw_bucket bucket;
string oid, key;
- get_obj_bucket_and_oid_key(obj, bucket, oid, key);
+ get_obj_bucket_and_oid_loc(obj, bucket, oid, key);
int r;
int RGWRados::get_obj_ref(const rgw_obj& obj, rgw_rados_ref *ref, rgw_bucket *bucket, bool ref_system_obj)
{
- get_obj_bucket_and_oid_key(obj, *bucket, ref->oid, ref->key);
+ get_obj_bucket_and_oid_loc(obj, *bucket, ref->oid, ref->key);
int r;
ObjectWriteOperation op;
cls_refcount_get(op, tag, true);
const rgw_obj& loc = miter.get_location();
- get_obj_bucket_and_oid_key(loc, bucket, oid, key);
+ get_obj_bucket_and_oid_loc(loc, bucket, oid, key);
ref.ioctx.locator_set_key(key);
ret = ref.ioctx.operate(oid, &op);
ObjectWriteOperation op;
cls_refcount_put(op, tag, true);
- get_obj_bucket_and_oid_key(*riter, bucket, oid, key);
+ get_obj_bucket_and_oid_loc(*riter, bucket, oid, key);
ref.ioctx.locator_set_key(key);
int r = ref.ioctx.operate(oid, &op);
continue;
string oid, loc;
rgw_bucket bucket;
- get_obj_bucket_and_oid_key(mobj, bucket, oid, loc);
+ get_obj_bucket_and_oid_loc(mobj, bucket, oid, loc);
cls_rgw_obj_key key(obj.get_index_key_name(), obj.get_instance());
chain.push_obj(bucket.data_pool, key, loc);
}
RGWRadosCtx *rctx = static_cast<RGWRadosCtx *>(ctx);
rgw_bucket bucket;
std::string oid, key;
- get_obj_bucket_and_oid_key(obj, bucket, oid, key);
+ get_obj_bucket_and_oid_loc(obj, bucket, oid, key);
if (!rctx)
return 0;
{
rgw_bucket bucket;
std::string oid, key;
- get_obj_bucket_and_oid_key(obj, bucket, oid, key);
+ get_obj_bucket_and_oid_loc(obj, bucket, oid, key);
string tag;
int r = complete_update_index_del(bucket, obj, tag, -1 /* pool */, 0);
{
rgw_bucket bucket;
std::string dst_oid, dst_key;
- get_obj_bucket_and_oid_key(dst_obj, bucket, dst_oid, dst_key);
+ get_obj_bucket_and_oid_loc(dst_obj, bucket, dst_oid, dst_key);
librados::IoCtx io_ctx;
RGWRadosCtx *rctx = static_cast<RGWRadosCtx *>(ctx);
uint64_t size = 0;
<< " range.src_ofs=" << range.src_ofs << " range.len=" << range.len << dendl;
if (xattr_cond) {
string src_cmp_obj, src_cmp_key;
- get_obj_bucket_and_oid_key(range.src, bucket, src_cmp_obj, src_cmp_key);
+ get_obj_bucket_and_oid_loc(range.src, bucket, src_cmp_obj, src_cmp_key);
op.src_cmpxattr(src_cmp_obj, xattr_cond->first.c_str(),
LIBRADOS_CMPXATTR_OP_EQ, xattr_cond->second);
}
string src_oid, src_key;
- get_obj_bucket_and_oid_key(range.src, bucket, src_oid, src_key);
+ get_obj_bucket_and_oid_loc(range.src, bucket, src_oid, src_key);
if (range.dst_ofs + range.len > size)
size = range.dst_ofs + range.len;
op.clone_range(range.dst_ofs, src_oid, range.src_ofs, range.len);
uint64_t max_chunk_size;
- get_obj_bucket_and_oid_key(obj, bucket, oid, key);
+ get_obj_bucket_and_oid_loc(obj, bucket, oid, key);
if (!rctx) {
new_ctx = new RGWRadosCtx(this);
reading_from_head = (read_obj == obj);
if (!reading_from_head) {
- get_obj_bucket_and_oid_key(read_obj, bucket, oid, key);
+ get_obj_bucket_and_oid_loc(read_obj, bucket, oid, key);
}
}
if (r < 0)
return r;
- get_obj_bucket_and_oid_key(obj, bucket, oid, key);
+ get_obj_bucket_and_oid_loc(obj, bucket, oid, key);
d->throttle.get(len);
if (d->is_cancelled()) {
// well crap
assert(0 == "got bad object name off disk");
}
- obj.init(bucket, oid, list_state.locator, ns);
+ obj.init(bucket, oid);
+ obj.set_loc(list_state.locator);
+ obj.set_ns(ns);
obj.set_instance(key.instance);
- get_obj_bucket_and_oid_key(obj, bucket, oid, loc);
+ get_obj_bucket_and_oid_loc(obj, bucket, oid, loc);
io_ctx.locator_set_key(loc);
RGWObjState *astate = NULL;