summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@inktank.com>2013-10-21 14:45:59 -0700
committerYehuda Sadeh <yehuda@inktank.com>2013-10-21 16:25:24 -0700
commitdb7eb771226beaa2372ef5860ce742cb3457cd89 (patch)
treee40591c44a683f0fd708c76276f9597241284596
parentcbf8f9a51737e7d89fb0ec0832b50fd47c35b08d (diff)
downloadceph-db7eb771226beaa2372ef5860ce742cb3457cd89.tar.gz
rgw: get rid of req_state.bucket_name
No need for this field, as we already have req_state.bucket_name_str. This saves us some memory allocation / freeing through every request processing. Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
-rw-r--r--src/rgw/rgw_common.cc3
-rw-r--r--src/rgw/rgw_common.h1
-rw-r--r--src/rgw/rgw_log.cc8
-rw-r--r--src/rgw/rgw_op.cc2
-rw-r--r--src/rgw/rgw_rest.cc2
-rw-r--r--src/rgw/rgw_rest_metadata.cc4
-rw-r--r--src/rgw/rgw_rest_s3.cc23
-rw-r--r--src/rgw/rgw_rest_swift.cc10
8 files changed, 22 insertions, 31 deletions
diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc
index c872314fe4e..0b2d0035992 100644
--- a/src/rgw/rgw_common.cc
+++ b/src/rgw/rgw_common.cc
@@ -135,7 +135,6 @@ req_state::req_state(CephContext *_cct, class RGWEnv *e) : cct(_cct), cio(NULL),
object_acl = NULL;
expect_cont = false;
- bucket_name = NULL;
object = NULL;
header_ended = false;
@@ -149,7 +148,6 @@ req_state::req_state(CephContext *_cct, class RGWEnv *e) : cct(_cct), cio(NULL),
perm_mask = 0;
content_length = 0;
object = NULL;
- bucket_name = NULL;
has_bad_meta = false;
length = NULL;
copy_source = NULL;
@@ -164,7 +162,6 @@ req_state::~req_state() {
delete bucket_acl;
delete object_acl;
free((void *)object);
- free((void *)bucket_name);
}
struct str_len {
diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h
index 2aaa5b6af8c..b3d39e57c2d 100644
--- a/src/rgw/rgw_common.h
+++ b/src/rgw/rgw_common.h
@@ -819,7 +819,6 @@ struct req_state {
uint32_t perm_mask;
utime_t header_time;
- const char *bucket_name;
const char *object;
rgw_bucket bucket;
diff --git a/src/rgw/rgw_log.cc b/src/rgw/rgw_log.cc
index 7b75441efce..9398dd04d73 100644
--- a/src/rgw/rgw_log.cc
+++ b/src/rgw/rgw_log.cc
@@ -171,7 +171,7 @@ static void log_usage(struct req_state *s, const string& op_name)
string user;
- if (s->bucket_name)
+ if (!s->bucket_name_str.empty())
user = s->bucket_owner.get_id();
else
user = s->user.user_id;
@@ -267,7 +267,7 @@ int rgw_log_op(RGWRados *store, struct req_state *s, const string& op_name, OpsL
if (!s->enable_ops_log)
return 0;
- if (!s->bucket_name) {
+ if (s->bucket_name_str.empty()) {
ldout(s->cct, 5) << "nothing to log for operation" << dendl;
return -EINVAL;
}
@@ -280,9 +280,9 @@ int rgw_log_op(RGWRados *store, struct req_state *s, const string& op_name, OpsL
} else {
bucket_id = s->bucket.bucket_id;
}
- entry.bucket = s->bucket_name;
+ entry.bucket = s->bucket_name_str;
- if (check_utf8(s->bucket_name, entry.bucket.size()) != 0) {
+ if (check_utf8(s->bucket_name_str.c_str(), entry.bucket.size()) != 0) {
ldout(s->cct, 5) << "not logging op on bucket with non-utf8 name" << dendl;
return 0;
}
diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc
index efdd9981a7f..aa7ff9bb3f5 100644
--- a/src/rgw/rgw_op.cc
+++ b/src/rgw/rgw_op.cc
@@ -1212,7 +1212,7 @@ void RGWDeleteBucket::execute()
{
ret = -EINVAL;
- if (!s->bucket_name)
+ if (s->bucket_name_str.empty())
return;
RGWObjVersionTracker ot;
diff --git a/src/rgw/rgw_rest.cc b/src/rgw/rgw_rest.cc
index 87ad92dfdf7..30cb0d9b66e 100644
--- a/src/rgw/rgw_rest.cc
+++ b/src/rgw/rgw_rest.cc
@@ -906,7 +906,7 @@ int RGWListBucketMultiparts_ObjStore::get_params()
int RGWDeleteMultiObj_ObjStore::get_params()
{
- bucket_name = s->bucket_name;
+ bucket_name = s->bucket_name_str;
if (bucket_name.empty()) {
ret = -EINVAL;
diff --git a/src/rgw/rgw_rest_metadata.cc b/src/rgw/rgw_rest_metadata.cc
index fc1d6ded166..5036235ebd2 100644
--- a/src/rgw/rgw_rest_metadata.cc
+++ b/src/rgw/rgw_rest_metadata.cc
@@ -33,8 +33,8 @@ static inline void frame_metadata_key(req_state *s, string& out) {
string metadata_key;
string section;
- if (s->bucket_name) {
- section = s->bucket_name;
+ if (!s->bucket_name_str.empty()) {
+ section = s->bucket_name_str;
} else {
section = key;
key.clear();
diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc
index 83874dd42c4..b8fd8aa4093 100644
--- a/src/rgw/rgw_rest_s3.cc
+++ b/src/rgw/rgw_rest_s3.cc
@@ -250,7 +250,7 @@ void RGWListBucket_ObjStore_S3::send_response()
s->formatter->open_object_section_in_ns("ListBucketResult",
"http://s3.amazonaws.com/doc/2006-03-01/");
- s->formatter->dump_string("Name", s->bucket_name);
+ s->formatter->dump_string("Name", s->bucket_name_str.c_str());
if (!prefix.empty())
s->formatter->dump_string("Prefix", prefix);
s->formatter->dump_string("Marker", marker);
@@ -1154,7 +1154,7 @@ void RGWPostObj_ObjStore_S3::send_response()
string etag_url;
- url_escape(s->bucket_name, bucket);
+ url_escape(s->bucket_name_str, bucket);
url_escape(s->object_str, key);
url_escape(etag_str, etag_url);
@@ -1204,7 +1204,7 @@ done:
s->formatter->open_object_section("PostResponse");
if (g_conf->rgw_dns_name.length())
s->formatter->dump_format("Location", "%s/%s", s->info.script_uri.c_str(), s->object_str.c_str());
- s->formatter->dump_string("Bucket", s->bucket_name);
+ s->formatter->dump_string("Bucket", s->bucket_name_str.c_str());
s->formatter->dump_string("Key", s->object_str.c_str());
s->formatter->close_section();
}
@@ -1529,7 +1529,7 @@ void RGWInitMultipart_ObjStore_S3::send_response()
dump_start(s);
s->formatter->open_object_section_in_ns("InitiateMultipartUploadResult",
"http://s3.amazonaws.com/doc/2006-03-01/");
- s->formatter->dump_string("Bucket", s->bucket_name);
+ s->formatter->dump_string("Bucket", s->bucket_name_str.c_str());
s->formatter->dump_string("Key", s->object);
s->formatter->dump_string("UploadId", upload_id);
s->formatter->close_section();
@@ -1548,8 +1548,8 @@ void RGWCompleteMultipart_ObjStore_S3::send_response()
s->formatter->open_object_section_in_ns("CompleteMultipartUploadResult",
"http://s3.amazonaws.com/doc/2006-03-01/");
if (g_conf->rgw_dns_name.length())
- s->formatter->dump_format("Location", "%s.%s", s->bucket_name, g_conf->rgw_dns_name.c_str());
- s->formatter->dump_string("Bucket", s->bucket_name);
+ s->formatter->dump_format("Location", "%s.%s", s->bucket_name_str.c_str(), g_conf->rgw_dns_name.c_str());
+ s->formatter->dump_string("Bucket", s->bucket_name_str.c_str());
s->formatter->dump_string("Key", s->object);
s->formatter->dump_string("ETag", etag);
s->formatter->close_section();
@@ -1586,7 +1586,7 @@ void RGWListMultipart_ObjStore_S3::send_response()
for (i = 0, test_iter = iter; test_iter != parts.end() && i < max_parts; ++test_iter, ++i) {
cur_max = test_iter->first;
}
- s->formatter->dump_string("Bucket", s->bucket_name);
+ s->formatter->dump_string("Bucket", s->bucket_name_str.c_str());
s->formatter->dump_string("Key", s->object);
s->formatter->dump_string("UploadId", upload_id);
s->formatter->dump_string("StorageClass", "STANDARD");
@@ -1634,7 +1634,7 @@ void RGWListBucketMultiparts_ObjStore_S3::send_response()
return;
s->formatter->open_object_section("ListMultipartUploadsResult");
- s->formatter->dump_string("Bucket", s->bucket_name);
+ s->formatter->dump_string("Bucket", s->bucket_name_str.c_str());
if (!prefix.empty())
s->formatter->dump_string("ListMultipartUploadsResult.Prefix", prefix);
string& key_marker = marker.get_key();
@@ -1920,9 +1920,8 @@ int RGWHandler_ObjStore_S3::init_from_header(struct req_state *s, int default_fo
first = req;
}
- if (!s->bucket_name) {
+ if (s->bucket_name_str.empty()) {
s->bucket_name_str = first;
- s->bucket_name = strdup(s->bucket_name_str.c_str());
if (pos >= 0) {
string encoded_obj_str = req.substr(pos+1);
@@ -1999,7 +1998,7 @@ int RGWHandler_ObjStore_S3::validate_bucket_name(const string& bucket, bool rela
int RGWHandler_ObjStore_S3::init(RGWRados *store, struct req_state *s, RGWClientIO *cio)
{
- dout(10) << "s->object=" << (s->object ? s->object : "<NULL>") << " s->bucket=" << (s->bucket_name ? s->bucket_name : "<NULL>") << dendl;
+ dout(10) << "s->object=" << (s->object ? s->object : "<NULL>") << " s->bucket=" << (!s->bucket_name_str.empty() ? s->bucket_name_str : "<NULL>") << dendl;
bool relaxed_names = s->cct->_conf->rgw_relaxed_s3_bucket_names;
int ret = validate_bucket_name(s->bucket_name_str, relaxed_names);
@@ -2269,7 +2268,7 @@ RGWHandler *RGWRESTMgr_S3::get_handler(struct req_state *s)
if (ret < 0)
return NULL;
- if (!s->bucket_name)
+ if (s->bucket_name_str.empty())
return new RGWHandler_ObjStore_Service_S3;
if (!s->object)
diff --git a/src/rgw/rgw_rest_swift.cc b/src/rgw/rgw_rest_swift.cc
index 58e60978c45..eba16d86899 100644
--- a/src/rgw/rgw_rest_swift.cc
+++ b/src/rgw/rgw_rest_swift.cc
@@ -453,7 +453,7 @@ int RGWCopyObj_ObjStore_SWIFT::get_params()
src_bucket_name = s->src_bucket_name;
src_object = s->src_object;
- dest_bucket_name = s->bucket_name;
+ dest_bucket_name = s->bucket_name_str;
dest_object = s->object_str;
return 0;
@@ -839,8 +839,6 @@ int RGWHandler_ObjStore_SWIFT::init_from_header(struct req_state *s)
return 0;
s->bucket_name_str = first;
- s->bucket_name = strdup(s->bucket_name_str.c_str());
-
s->info.effective_uri = "/" + s->bucket_name_str;
@@ -855,7 +853,7 @@ int RGWHandler_ObjStore_SWIFT::init_from_header(struct req_state *s)
int RGWHandler_ObjStore_SWIFT::init(RGWRados *store, struct req_state *s, RGWClientIO *cio)
{
- dout(10) << "s->object=" << (s->object ? s->object : "<NULL>") << " s->bucket=" << (s->bucket_name ? s->bucket_name : "<NULL>") << dendl;
+ dout(10) << "s->object=" << (s->object ? s->object : "<NULL>") << " s->bucket=" << (!s->bucket_name_str.empty() ? s->bucket_name_str : "<NULL>") << dendl;
int ret = validate_bucket_name(s->bucket_name_str.c_str());
if (ret)
@@ -894,8 +892,6 @@ int RGWHandler_ObjStore_SWIFT::init(RGWRados *store, struct req_state *s, RGWCli
s->src_bucket_name = s->bucket_name_str;
s->src_object = s->object_str;
s->bucket_name_str = dest_bucket_name;
- free(s->bucket_name);
- s->bucket_name = strdup(s->bucket_name_str.c_str());
s->object_str = dest_object;
s->op = OP_PUT;
}
@@ -910,7 +906,7 @@ RGWHandler *RGWRESTMgr_SWIFT::get_handler(struct req_state *s)
if (ret < 0)
return NULL;
- if (!s->bucket_name)
+ if (s->bucket_name_str.empty())
return new RGWHandler_ObjStore_Service_SWIFT;
if (!s->object)
return new RGWHandler_ObjStore_Bucket_SWIFT;