RGWBucketInfo bucket_info;
if (s->bucket_name_str.size()) {
+ bool exists = true;
ret = store->get_bucket_info(s->obj_ctx, s->bucket_name_str, bucket_info, &s->objv_tracker);
if (ret < 0) {
- ldout(s->cct, 0) << "NOTICE: couldn't get bucket from bucket_name (name=" << s->bucket_name_str << ")" << dendl;
- return ret;
+ if (ret != -ENOENT) {
+ ldout(s->cct, 0) << "NOTICE: couldn't get bucket from bucket_name (name=" << s->bucket_name_str << ")" << dendl;
+ return ret;
+ }
+ exists = false;
}
s->bucket = bucket_info.bucket;
s->bucket_owner = s->bucket_acl->get_owner();
string& region = bucket_info.region;
- if ((region.empty() && !store->region.is_master) &&
+ if (exists && (region.empty() && !store->region.is_master) &&
(region != store->region.name)) {
ldout(s->cct, 0) << "NOTICE: request for data in a different region (" << region << " != " << store->region.name << ")" << dendl;
return -ERR_PERMANENT_REDIRECT;
int ret = rgw_get_system_obj(this, ctx, zone.domain_root, bucket_name, bl, objv_tracker, pattrs);
if (ret < 0) {
- if (ret != -ENOENT)
- return ret;
-
- info.bucket.name = bucket_name;
- info.bucket.data_pool = bucket_name; // for now
- info.bucket.index_pool = bucket_name; // for now
- return 0;
+ info.bucket.name = bucket_name; /* only init this field */
+ return ret;
}
bufferlist::iterator iter = bl.begin();