]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: get rid of req_state.bucket_name
authorYehuda Sadeh <yehuda@inktank.com>
Mon, 21 Oct 2013 21:45:59 +0000 (14:45 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Mon, 21 Oct 2013 23:25:24 +0000 (16:25 -0700)
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>
src/rgw/rgw_common.cc
src/rgw/rgw_common.h
src/rgw/rgw_log.cc
src/rgw/rgw_op.cc
src/rgw/rgw_rest.cc
src/rgw/rgw_rest_metadata.cc
src/rgw/rgw_rest_s3.cc
src/rgw/rgw_rest_swift.cc

index c872314fe4e6c63b925c9d99bf532b90a1039113..0b2d003599220a054d9050477fa017091a0458d3 100644 (file)
@@ -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 {
index 2aaa5b6af8cbd64d09663d7e339f6061ffc35350..b3d39e57c2d0c0129556358faa7f9cc024e3bb73 100644 (file)
@@ -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;
index 7b75441efce36f578710d07df8dff5b77d307a85..9398dd04d73fa11cbca0b1ffb4e9f47ed761492f 100644 (file)
@@ -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;
   }
index efdd9981a7f905d51ef483324817df438e9c4388..aa7ff9bb3f51fa02858d1809544b0c3294985e51 100644 (file)
@@ -1212,7 +1212,7 @@ void RGWDeleteBucket::execute()
 {
   ret = -EINVAL;
 
-  if (!s->bucket_name)
+  if (s->bucket_name_str.empty())
     return;
 
   RGWObjVersionTracker ot;
index 87ad92dfdf704cd6ba6fe7e0090d6ddf361933fa..30cb0d9b66e5e857a4b593a55ea7a1a9f8b4c314 100644 (file)
@@ -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;
index fc1d6ded1669c32443015a74abbd1842989024ee..5036235ebd2b68efbc9510043425f9a0391831ef 100644 (file)
@@ -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();
index 83874dd42c4a306a56860126dbf325f7871f55f4..b8fd8aa4093d10d55c648e8f543aa5b515c59dcc 100644 (file)
@@ -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)
index 58e60978c45c1870307f6349e3c6b67625d7fa6a..eba16d86899c4685edfdac61ab83996a5b9083d4 100644 (file)
@@ -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;