summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ceph.spec.in6
-rw-r--r--configure.ac2
-rw-r--r--debian/changelog6
-rw-r--r--src/Makefile.am6
-rw-r--r--src/rgw/rgw_admin.cc34
-rw-r--r--src/rgw/rgw_rest.cc10
-rw-r--r--src/rgw/rgw_rest_s3.cc70
-rw-r--r--src/rgw/rgw_rest_swift.cc10
8 files changed, 74 insertions, 70 deletions
diff --git a/ceph.spec.in b/ceph.spec.in
index fa72c2d9087..59b05afda8d 100644
--- a/ceph.spec.in
+++ b/ceph.spec.in
@@ -35,6 +35,8 @@ BuildRequires: gdbm
BuildRequires: pkgconfig
BuildRequires: python
BuildRequires: libaio-devel
+BuildRequires: libcurl-devel
+BuildRequires: libxml2-devel
#################################################################################
# specific
@@ -53,7 +55,6 @@ Requires(post): chkconfig
Requires(preun):chkconfig
Requires(preun):initscripts
%endif
-BuildRequires: libcurl-devel
%if 0%{with tcmalloc}
# use isa so this will not be satisfied by
# google-perftools-devel.i686 on a x86_64 box
@@ -212,6 +213,9 @@ make -j$(getconf _NPROCESSORS_ONLN)
%install
make DESTDIR=$RPM_BUILD_ROOT install
+rmdir $RPM_BUILD_ROOT/bin
+rmdir $RPM_BUILD_ROOT/lib
+rmdir $RPM_BUILD_ROOT/include
find $RPM_BUILD_ROOT -type f -name "*.la" -exec rm -f {} ';'
find $RPM_BUILD_ROOT -type f -name "*.a" -exec rm -f {} ';'
install -D src/init-ceph $RPM_BUILD_ROOT%{_initrddir}/ceph
diff --git a/configure.ac b/configure.ac
index f73c973fe72..86043003e63 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8,7 +8,7 @@ AC_PREREQ(2.59)
# NOTE: This version is _only_ used for naming the tarball. The
# VERSION define is not used by the code. It gets a version string
# from 'git describe'; see src/ceph_ver.[ch]
-AC_INIT([ceph], [0.47.1], [ceph-devel@vger.kernel.org])
+AC_INIT([ceph], [0.47.2], [ceph-devel@vger.kernel.org])
AC_CONFIG_SUBDIRS([src/gtest])
AC_CONFIG_SUBDIRS([src/leveldb])
diff --git a/debian/changelog b/debian/changelog
index 5c4514da80a..22f35a64ef5 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ceph (0.47.2-1) experimental; urgency=low
+
+ * New upstream release
+
+ -- Sage Weil <sage@newdream.net> Wed, 23 May 2012 09:00:43 -0700
+
ceph (0.47.1-1) experimental; urgency=low
* New upstream release
diff --git a/src/Makefile.am b/src/Makefile.am
index 300f4a036f8..18323dcaa3f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -920,12 +920,6 @@ rados_include_DATA = \
$(srcdir)/include/page.h \
$(srcdir)/include/crc32c.h
-if WITH_RADOSGW
-rgw_includedir = $(includedir)/rados
-rgw_include_DATA = \
- $(srcdir)/include/rados/librgw.h
-endif
-
crush_includedir = $(includedir)/crush
crush_include_DATA = \
$(srcdir)/crush/hash.h \
diff --git a/src/rgw/rgw_admin.cc b/src/rgw/rgw_admin.cc
index 0d4905c1b46..1e486b46fbf 100644
--- a/src/rgw/rgw_admin.cc
+++ b/src/rgw/rgw_admin.cc
@@ -296,10 +296,10 @@ static void show_user_info(RGWUserInfo& info, Formatter *formatter)
formatter->open_object_section("user_info");
- formatter->dump_string("user_id", info.user_id.c_str());
+ formatter->dump_string("user_id", info.user_id);
formatter->dump_int("rados_uid", info.auid);
- formatter->dump_string("display_name", info.display_name.c_str());
- formatter->dump_string("email", info.user_email.c_str());
+ formatter->dump_string("display_name", info.display_name);
+ formatter->dump_string("email", info.user_email);
formatter->dump_int("suspended", (int)info.suspended);
// subusers
@@ -473,12 +473,12 @@ int bucket_stats(rgw_bucket& bucket, Formatter *formatter)
}
map<RGWObjCategory, RGWBucketStats>::iterator iter;
formatter->open_object_section("stats");
- formatter->dump_string("bucket", bucket.name.c_str());
- formatter->dump_string("pool", bucket.pool.c_str());
+ formatter->dump_string("bucket", bucket.name);
+ formatter->dump_string("pool", bucket.pool);
formatter->dump_string("id", bucket.bucket_id);
- formatter->dump_string("marker", bucket.marker.c_str());
- formatter->dump_string("owner", bucket_info.owner.c_str());
+ formatter->dump_string("marker", bucket.marker);
+ formatter->dump_string("owner", bucket_info.owner);
formatter->open_object_section("usage");
for (iter = stats.begin(); iter != stats.end(); ++iter) {
RGWBucketStats& s = iter->second;
@@ -1156,23 +1156,23 @@ int main(int argc, char **argv)
if (show_log_entries) {
formatter->open_object_section("log_entry");
- formatter->dump_string("bucket", entry.bucket.c_str());
+ formatter->dump_string("bucket", entry.bucket);
entry.time.gmtime(formatter->dump_stream("time")); // UTC
entry.time.localtime(formatter->dump_stream("time_local"));
- formatter->dump_string("remote_addr", entry.remote_addr.c_str());
+ formatter->dump_string("remote_addr", entry.remote_addr);
if (entry.object_owner.length())
- formatter->dump_string("object_owner", entry.object_owner.c_str());
- formatter->dump_string("user", entry.user.c_str());
- formatter->dump_string("operation", entry.op.c_str());
- formatter->dump_string("uri", entry.uri.c_str());
- formatter->dump_string("http_status", entry.http_status.c_str());
- formatter->dump_string("error_code", entry.error_code.c_str());
+ formatter->dump_string("object_owner", entry.object_owner);
+ formatter->dump_string("user", entry.user);
+ formatter->dump_string("operation", entry.op);
+ formatter->dump_string("uri", entry.uri);
+ formatter->dump_string("http_status", entry.http_status);
+ formatter->dump_string("error_code", entry.error_code);
formatter->dump_int("bytes_sent", entry.bytes_sent);
formatter->dump_int("bytes_received", entry.bytes_received);
formatter->dump_int("object_size", entry.obj_size);
formatter->dump_int("total_time", total_time);
- formatter->dump_string("user_agent", entry.user_agent.c_str());
- formatter->dump_string("referrer", entry.referrer.c_str());
+ formatter->dump_string("user_agent", entry.user_agent);
+ formatter->dump_string("referrer", entry.referrer);
formatter->close_section();
formatter->flush(cout);
}
diff --git a/src/rgw/rgw_rest.cc b/src/rgw/rgw_rest.cc
index 9649466f8bc..56452c473c5 100644
--- a/src/rgw/rgw_rest.cc
+++ b/src/rgw/rgw_rest.cc
@@ -179,7 +179,7 @@ void dump_time(struct req_state *s, const char *name, time_t *t)
if (strftime(buf, sizeof(buf), "%Y-%m-%dT%T.000Z", tmp) == 0)
return;
- s->formatter->dump_format(name, buf);
+ s->formatter->dump_string(name, buf);
}
void dump_owner(struct req_state *s, string& id, string& name, const char *section)
@@ -187,8 +187,8 @@ void dump_owner(struct req_state *s, string& id, string& name, const char *secti
if (!section)
section = "Owner";
s->formatter->open_object_section(section);
- s->formatter->dump_format("ID", id.c_str());
- s->formatter->dump_format("DisplayName", name.c_str());
+ s->formatter->dump_string("ID", id);
+ s->formatter->dump_string("DisplayName", name);
s->formatter->close_section();
}
@@ -225,9 +225,9 @@ void end_header(struct req_state *s, const char *content_type)
dump_start(s);
s->formatter->open_object_section("Error");
if (!s->err.s3_code.empty())
- s->formatter->dump_string("Code", s->err.s3_code.c_str());
+ s->formatter->dump_string("Code", s->err.s3_code);
if (!s->err.message.empty())
- s->formatter->dump_format("Message", s->err.message.c_str());
+ s->formatter->dump_string("Message", s->err.message);
s->formatter->close_section();
dump_content_length(s, s->formatter->get_len());
}
diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc
index d6a1dd98dce..2aee8e0d231 100644
--- a/src/rgw/rgw_rest_s3.cc
+++ b/src/rgw/rgw_rest_s3.cc
@@ -34,7 +34,7 @@ void list_all_buckets_end(struct req_state *s)
void dump_bucket(struct req_state *s, RGWBucketEnt& obj)
{
s->formatter->open_object_section("Bucket");
- s->formatter->dump_format("Name", obj.bucket.name.c_str());
+ s->formatter->dump_string("Name", obj.bucket.name);
dump_time(s, "CreationDate", &obj.mtime);
s->formatter->close_section();
}
@@ -147,25 +147,25 @@ void RGWListBucket_REST_S3::send_response()
s->formatter->open_object_section_in_ns("ListBucketResult",
"http://s3.amazonaws.com/doc/2006-03-01/");
- s->formatter->dump_format("Name", s->bucket_name);
+ s->formatter->dump_string("Name", s->bucket_name);
if (!prefix.empty())
- s->formatter->dump_format("Prefix", prefix.c_str());
- s->formatter->dump_format("Marker", marker.c_str());
+ s->formatter->dump_string("Prefix", prefix);
+ s->formatter->dump_string("Marker", marker);
s->formatter->dump_int("MaxKeys", max);
if (!delimiter.empty())
- s->formatter->dump_format("Delimiter", delimiter.c_str());
+ s->formatter->dump_string("Delimiter", delimiter);
- s->formatter->dump_format("IsTruncated", (max && is_truncated ? "true" : "false"));
+ s->formatter->dump_string("IsTruncated", (max && is_truncated ? "true" : "false"));
if (ret >= 0) {
vector<RGWObjEnt>::iterator iter;
for (iter = objs.begin(); iter != objs.end(); ++iter) {
s->formatter->open_array_section("Contents");
- s->formatter->dump_string("Key", iter->name.c_str());
+ s->formatter->dump_string("Key", iter->name);
dump_time(s, "LastModified", &iter->mtime);
s->formatter->dump_format("ETag", "\"%s\"", iter->etag.c_str());
s->formatter->dump_int("Size", iter->size);
- s->formatter->dump_format("StorageClass", "STANDARD");
+ s->formatter->dump_string("StorageClass", "STANDARD");
dump_owner(s, iter->owner, iter->owner_display_name);
s->formatter->close_section();
}
@@ -173,7 +173,7 @@ void RGWListBucket_REST_S3::send_response()
map<string, bool>::iterator pref_iter;
for (pref_iter = common_prefixes.begin(); pref_iter != common_prefixes.end(); ++pref_iter) {
s->formatter->open_array_section("CommonPrefixes");
- s->formatter->dump_format("Prefix", pref_iter->first.c_str());
+ s->formatter->dump_string("Prefix", pref_iter->first);
s->formatter->close_section();
}
}
@@ -327,7 +327,7 @@ void RGWCopyObj_REST_S3::send_response()
bufferlist& bl = iter->second;
if (bl.length()) {
char *etag = bl.c_str();
- s->formatter->dump_format("ETag", etag);
+ s->formatter->dump_string("ETag", etag);
}
}
s->formatter->close_section();
@@ -388,9 +388,9 @@ void RGWInitMultipart_REST_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_format("Bucket", s->bucket_name);
- s->formatter->dump_format("Key", s->object);
- s->formatter->dump_format("UploadId", upload_id.c_str());
+ s->formatter->dump_string("Bucket", s->bucket_name);
+ s->formatter->dump_string("Key", s->object);
+ s->formatter->dump_string("UploadId", upload_id);
s->formatter->close_section();
flush_formatter_to_req_state(s, s->formatter);
}
@@ -408,9 +408,9 @@ void RGWCompleteMultipart_REST_S3::send_response()
"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_format("Bucket", s->bucket_name);
- s->formatter->dump_format("Key", s->object);
- s->formatter->dump_format("ETag", etag.c_str());
+ s->formatter->dump_string("Bucket", s->bucket_name);
+ s->formatter->dump_string("Key", s->object);
+ s->formatter->dump_string("ETag", etag);
s->formatter->close_section();
flush_formatter_to_req_state(s, s->formatter);
}
@@ -445,14 +445,14 @@ void RGWListMultipart_REST_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_format("Bucket", s->bucket_name);
- s->formatter->dump_format("Key", s->object);
- s->formatter->dump_format("UploadId", upload_id.c_str());
- s->formatter->dump_format("StorageClass", "STANDARD");
+ s->formatter->dump_string("Bucket", s->bucket_name);
+ s->formatter->dump_string("Key", s->object);
+ s->formatter->dump_string("UploadId", upload_id);
+ s->formatter->dump_string("StorageClass", "STANDARD");
s->formatter->dump_format("PartNumberMarker", "%d", marker);
s->formatter->dump_format("NextPartNumberMarker", "%d", cur_max + 1);
s->formatter->dump_format("MaxParts", "%d", max_parts);
- s->formatter->dump_format("IsTruncated", "%s", (test_iter == parts.end() ? "false" : "true"));
+ s->formatter->dump_string("IsTruncated", (test_iter == parts.end() ? "false" : "true"));
ACLOwner& owner = policy.get_owner();
dump_owner(s, owner.get_id(), owner.get_display_name());
@@ -468,11 +468,11 @@ void RGWListMultipart_REST_S3::send_response()
s->formatter->open_object_section("Part");
if (strftime(buf, sizeof(buf), "%Y-%m-%dT%T.000Z", &tmp) > 0) {
- s->formatter->dump_format("LastModified", buf);
+ s->formatter->dump_string("LastModified", buf);
}
s->formatter->dump_unsigned("PartNumber", info.num);
- s->formatter->dump_format("ETag", "%s", info.etag.c_str());
+ s->formatter->dump_string("ETag", info.etag);
s->formatter->dump_unsigned("Size", info.size);
s->formatter->close_section();
}
@@ -493,36 +493,36 @@ void RGWListBucketMultiparts_REST_S3::send_response()
return;
s->formatter->open_object_section("ListMultipartUploadsResult");
- s->formatter->dump_format("Bucket", s->bucket_name);
+ s->formatter->dump_string("Bucket", s->bucket_name);
if (!prefix.empty())
- s->formatter->dump_format("ListMultipartUploadsResult.Prefix", prefix.c_str());
+ s->formatter->dump_string("ListMultipartUploadsResult.Prefix", prefix);
string& key_marker = marker.get_key();
if (!key_marker.empty())
- s->formatter->dump_format("KeyMarker", key_marker.c_str());
+ s->formatter->dump_string("KeyMarker", key_marker);
string& upload_id_marker = marker.get_upload_id();
if (!upload_id_marker.empty())
- s->formatter->dump_format("UploadIdMarker", upload_id_marker.c_str());
+ s->formatter->dump_string("UploadIdMarker", upload_id_marker);
string next_key = next_marker.mp.get_key();
if (!next_key.empty())
- s->formatter->dump_format("NextKeyMarker", next_key.c_str());
+ s->formatter->dump_string("NextKeyMarker", next_key);
string next_upload_id = next_marker.mp.get_upload_id();
if (!next_upload_id.empty())
- s->formatter->dump_format("NextUploadIdMarker", next_upload_id.c_str());
+ s->formatter->dump_string("NextUploadIdMarker", next_upload_id);
s->formatter->dump_format("MaxUploads", "%d", max_uploads);
if (!delimiter.empty())
- s->formatter->dump_format("Delimiter", delimiter.c_str());
- s->formatter->dump_format("IsTruncated", (is_truncated ? "true" : "false"));
+ s->formatter->dump_string("Delimiter", delimiter);
+ s->formatter->dump_string("IsTruncated", (is_truncated ? "true" : "false"));
if (ret >= 0) {
vector<RGWMultipartUploadEntry>::iterator iter;
for (iter = uploads.begin(); iter != uploads.end(); ++iter) {
RGWMPObj& mp = iter->mp;
s->formatter->open_array_section("Upload");
- s->formatter->dump_format("Key", mp.get_key().c_str());
- s->formatter->dump_format("UploadId", mp.get_upload_id().c_str());
+ s->formatter->dump_string("Key", mp.get_key());
+ s->formatter->dump_string("UploadId", mp.get_upload_id());
dump_owner(s, s->user.user_id, s->user.display_name, "Initiator");
dump_owner(s, s->user.user_id, s->user.display_name);
- s->formatter->dump_format("StorageClass", "STANDARD");
+ s->formatter->dump_string("StorageClass", "STANDARD");
dump_time(s, "Initiated", &iter->obj.mtime);
s->formatter->close_section();
}
@@ -530,7 +530,7 @@ void RGWListBucketMultiparts_REST_S3::send_response()
s->formatter->open_array_section("CommonPrefixes");
map<string, bool>::iterator pref_iter;
for (pref_iter = common_prefixes.begin(); pref_iter != common_prefixes.end(); ++pref_iter) {
- s->formatter->dump_format("CommonPrefixes.Prefix", pref_iter->first.c_str());
+ s->formatter->dump_string("CommonPrefixes.Prefix", pref_iter->first);
}
s->formatter->close_section();
}
diff --git a/src/rgw/rgw_rest_swift.cc b/src/rgw/rgw_rest_swift.cc
index b84d55f3b69..d6e59845fab 100644
--- a/src/rgw/rgw_rest_swift.cc
+++ b/src/rgw/rgw_rest_swift.cc
@@ -49,7 +49,7 @@ void RGWListBuckets_REST_SWIFT::send_response()
for (int i = 0; i < limit && iter != m.end(); ++iter, ++i) {
RGWBucketEnt obj = iter->second;
s->formatter->open_object_section("container");
- s->formatter->dump_string("name", obj.bucket.name.c_str());
+ s->formatter->dump_string("name", obj.bucket.name);
s->formatter->dump_int("count", obj.count);
s->formatter->dump_int("bytes", obj.size);
s->formatter->close_section();
@@ -137,8 +137,8 @@ void RGWListBucket_REST_SWIFT::send_response()
goto next;
s->formatter->open_object_section("object");
- s->formatter->dump_string("name", iter->name.c_str());
- s->formatter->dump_string("hash", iter->etag.c_str());
+ s->formatter->dump_string("name", iter->name);
+ s->formatter->dump_string("hash", iter->etag);
s->formatter->dump_int("bytes", iter->size);
string single_content_type = iter->content_type;
if (iter->content_type.size()) {
@@ -150,7 +150,7 @@ void RGWListBucket_REST_SWIFT::send_response()
++pos;
single_content_type = single_content_type.substr(pos);
}
- s->formatter->dump_string("content_type", single_content_type.c_str());
+ s->formatter->dump_string("content_type", single_content_type);
}
dump_time(s, "last_modified", &iter->mtime);
s->formatter->close_section();
@@ -162,7 +162,7 @@ void RGWListBucket_REST_SWIFT::send_response()
goto next;
s->formatter->open_object_section("object");
- s->formatter->dump_string("name", pref_iter->first.c_str());
+ s->formatter->dump_string("name", pref_iter->first);
s->formatter->close_section();
}
next: