[Pkg-ceph-commits] [ceph] 02/03: New upstream pre-release [0.80~rc1] + changelog summary
Dmitry Smirnov
onlyjob at moszumanska.debian.org
Thu Apr 24 01:33:12 UTC 2014
This is an automated email from the git hooks/post-receive script.
onlyjob pushed a commit to branch experimental
in repository ceph.
commit e707b0d
Author: Dmitry Smirnov <onlyjob at member.fsf.org>
Date: Wed Apr 23 16:52:40 2014
New upstream pre-release [0.80~rc1] + changelog summary
---
debian/ceph-test.lintian-overrides | 2 +-
debian/changelog | 9 ++
debian/copyright | 1 +
debian/librados2.symbols | 1 +
debian/patches/5469.patch | 182 ----------------------------------
debian/patches/8008.patch | 41 --------
debian/patches/8046.patch | 135 --------------------------
debian/patches/8048.patch | 54 -----------
debian/patches/8077.patch | 72 --------------
debian/patches/8081.patch | 27 ------
debian/patches/8085.patch | 57 -----------
debian/patches/8086.patch | 45 ---------
debian/patches/8089.patch | 94 ------------------
debian/patches/8091.patch | 37 -------
debian/patches/_1606.patch | 193 -------------------------------------
debian/patches/_mds-fixtypo.patch | 23 -----
debian/patches/series | 13 ---
debian/patches/spelling.patch | 131 -------------------------
18 files changed, 12 insertions(+), 1105 deletions(-)
diff --git a/debian/ceph-test.lintian-overrides b/debian/ceph-test.lintian-overrides
index 4ebc242..8894b71 100644
--- a/debian/ceph-test.lintian-overrides
+++ b/debian/ceph-test.lintian-overrides
@@ -1,2 +1,2 @@
# Acknowledged:
-binary-without-manpage
\ No newline at end of file
+binary-without-manpage
diff --git a/debian/changelog b/debian/changelog
index d59ae97..30740a8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+ceph (0.80~rc1-1) experimental; urgency=low
+
+ * New upstream pre-release.
+ * Minor re-factoring of udev rules installation.
+ * ceph-common: added ceph-crush-location.1 man page.
+ * ceph-test-dbg: fixed Depends.
+
+ -- Dmitry Smirnov <onlyjob at debian.org> Thu, 24 Apr 2014 02:52:12 +1000
+
ceph (0.79-3) experimental; urgency=low
* New "arch.patch" to detect build architecture using dpkg-architecture.
diff --git a/debian/copyright b/debian/copyright
index 1f59ae0..1196f9d 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -286,6 +286,7 @@ License: BSD-3-clause
Files: src/civetweb/*
Copyright: 2004-2013 Sergey Lyubka
+ 2013-2014 the Civetweb developers
License: Expat
Files: src/json_spirit/*
diff --git a/debian/librados2.symbols b/debian/librados2.symbols
index cc4dc58..6ed0fcf 100644
--- a/debian/librados2.symbols
+++ b/debian/librados2.symbols
@@ -169,6 +169,7 @@ librados.so.2 librados2 #MINVER#
rados_ioctx_pool_stat at Base 0.72.2
rados_ioctx_selfmanaged_snap_create at Base 0.72.2
rados_ioctx_selfmanaged_snap_remove at Base 0.72.2
+ rados_ioctx_snap_rollback at Base 0.80~rc1
rados_ioctx_selfmanaged_snap_rollback at Base 0.72.2
rados_ioctx_selfmanaged_snap_set_write_ctx at Base 0.72.2
rados_ioctx_set_namespace at Base 0.72.2
diff --git a/debian/patches/5469.patch b/debian/patches/5469.patch
deleted file mode 100644
index 69bf0c9..0000000
--- a/debian/patches/5469.patch
+++ /dev/null
@@ -1,182 +0,0 @@
-Last-Update: 2014-04-17
-Forwarded: not-needed
-Origin: upstream, http://tracker.ceph.com/projects/ceph/repository/revisions/a8330f5cfddaab853a1844afe43ee9a71f96d0c3
-Author: Josh Durgin <josh.durgin at inktank.com>
-Bug-Ceph: http://tracker.ceph.com/issues/5469
-Description:
- librbd: fix zero length request handling
-
- Zero-length writes would hang because the completion was never
- called. Reads would hit an assert about zero length in
- Striper::file_to_exents().
-
- Fix all of these cases by skipping zero-length extents. The completion
- is created and finished when finish_adding_requests() is called. This
- is slightly different from usual completions since it comes from the
- same thread as the one scheduling the request, but zero-length aio
- requests should never happen from things that might care about this,
- like QEMU.
-
- Writes and discards have had this bug since the beginning of
- librbd. Reads might have avoided it until stripingv2 was added.
-
- Fixes: #5469
- Signed-off-by: Josh Durgin <josh.durgin at inktank.com>
-
-diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc
-index 8056fab..127be38 100644
---- a/src/librbd/internal.cc
-+++ b/src/librbd/internal.cc
-@@ -2884,9 +2884,6 @@ reprotect_and_return_err:
- ldout(cct, 20) << "aio_write " << ictx << " off = " << off << " len = "
- << len << " buf = " << (void*)buf << dendl;
-
-- if (!len)
-- return 0;
--
- int r = ictx_check(ictx);
- if (r < 0)
- return r;
-@@ -2912,14 +2909,16 @@ reprotect_and_return_err:
-
- // map
- vector<ObjectExtent> extents;
-- Striper::file_to_extents(ictx->cct, ictx->format_string, &ictx->layout, off, mylen, 0, extents);
-+ if (len > 0) {
-+ Striper::file_to_extents(ictx->cct, ictx->format_string,
-+ &ictx->layout, off, mylen, 0, extents);
-+ }
-
- c->get();
- c->init_time(ictx, AIO_TYPE_WRITE);
- for (vector<ObjectExtent>::iterator p = extents.begin(); p != extents.end(); ++p) {
- ldout(cct, 20) << " oid " << p->oid << " " << p->offset << "~" << p->length
- << " from " << p->buffer_extents << dendl;
--
- // assemble extent
- bufferlist bl;
- for (vector<pair<uint64_t,uint64_t> >::iterator q = p->buffer_extents.begin();
-@@ -2966,9 +2965,6 @@ reprotect_and_return_err:
- ldout(cct, 20) << "aio_discard " << ictx << " off = " << off << " len = "
- << len << dendl;
-
-- if (!len)
-- return 0;
--
- int r = ictx_check(ictx);
- if (r < 0)
- return r;
-@@ -2992,7 +2988,10 @@ reprotect_and_return_err:
-
- // map
- vector<ObjectExtent> extents;
-- Striper::file_to_extents(ictx->cct, ictx->format_string, &ictx->layout, off, len, 0, extents);
-+ if (len > 0) {
-+ Striper::file_to_extents(ictx->cct, ictx->format_string,
-+ &ictx->layout, off, len, 0, extents);
-+ }
-
- c->get();
- c->init_time(ictx, AIO_TYPE_DISCARD);
-@@ -3086,6 +3085,8 @@ reprotect_and_return_err:
- r = clip_io(ictx, p->first, &len);
- if (r < 0)
- return r;
-+ if (len == 0)
-+ continue;
-
- Striper::file_to_extents(ictx->cct, ictx->format_string, &ictx->layout,
- p->first, len, 0, object_extents, buffer_ofs);
-diff --git a/src/test/librbd/test_librbd.cc b/src/test/librbd/test_librbd.cc
-index d0b9c99..7f35418 100644
---- a/src/test/librbd/test_librbd.cc
-+++ b/src/test/librbd/test_librbd.cc
-@@ -1777,6 +1777,88 @@ TEST(LibRBD, DiffIterateStress)
- ASSERT_EQ(0, destroy_one_pool_pp(pool_name, rados));
- }
-
-+TEST(LibRBD, ZeroLengthWrite)
-+{
-+ rados_t cluster;
-+ rados_ioctx_t ioctx;
-+ string pool_name = get_temp_pool_name();
-+ ASSERT_EQ("", create_one_pool(pool_name, &cluster));
-+ rados_ioctx_create(cluster, pool_name.c_str(), &ioctx);
-+
-+ rbd_image_t image;
-+ int order = 0;
-+ const char *name = "testimg";
-+ uint64_t size = 2 << 20;
-+
-+ ASSERT_EQ(0, create_image(ioctx, name, size, &order));
-+ ASSERT_EQ(0, rbd_open(ioctx, name, &image, NULL));
-+
-+ char read_data[1];
-+ ASSERT_EQ(0, rbd_write(image, 0, 0, NULL));
-+ ASSERT_EQ(1, rbd_read(image, 0, 1, read_data));
-+ ASSERT_EQ('\0', read_data[0]);
-+
-+ ASSERT_EQ(0, rbd_close(image));
-+
-+ rados_ioctx_destroy(ioctx);
-+ ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
-+}
-+
-+
-+TEST(LibRBD, ZeroLengthDiscard)
-+{
-+ rados_t cluster;
-+ rados_ioctx_t ioctx;
-+ string pool_name = get_temp_pool_name();
-+ ASSERT_EQ("", create_one_pool(pool_name, &cluster));
-+ rados_ioctx_create(cluster, pool_name.c_str(), &ioctx);
-+
-+ rbd_image_t image;
-+ int order = 0;
-+ const char *name = "testimg";
-+ uint64_t size = 2 << 20;
-+
-+ ASSERT_EQ(0, create_image(ioctx, name, size, &order));
-+ ASSERT_EQ(0, rbd_open(ioctx, name, &image, NULL));
-+
-+ const char *data = "blah";
-+ char read_data[strlen(data)];
-+ ASSERT_EQ((int)strlen(data), rbd_write(image, 0, strlen(data), data));
-+ ASSERT_EQ(0, rbd_discard(image, 0, 0));
-+ ASSERT_EQ((int)strlen(data), rbd_read(image, 0, strlen(data), read_data));
-+ ASSERT_EQ(0, memcmp(data, read_data, strlen(data)));
-+
-+ ASSERT_EQ(0, rbd_close(image));
-+
-+ rados_ioctx_destroy(ioctx);
-+ ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
-+}
-+
-+TEST(LibRBD, ZeroLengthRead)
-+{
-+ rados_t cluster;
-+ rados_ioctx_t ioctx;
-+ string pool_name = get_temp_pool_name();
-+ ASSERT_EQ("", create_one_pool(pool_name, &cluster));
-+ rados_ioctx_create(cluster, pool_name.c_str(), &ioctx);
-+
-+ rbd_image_t image;
-+ int order = 0;
-+ const char *name = "testimg";
-+ uint64_t size = 2 << 20;
-+
-+ ASSERT_EQ(0, create_image(ioctx, name, size, &order));
-+ ASSERT_EQ(0, rbd_open(ioctx, name, &image, NULL));
-+
-+ char read_data[1];
-+ ASSERT_EQ(0, rbd_read(image, 0, 0, read_data));
-+
-+ ASSERT_EQ(0, rbd_close(image));
-+
-+ rados_ioctx_destroy(ioctx);
-+ ASSERT_EQ(0, destroy_one_pool(pool_name, &cluster));
-+}
-+
- int main(int argc, char **argv)
- {
- ::testing::InitGoogleTest(&argc, argv);
diff --git a/debian/patches/8008.patch b/debian/patches/8008.patch
deleted file mode 100644
index d333a60..0000000
--- a/debian/patches/8008.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Last-Update: 2014-04-17
-Forwarded: not-needed
-Origin: upstream, http://tracker.ceph.com/projects/ceph/repository/revisions/6ff645f592cd82f888b3646e10438aea781370a2
-Bug-Ceph: http://tracker.ceph.com/issues/8008
-Description:
- osd/PG: fix repair_object when missing on primary
-
- If the object is missing on the primary, we need to fully populate the
- missing_loc.needs_recovery_map. This broke with the recent refactoring of
- recovery for EC, somewhere around 84e2f39c557c79e9ca7c3c3f0eb0bfa4860bf899.
-
- Fixes: #8008
- Signed-off-by: Sage Weil <sage at inktank.com>
-
---- a/src/osd/PG.cc
-+++ b/src/osd/PG.cc
-@@ -3444,8 +3444,9 @@
- // We should only be scrubbing if the PG is clean.
- assert(waiting_for_unreadable_object.empty());
-
- pg_log.missing_add(soid, oi.version, eversion_t());
-+ missing_loc.add_missing(soid, oi.version, eversion_t());
- missing_loc.add_location(soid, ok_peer);
-
- pg_log.set_last_requested(0);
- }
---- a/src/osd/PG.h
-+++ b/src/osd/PG.h
-@@ -378,8 +378,12 @@
- assert(i->second.need == j->second.need);
- }
- }
- }
-+
-+ void add_missing(const hobject_t &hoid, eversion_t need, eversion_t have) {
-+ needs_recovery_map[hoid] = pg_missing_t::item(need, have);
-+ }
- void revise_need(const hobject_t &hoid, eversion_t need) {
- assert(needs_recovery(hoid));
- needs_recovery_map[hoid].need = need;
- }
diff --git a/debian/patches/8046.patch b/debian/patches/8046.patch
deleted file mode 100644
index f5e6af8..0000000
--- a/debian/patches/8046.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From a8f0953974511cd2883bd5d678ff47c4574064ea Mon Sep 17 00:00:00 2001
-From: Sage Weil <sage at inktank.com>
-Date: Wed, 9 Apr 2014 12:38:10 -0700
-Subject: [PATCH] osd/ReplicatedPG: adjust obc + snapset_obc locking strategy
-
-Prevoiusly we assumed that if we had snapset_obc set, !exists on the head
-and if we got the snapdir lock we were good to take the head lock too.
-This is no the case when:
-
- - delete queued
- - takes wr lock on both head and snapdir
- - delete commits (but not yet applied)
- - stat
- - tries to take wr lock on head
- - blocks, toggles w=1 state on *head only*
- - copy-from
- - tries to take wr lock on snapdir, succeeds
- - tries to take wr lock on head, fails because w=1
- - fails the assert(got)
-
-The problem is that the read and write paths are taking different locks
-and we are expecting them to operate in synchrony.
-
-Fix this by using the same ordering for reads as well as write: if the
-snapset_obc is defined, take the read lock on that too, just as we do with
-a write.
-
-Fixes: #8046
-Signed-off-by: Sage Weil <sage at inktank.com>
-Reviewed-by: Samuel Just <sam.just at inktank.com>
----
- src/osd/ReplicatedPG.h | 50 +++++++++++++++++++++++++++++++-------------------
- 1 file changed, 31 insertions(+), 19 deletions(-)
-
---- a/src/osd/ReplicatedPG.h
-+++ b/src/osd/ReplicatedPG.h
-@@ -644,40 +644,47 @@
- * @param ctx [in,out] ctx to get locks for
- * @return true on success, false if we are queued
- */
- bool get_rw_locks(OpContext *ctx) {
-- if (ctx->op->may_write() || ctx->op->may_cache()) {
-- /* If snapset_obc, !obc->obs->exists and we need to
-- * get a write lock on the snapdir as well as the
-- * head. Fortunately, we are guarranteed to get a
-- * write lock on the head if !obc->obs->exists
-- */
-- if (ctx->snapset_obc) {
-- assert(!ctx->obc->obs.exists);
-+ /* If snapset_obc, !obc->obs->exists and we will always take the
-+ * snapdir lock *before* the head lock. Since all callers will do
-+ * this (read or write) if we get the first we will be guaranteed
-+ * to get the second.
-+ */
-+ if (ctx->snapset_obc) {
-+ assert(!ctx->obc->obs.exists);
-+ if (ctx->op->may_write() || ctx->op->may_cache()) {
- if (ctx->snapset_obc->get_write(ctx->op)) {
- ctx->release_snapset_obc = true;
- ctx->lock_to_release = OpContext::W_LOCK;
- } else {
- return false;
- }
-- // we are creating it and have the only ref
-- bool got = ctx->obc->get_write(ctx->op);
-- assert(got);
-- return true;
- } else {
-- if (ctx->obc->get_write(ctx->op)) {
-- ctx->lock_to_release = OpContext::W_LOCK;
-- return true;
-+ assert(ctx->op->may_read());
-+ if (ctx->snapset_obc->get_read(ctx->op)) {
-+ ctx->release_snapset_obc = true;
-+ ctx->lock_to_release = OpContext::R_LOCK;
- } else {
- return false;
- }
- }
-+ }
-+ if (ctx->op->may_write() || ctx->op->may_cache()) {
-+ if (ctx->obc->get_write(ctx->op)) {
-+ ctx->lock_to_release = OpContext::W_LOCK;
-+ return true;
-+ } else {
-+ assert(!ctx->snapset_obc);
-+ return false;
-+ }
- } else {
- assert(ctx->op->may_read());
- if (ctx->obc->get_read(ctx->op)) {
- ctx->lock_to_release = OpContext::R_LOCK;
- return true;
- } else {
-+ assert(!ctx->snapset_obc);
- return false;
- }
- }
- }
-@@ -704,26 +711,31 @@
- list<OpRequestRef> to_req;
- bool requeue_recovery = false;
- bool requeue_recovery_clone = false;
- bool requeue_recovery_snapset = false;
-- if (ctx->snapset_obc && ctx->release_snapset_obc) {
-- ctx->snapset_obc->put_write(&to_req, &requeue_recovery_snapset);
-- ctx->release_snapset_obc = false;
-- }
- switch (ctx->lock_to_release) {
- case OpContext::W_LOCK:
-+ if (ctx->snapset_obc && ctx->release_snapset_obc) {
-+ ctx->snapset_obc->put_write(&to_req, &requeue_recovery_snapset);
-+ ctx->release_snapset_obc = false;
-+ }
- ctx->obc->put_write(&to_req, &requeue_recovery);
- if (ctx->clone_obc)
- ctx->clone_obc->put_write(&to_req, &requeue_recovery_clone);
- break;
- case OpContext::R_LOCK:
-+ if (ctx->snapset_obc && ctx->release_snapset_obc) {
-+ ctx->snapset_obc->put_read(&to_req);
-+ ctx->release_snapset_obc = false;
-+ }
- ctx->obc->put_read(&to_req);
- break;
- case OpContext::NONE:
- break;
- default:
- assert(0);
- };
-+ assert(ctx->release_snapset_obc == false);
- ctx->lock_to_release = OpContext::NONE;
- if (requeue_recovery || requeue_recovery_clone || requeue_recovery_snapset)
- osd->recovery_wq.queue(this);
- requeue_ops(to_req);
diff --git a/debian/patches/8048.patch b/debian/patches/8048.patch
deleted file mode 100644
index 44903fe..0000000
--- a/debian/patches/8048.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 3d0e80acd9e3e1c751c871742313173f14abbea6 Mon Sep 17 00:00:00 2001
-From: Sage Weil <sage at inktank.com>
-Date: Thu, 17 Apr 2014 13:11:54 -0700
-Subject: [PATCH] osd/ReplicatedPG: check clones for degraded
-
-We check whether the head is degraded, and we check whether a clone is
-unreadable, but in the case where we have a cache op on a degraded object,
-we don't check. That leads to an assert when the repop hits the replica
-and the object is in the peer's missing set.
-
-Fix this by adding a check on the clone when write_ordered is true. Note
-that checking write_ordered is better than whether it is a cache op because
-we want to preserve write ordering even for reads that are flagged by the
-client.
-
-Fixes: #8048
-Signed-off-by: Sage Weil <sage at inktank.com>
----
- src/osd/ReplicatedPG.cc | 22 +++++++++++++++++-----
- 1 file changed, 17 insertions(+), 5 deletions(-)
-
---- a/src/osd/ReplicatedPG.cc
-+++ b/src/osd/ReplicatedPG.cc
-@@ -1255,13 +1255,25 @@
- assert(!can_create); // only happens on a read
- wait_for_unreadable_object(missing_oid, op);
- return;
- }
-- } else if (r == 0 && is_unreadable_object(obc->obs.oi.soid)) {
-- dout(10) << __func__ << ": clone " << obc->obs.oi.soid
-- << " is unreadable, waiting" << dendl;
-- wait_for_unreadable_object(obc->obs.oi.soid, op);
-- return;
-+ } else if (r == 0) {
-+ if (is_unreadable_object(obc->obs.oi.soid)) {
-+ dout(10) << __func__ << ": clone " << obc->obs.oi.soid
-+ << " is unreadable, waiting" << dendl;
-+ wait_for_unreadable_object(obc->obs.oi.soid, op);
-+ return;
-+ }
-+
-+ // degraded object? (the check above was for head; this could be a clone)
-+ if (write_ordered &&
-+ obc->obs.oi.soid.snap != CEPH_NOSNAP &&
-+ is_degraded_object(obc->obs.oi.soid)) {
-+ dout(10) << __func__ << ": clone " << obc->obs.oi.soid
-+ << " is degraded, waiting" << dendl;
-+ wait_for_degraded_object(obc->obs.oi.soid, op);
-+ return;
-+ }
- }
-
- if (hit_set) {
- hit_set->insert(oid);
diff --git a/debian/patches/8077.patch b/debian/patches/8077.patch
deleted file mode 100644
index ac2d3db..0000000
--- a/debian/patches/8077.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 78df66f52084bd5ba354bb41edce98e032e4811b Mon Sep 17 00:00:00 2001
-From: Sage Weil <sage at inktank.com>
-Date: Fri, 11 Apr 2014 13:14:58 -0700
-Subject: [PATCH] osd/ReplicatedPG: skip missing hit_sets when loading into
- memory
-
-We weren't handling hit_sets that were missing.
-
-Two changes here:
-
-1- Load the hit_sets oldest to newest. That means that if we stop partway
- through loading, and then add another to the end of the list, and then
- try again to load some more, we will still catch them all.
-2- If the object is missing, stop. We'll try again the next time
- agent_work() is called.
-
-Fixes: #8077
-Signed-off-by: Sage Weil <sage at inktank.com>
----
- src/osd/ReplicatedPG.cc | 29 +++++++++++++++++------------
- 1 file changed, 17 insertions(+), 12 deletions(-)
-
---- a/src/osd/ReplicatedPG.cc
-+++ b/src/osd/ReplicatedPG.cc
-@@ -10742,11 +10742,10 @@
- }
-
- if (agent_state->hit_set_map.size() < info.hit_set.history.size()) {
- dout(10) << __func__ << dendl;
-- for (list<pg_hit_set_info_t>::reverse_iterator p =
-- info.hit_set.history.rbegin();
-- p != info.hit_set.history.rend(); ++p) {
-+ for (list<pg_hit_set_info_t>::iterator p = info.hit_set.history.begin();
-+ p != info.hit_set.history.end(); ++p) {
- if (agent_state->hit_set_map.count(p->begin.sec()) == 0) {
- dout(10) << __func__ << " loading " << p->begin << "-"
- << p->end << dendl;
- if (!pool.info.is_replicated()) {
-@@ -10757,18 +10756,24 @@
-
- // check if it's still in flight
- if (hit_set_flushing.count(p->begin)) {
- agent_state->add_hit_set(p->begin.sec(), hit_set_flushing[p->begin]);
-- } else {
-- bufferlist bl;
-- hobject_t oid = get_hit_set_archive_object(p->begin, p->end);
-- int r = osd->store->read(coll, oid, 0, 0, bl);
-- assert(r >= 0);
-- HitSetRef hs(new HitSet);
-- bufferlist::iterator pbl = bl.begin();
-- ::decode(*hs, pbl);
-- agent_state->add_hit_set(p->begin.sec(), hs);
-+ continue;
- }
-+
-+ hobject_t oid = get_hit_set_archive_object(p->begin, p->end);
-+ if (is_unreadable_object(oid)) {
-+ dout(10) << __func__ << " unreadable " << oid << ", waiting" << dendl;
-+ break;
-+ }
-+
-+ bufferlist bl;
-+ int r = osd->store->read(coll, oid, 0, 0, bl);
-+ assert(r >= 0);
-+ HitSetRef hs(new HitSet);
-+ bufferlist::iterator pbl = bl.begin();
-+ ::decode(*hs, pbl);
-+ agent_state->add_hit_set(p->begin.sec(), hs);
- }
- }
- }
- }
diff --git a/debian/patches/8081.patch b/debian/patches/8081.patch
deleted file mode 100644
index c7e8025..0000000
--- a/debian/patches/8081.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 809d0fab38d092dfa857e4237e5799c849de940e Mon Sep 17 00:00:00 2001
-From: Sage Weil <sage at inktank.com>
-Date: Fri, 11 Apr 2014 17:46:44 -0700
-Subject: [PATCH] osd/ReplicatedPG: handle missing hit_set on HITSET_GET rados
- op
-
-Fixes: #8081
-Signed-off-by: Sage Weil <sage at inktank.com>
----
- src/osd/ReplicatedPG.cc | 4 ++++
- 1 file changed, 4 insertions(+)
-
---- a/src/osd/ReplicatedPG.cc
-+++ b/src/osd/ReplicatedPG.cc
-@@ -963,8 +963,12 @@
- // FIXME: EC not supported yet
- result = -EOPNOTSUPP;
- break;
- }
-+ if (is_unreadable_object(oid)) {
-+ wait_for_unreadable_object(oid, op);
-+ return;
-+ }
- result = osd->store->read(coll, oid, 0, 0, osd_op.outdata);
- }
- }
- break;
diff --git a/debian/patches/8085.patch b/debian/patches/8085.patch
deleted file mode 100644
index e80b340..0000000
--- a/debian/patches/8085.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From a72bcddfc81254793689612d5615ae572d8f51f7 Mon Sep 17 00:00:00 2001
-From: Sage Weil <sage at inktank.com>
-Date: Sat, 12 Apr 2014 22:23:26 -0700
-Subject: [PATCH] osd/ReplicatedPG: handle misdirected do_command
-
-We can get a query on a pg we still have but are no longer primary for. If
-that happens, do not reply. The client will resend to the correct OSD
-assuming it has the map. Send them the latest incremental so that we know
-they know there is something new. We don't know the exact epoch they have,
-unfortunately, because MCommand doesn't include it, but a newer inc is
-enough to make them request the right incrementals from a mon. Eventually
-they will figure it out and Objecter will resend the request to the
-correct target.
-
-It is possible we should include epoch in the MCommand message so that we
-can do this mapping "correctly" (as in, the same way MOSDOp does). That
-makes MCommand less general, though... a PG-specific command message might
-be the most precise thing. Another day...
-
-Fixes: #8085
-Signed-off-by: Sage Weil <sage at inktank.com>
----
- src/osd/OSD.cc | 21 +++++++++++++++++----
- 1 file changed, 17 insertions(+), 4 deletions(-)
-
---- a/src/osd/OSD.cc
-+++ b/src/osd/OSD.cc
-@@ -4275,12 +4275,25 @@
- if (osdmap->get_primary_shard(pgid, &pcand) &&
- _have_pg(pcand)) {
- PG *pg = _lookup_lock_pg(pcand);
- assert(pg);
-- // simulate pg <pgid> cmd= for pg->do-command
-- if (prefix != "pg")
-- cmd_putval(cct, cmdmap, "cmd", prefix);
-- r = pg->do_command(cmdmap, ss, data, odata);
-+ if (pg->is_primary()) {
-+ // simulate pg <pgid> cmd= for pg->do-command
-+ if (prefix != "pg")
-+ cmd_putval(cct, cmdmap, "cmd", prefix);
-+ r = pg->do_command(cmdmap, ss, data, odata);
-+ } else {
-+ ss << "not primary for pgid " << pgid;
-+
-+ // send them the latest diff to ensure they realize the mapping
-+ // has changed.
-+ send_incremental_map(osdmap->get_epoch() - 1, con);
-+
-+ // do not reply; they will get newer maps and realize they
-+ // need to resend.
-+ pg->unlock();
-+ return;
-+ }
- pg->unlock();
- } else {
- ss << "i don't have pgid " << pgid;
- r = -ENOENT;
diff --git a/debian/patches/8086.patch b/debian/patches/8086.patch
deleted file mode 100644
index 5f330f9..0000000
--- a/debian/patches/8086.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 502cc6140667ada0bae3886885c99e3aaca7f5ed Mon Sep 17 00:00:00 2001
-From: Samuel Just <sam.just at inktank.com>
-Date: Mon, 14 Apr 2014 11:07:58 -0700
-Subject: [PATCH] ReplicatedPG::agent_work: skip hitset objects before getting
- object context
-
-Otherwise, we might read the attr on a hitset object we are in the
-process of deleting.
-
-Fixes: #8086
-Signed-off-by: Samuel Just <sam.just at inktank.com>
----
- src/osd/ReplicatedPG.cc | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
---- a/src/osd/ReplicatedPG.cc
-+++ b/src/osd/ReplicatedPG.cc
-@@ -10670,8 +10670,13 @@
- int started = 0;
- for (vector<hobject_t>::iterator p = ls.begin();
- p != ls.end();
- ++p) {
-+ if (p->nspace == cct->_conf->osd_hit_set_namespace) {
-+ dout(20) << __func__ << " skip (hit set) " << *p << dendl;
-+ osd->logger->inc(l_osd_agent_skip);
-+ continue;
-+ }
- if (is_degraded_object(*p)) {
- dout(20) << __func__ << " skip (degraded) " << *p << dendl;
- osd->logger->inc(l_osd_agent_skip);
- continue;
-@@ -10692,13 +10697,8 @@
- dout(20) << __func__ << " skip (scrubbing) " << obc->obs.oi << dendl;
- osd->logger->inc(l_osd_agent_skip);
- continue;
- }
-- if (obc->obs.oi.soid.nspace == cct->_conf->osd_hit_set_namespace) {
-- dout(20) << __func__ << " skip (hit set) " << obc->obs.oi << dendl;
-- osd->logger->inc(l_osd_agent_skip);
-- continue;
-- }
- if (obc->is_blocked()) {
- dout(20) << __func__ << " skip (blocked) " << obc->obs.oi << dendl;
- osd->logger->inc(l_osd_agent_skip);
- continue;
diff --git a/debian/patches/8089.patch b/debian/patches/8089.patch
deleted file mode 100644
index 0af5529..0000000
--- a/debian/patches/8089.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 8905e3e2285c211e695d3d2747e6feda8ea5e55c Mon Sep 17 00:00:00 2001
-From: Sage Weil <sage at inktank.com>
-Date: Sun, 13 Apr 2014 21:31:35 -0700
-Subject: [PATCH] osd/ReplicatedPG: handle dup ops earlier in do_op
-
-Current the dup op checks happen in execute_ctx, long after we handle
-cache ops or get the obc and (potentially) return ENOENT. That means that
-object deletions and cache ops both aren't properly idempotent.
-
-This is easy to fix by moving the check earlier in do_op.
-
-Fixes: #8089
-Signed-off-by: Sage Weil <sage at inktank.com>
----
- src/osd/ReplicatedPG.cc | 57 +++++++++++++++++++++++++------------------------
- 1 file changed, 29 insertions(+), 28 deletions(-)
-
---- a/src/osd/ReplicatedPG.cc
-+++ b/src/osd/ReplicatedPG.cc
-@@ -1236,8 +1236,37 @@
- osd->reply_op_error(op, -EINVAL);
- return;
- }
-
-+ // dup/replay?
-+ if (op->may_write() || op->may_cache()) {
-+ const pg_log_entry_t *entry = pg_log.get_log().get_request(m->get_reqid());
-+ if (entry) {
-+ const eversion_t& oldv = entry->version;
-+ dout(3) << __func__ << " dup " << m->get_reqid()
-+ << " was " << oldv << dendl;
-+ if (already_complete(oldv)) {
-+ osd->reply_op_error(op, 0, oldv, entry->user_version);
-+ } else {
-+ if (m->wants_ack()) {
-+ if (already_ack(oldv)) {
-+ MOSDOpReply *reply = new MOSDOpReply(m, 0, get_osdmap()->get_epoch(), 0, false);
-+ reply->add_flags(CEPH_OSD_FLAG_ACK);
-+ reply->set_reply_versions(oldv, entry->user_version);
-+ osd->send_message_osd_client(reply, m->get_connection());
-+ } else {
-+ dout(10) << " waiting for " << oldv << " to ack" << dendl;
-+ waiting_for_ack[oldv].push_back(op);
-+ }
-+ }
-+ dout(10) << " waiting for " << oldv << " to commit" << dendl;
-+ waiting_for_ondisk[oldv].push_back(op); // always queue ondisk waiters, so that we can requeue if needed
-+ op->mark_delayed("waiting for ondisk");
-+ }
-+ return;
-+ }
-+ }
-+
- ObjectContextRef obc;
- bool can_create = op->may_write() || op->may_cache();
- hobject_t missing_oid;
- hobject_t oid(m->get_oid(),
-@@ -1648,36 +1677,8 @@
- delete ctx->op_t;
- ctx->op_t = pgbackend->get_transaction();
-
- if (op->may_write() || op->may_cache()) {
-- // dup/replay?
-- const pg_log_entry_t *entry = pg_log.get_log().get_request(ctx->reqid);
-- if (entry) {
-- const eversion_t& oldv = entry->version;
-- dout(3) << "do_op dup " << ctx->reqid << " was " << oldv << dendl;
-- if (already_complete(oldv)) {
-- reply_ctx(ctx, 0, oldv, entry->user_version);
-- } else {
-- close_op_ctx(ctx, -EBUSY);
--
-- if (m->wants_ack()) {
-- if (already_ack(oldv)) {
-- MOSDOpReply *reply = new MOSDOpReply(m, 0, get_osdmap()->get_epoch(), 0, false);
-- reply->add_flags(CEPH_OSD_FLAG_ACK);
-- reply->set_reply_versions(oldv, entry->user_version);
-- osd->send_message_osd_client(reply, m->get_connection());
-- } else {
-- dout(10) << " waiting for " << oldv << " to ack" << dendl;
-- waiting_for_ack[oldv].push_back(op);
-- }
-- }
-- dout(10) << " waiting for " << oldv << " to commit" << dendl;
-- waiting_for_ondisk[oldv].push_back(op); // always queue ondisk waiters, so that we can requeue if needed
-- op->mark_delayed("waiting for ondisk");
-- }
-- return;
-- }
--
- op->mark_started();
-
- // snap
- if (pool.info.is_pool_snaps_mode()) {
diff --git a/debian/patches/8091.patch b/debian/patches/8091.patch
deleted file mode 100644
index 941e7ac..0000000
--- a/debian/patches/8091.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 7e697b1bc2ffac086b6a24f97aba755401cd8c37 Mon Sep 17 00:00:00 2001
-From: Samuel Just <sam.just at inktank.com>
-Date: Tue, 15 Apr 2014 14:17:33 -0700
-Subject: [PATCH] ReplicatedPG::recover_replicas: do not recover clones while
- snap obj is missing
-
-Otherwise, we cannot safely read the snapset for the clone.
-
-Fixes: #8091
-Signed-off-by: Samuel Just <sam.just at inktank.com>
----
- src/osd/ReplicatedPG.cc | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
---- a/src/osd/ReplicatedPG.cc
-+++ b/src/osd/ReplicatedPG.cc
-@@ -9647,8 +9647,20 @@
- dout(10) << __func__ << ": " << soid << " still unfound" << dendl;
- continue;
- }
-
-+ if (soid.is_snap() && pg_log.get_missing().is_missing(soid.get_head())) {
-+ dout(10) << __func__ << ": " << soid.get_head()
-+ << " still missing on primary" << dendl;
-+ continue;
-+ }
-+
-+ if (soid.is_snap() && pg_log.get_missing().is_missing(soid.get_snapdir())) {
-+ dout(10) << __func__ << ": " << soid.get_snapdir()
-+ << " still missing on primary" << dendl;
-+ continue;
-+ }
-+
- if (pg_log.get_missing().is_missing(soid)) {
- dout(10) << __func__ << ": " << soid << " still missing on primary" << dendl;
- continue;
- }
diff --git a/debian/patches/_1606.patch b/debian/patches/_1606.patch
deleted file mode 100644
index 1f95a6c..0000000
--- a/debian/patches/_1606.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-Last-Update: 2014-04-18
-Forwarded: not-needed
-Origin: upstream, https://github.com/ceph/ceph/pull/1606
-From: "Yan, Zheng" <zheng.z.yan at intel.com>
-Description: client: try shrinking kernel inode cache when trimming session caps
-
- Notify kernel to invalidate top level directory entries. As a side
- effect, the kernel inode cache get shrinked.
-
---- a/src/client/Client.cc
-+++ b/src/client/Client.cc
-@@ -2202,10 +2202,14 @@
-
- if (in) { // link to inode
- dn->inode = in;
- in->get();
-- if (in->dir)
-- dn->get(); // dir -> dn pin
-+ if (in->is_dir()) {
-+ if (in->dir)
-+ dn->get(); // dir -> dn pin
-+ if (in->ll_ref)
-+ dn->get(); // ll_ref -> dn pin
-+ }
-
- assert(in->dn_set.count(dn) == 0);
-
- // only one parent for directories!
-@@ -2230,10 +2234,14 @@
- << " inode " << dn->inode << dendl;
-
- // unlink from inode
- if (in) {
-- if (in->dir)
-- dn->put(); // dir -> dn pin
-+ if (in->is_dir()) {
-+ if (in->dir)
-+ dn->put(); // dir -> dn pin
-+ if (in->ll_ref)
-+ dn->put(); // ll_ref -> dn pin
-+ }
- dn->inode = 0;
- assert(in->dn_set.count(dn));
- in->dn_set.erase(dn);
- ldout(cct, 20) << "unlink inode " << in << " parents now " << in->dn_set << dendl;
-@@ -3073,8 +3081,19 @@
- delete cap;
- }
- }
- s->s_cap_iterator = NULL;
-+
-+ // notify kernel to invalidate top level directory entries. As a side effect,
-+ // unused inodes underneath these entries get pruned.
-+ if (dentry_invalidate_cb && s->caps.size() > max) {
-+ for (ceph::unordered_map<string, Dentry*>::iterator p = root->dir->dentries.begin();
-+ p != root->dir->dentries.end();
-+ ++p) {
-+ if (p->second->inode)
-+ _schedule_invalidate_dentry_callback(p->second, false);
-+ }
-+ }
- }
-
- void Client::mark_caps_dirty(Inode *in, int caps)
- {
-@@ -3663,11 +3682,16 @@
- vinodeno_t dirino;
- vinodeno_t ino;
- string name;
- public:
-- C_Client_DentryInvalidate(Client *c, Dentry *dn) :
-- client(c), dirino(dn->dir->parent_inode->vino()),
-- ino(dn->inode->vino()), name(dn->name) { }
-+ C_Client_DentryInvalidate(Client *c, Dentry *dn, bool del) :
-+ client(c), name(dn->name) {
-+ dirino = dn->dir->parent_inode->vino();
-+ if (del)
-+ ino = dn->inode->vino();
-+ else
-+ ino.ino = inodeno_t();
-+ }
- void finish(int r) {
- client->_async_dentry_invalidate(dirino, ino, name);
- }
- };
-@@ -3678,12 +3702,12 @@
- << " in dir " << dirino << dendl;
- dentry_invalidate_cb(dentry_invalidate_cb_handle, dirino, ino, name);
- }
-
--void Client::_schedule_invalidate_dentry_callback(Dentry *dn)
-+void Client::_schedule_invalidate_dentry_callback(Dentry *dn, bool del)
- {
- if (dentry_invalidate_cb && dn->inode->ll_ref > 0)
-- async_dentry_invalidator.queue(new C_Client_DentryInvalidate(this, dn));
-+ async_dentry_invalidator.queue(new C_Client_DentryInvalidate(this, dn, del));
- }
-
- void Client::_invalidate_inode_parents(Inode *in)
- {
-@@ -3691,9 +3715,9 @@
- while (q != in->dn_set.end()) {
- Dentry *dn = *q++;
- // FIXME: we play lots of unlink/link tricks when handling MDS replies,
- // so in->dn_set doesn't always reflect the state of kernel's dcache.
-- _schedule_invalidate_dentry_callback(dn);
-+ _schedule_invalidate_dentry_callback(dn, true);
- unlink(dn, false);
- }
- }
-
-@@ -3723,9 +3747,9 @@
- in->uid = m->head.uid;
- in->gid = m->head.gid;
- }
- bool deleted_inode = false;
-- if ((issued & CEPH_CAP_LINK_EXCL) == 0) {
-+ if ((issued & CEPH_CAP_LINK_EXCL) == 0 && in->nlink != (int32_t)m->head.nlink) {
- in->nlink = m->head.nlink;
- if (in->nlink == 0 &&
- (new_caps & (CEPH_CAP_LINK_SHARED | CEPH_CAP_LINK_EXCL)))
- deleted_inode = true;
-@@ -7014,10 +7038,15 @@
-
-
- void Client::_ll_get(Inode *in)
- {
-- if (in->ll_ref == 0)
-+ if (in->ll_ref == 0) {
- in->get();
-+ if (in->is_dir() && !in->dn_set.empty()) {
-+ assert(in->dn_set.size() == 1); // dirs can't be hard-linked
-+ in->get_first_parent()->get(); // pin dentry
-+ }
-+ }
- in->ll_get();
- ldout(cct, 20) << "_ll_get " << in << " " << in->ino << " -> " << in->ll_ref << dendl;
- }
-
-@@ -7025,8 +7054,12 @@
- {
- in->ll_put(num);
- ldout(cct, 20) << "_ll_put " << in << " " << in->ino << " " << num << " -> " << in->ll_ref << dendl;
- if (in->ll_ref == 0) {
-+ if (in->is_dir() && !in->dn_set.empty()) {
-+ assert(in->dn_set.size() == 1); // dirs can't be hard-linked
-+ in->get_first_parent()->put(); // unpin dentry
-+ }
- put_inode(in);
- return 0;
- } else {
- return in->ll_ref;
-@@ -7064,10 +7097,10 @@
- if (in->ll_ref < count) {
- ldout(cct, 1) << "WARNING: ll_forget on " << ino << " " << count
- << ", which only has ll_ref=" << in->ll_ref << dendl;
- _ll_put(in, in->ll_ref);
-- last = true;
-- } else {
-+ last = true;
-+ } else {
- if (_ll_put(in, count) == 0)
- last = true;
- }
-
---- a/src/client/Client.h
-+++ b/src/client/Client.h
-@@ -478,9 +478,9 @@
- void queue_cap_snap(Inode *in, snapid_t seq=0);
- void finish_cap_snap(Inode *in, CapSnap *capsnap, int used);
- void _flushed_cap_snap(Inode *in, snapid_t seq);
-
-- void _schedule_invalidate_dentry_callback(Dentry *dn);
-+ void _schedule_invalidate_dentry_callback(Dentry *dn, bool del);
- void _async_dentry_invalidate(vinodeno_t dirino, vinodeno_t ino, string& name);
- void _invalidate_inode_parents(Inode *in);
-
- void _schedule_invalidate_callback(Inode *in, int64_t off, int64_t len, bool keep_caps);
---- a/src/client/fuse_ll.cc
-+++ b/src/client/fuse_ll.cc
-@@ -679,9 +679,11 @@
- {
- CephFuse::Handle *cfuse = (CephFuse::Handle *)handle;
- fuse_ino_t fdirino = cfuse->make_fake_ino(dirino.ino, dirino.snapid);
- #if FUSE_VERSION >= FUSE_MAKE_VERSION(2, 9)
-- fuse_ino_t fino = cfuse->make_fake_ino(ino.ino, ino.snapid);
-+ fuse_ino_t fino = 0;
-+ if (ino.ino != inodeno_t())
-+ fino = cfuse->make_fake_ino(ino.ino, ino.snapid);
- fuse_lowlevel_notify_delete(cfuse->ch, fdirino, fino, name.c_str(), name.length());
- #elif FUSE_VERSION >= FUSE_MAKE_VERSION(2, 8)
- fuse_lowlevel_notify_inval_entry(cfuse->ch, fdirino, name.c_str(), name.length());
- #endif
diff --git a/debian/patches/_mds-fixtypo.patch b/debian/patches/_mds-fixtypo.patch
deleted file mode 100644
index 84a4065..0000000
--- a/debian/patches/_mds-fixtypo.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 4ccc845c0a5593a1809e53c13fc9bb0c7cfc46ae Mon Sep 17 00:00:00 2001
-From: "Yan, Zheng" <zheng.z.yan at intel.com>
-Date: Sat, 12 Apr 2014 14:10:55 +0800
-Subject: [PATCH] mds: fix typo in Server::do_rename_rollback()
-
-Signed-off-by: Yan, Zheng <zheng.z.yan at intel.com>
----
- src/mds/Server.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/src/mds/Server.cc
-+++ b/src/mds/Server.cc
-@@ -7123,9 +7123,9 @@
- }
-
- if (target && target->is_dir()) {
- assert(destdn);
-- mdcache->project_subtree_rename(in, straydir, destdir);
-+ mdcache->project_subtree_rename(target, straydir, destdir);
- }
-
- if (in && in->is_dir()) {
- assert(srcdn);
diff --git a/debian/patches/series b/debian/patches/series
index 288ccb2..bd3a340 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,17 +1,4 @@
-5469.patch
-8008.patch
-8046.patch
-8048.patch
-8077.patch
-8081.patch
-8085.patch
-8086.patch
-8089.patch
-8091.patch
-_1606.patch
-_mds-fixtypo.patch
arch.patch
gcj.patch
modules.patch
-spelling.patch
virtualenv-never-download.patch
diff --git a/debian/patches/spelling.patch b/debian/patches/spelling.patch
deleted file mode 100644
index 799572d..0000000
--- a/debian/patches/spelling.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-Last-Update: 2014-04-18
-Forwarded: yes
-Author: Dmitry Smirnov <onlyjob at member.fsf.org>
-Description: spelling corrections
-
---- a/man/crushtool.8
-+++ b/man/crushtool.8
-@@ -124,9 +124,9 @@
- .sp
- The test mode will use the input crush map ( as specified with \fB\-i
- map\fP ) and perform a dry run of CRUSH mapping or random placement (
- if \fB\-\-simulate\fP is set ). On completion, two kinds of reports can be
--created. The \fB\-\-show\-...\fP options output human readable informations
-+created. The \fB\-\-show\-...\fP options output human readable information
- on stderr. The \fB\-\-output\-csv\fP option creates CSV files that are
- documented by the \fB\-\-help\-output\fP option.
- .INDENT 0.0
- .TP
---- a/src/crush/CrushCompiler.cc
-+++ b/src/crush/CrushCompiler.cc
-@@ -373,9 +373,9 @@
- }
-
- /*
-
-- current crop of tunables are all now "safe". reenable this when we
-+ current crop of tunables are all now "safe". re-enable this when we
- add new ones that are ... new.
-
- if (!unsafe_tunables) {
- err << "tunables are NOT FULLY IMPLEMENTED; enable with --enable-unsafe-tunables to enable this feature" << std::endl;
---- a/src/mon/Paxos.h
-+++ b/src/mon/Paxos.h
-@@ -657,9 +657,9 @@
- * This function starts the Recovery Phase, which can be directly mapped
- * onto the original Paxos' Prepare phase. Basically, we'll generate a
- * Proposal Number, taking @p oldpn into consideration, and we will send
- * it to a quorum, along with our first and last committed versions. By
-- * sending these informations in a message to the quorum, we expect to
-+ * sending these information in a message to the quorum, we expect to
- * obtain acceptances from a majority, allowing us to commit, or be
- * informed of a higher Proposal Number known by one or more of the Peons
- * in the quorum.
- *
-@@ -675,9 +675,9 @@
- * Handle the reception of a collect message from the Leader and reply
- * accordingly.
- *
- * Once a Peon receives a collect message from the Leader it will reply
-- * with its first and last committed versions, as well as informations so
-+ * with its first and last committed versions, as well as information so
- * the Leader may know if his Proposal Number was, or was not, accepted by
- * the Peon. The Peon will accept the Leader's Proposal Number iif it is
- * higher than the Peon's currently accepted Proposal Number. The Peon may
- * also inform the Leader of accepted but uncommitted values.
---- a/src/osd/OSD.cc
-+++ b/src/osd/OSD.cc
-@@ -6464,9 +6464,9 @@
- it->second);
- cluster_messenger->send_message(m, con.get());
- } else {
- dout(7) << "do_notify osd " << it->first
-- << " sending seperate messages" << dendl;
-+ << " sending separate messages" << dendl;
- for (vector<pair<pg_notify_t, pg_interval_map_t> >::iterator i =
- it->second.begin();
- i != it->second.end();
- ++i) {
-@@ -6503,9 +6503,9 @@
- MOSDPGQuery *m = new MOSDPGQuery(curmap->get_epoch(), pit->second);
- cluster_messenger->send_message(m, con.get());
- } else {
- dout(7) << "do_queries querying osd." << who
-- << " sending seperate messages "
-+ << " sending saperate messages "
- << " on " << pit->second.size() << " PGs" << dendl;
- for (map<spg_t, pg_query_t>::iterator i = pit->second.begin();
- i != pit->second.end();
- ++i) {
---- a/src/osd/PG.cc
-+++ b/src/osd/PG.cc
-@@ -6884,9 +6884,9 @@
- dout(10) << "GetLog: discarding log from "
- << "non-auth_log_shard osd." << logevt.from << dendl;
- return discard_event();
- }
-- dout(10) << "GetLog: recieved master log from osd"
-+ dout(10) << "GetLog: received master log from osd"
- << logevt.from << dendl;
- msg = logevt.msg;
- post_event(GotLog());
- return discard_event();
---- a/src/pybind/rados.py
-+++ b/src/pybind/rados.py
-@@ -382,9 +382,9 @@
- """
- Ping a monitor to assess liveness
-
- May be used as a simply way to assess liveness, or to obtain
-- informations about the monitor in a simple way even in the
-+ information about the monitor in a simple way even in the
- absence of quorum.
-
- :param mon_id: the ID portion of the monitor's name (i.e., mon.<ID>)
- :type mon_id: str
---- a/src/rgw/rgw_admin.cc
-+++ b/src/rgw/rgw_admin.cc
-@@ -44,9 +44,9 @@
- cerr << " user modify modify user\n";
- cerr << " user info get user info\n";
- cerr << " user rm remove user\n";
- cerr << " user suspend suspend a user\n";
-- cerr << " user enable reenable user after suspension\n";
-+ cerr << " user enable re-enable user after suspension\n";
- cerr << " user check check user info\n";
- cerr << " user stats show user stats as accounted by quota subsystem\n";
- cerr << " caps add add user capabilities\n";
- cerr << " caps rm remove user capabilities\n";
---- a/src/test/cli/radosgw-admin/help.t
-+++ b/src/test/cli/radosgw-admin/help.t
-@@ -5,9 +5,9 @@
- user modify modify user
- user info get user info
- user rm remove user
- user suspend suspend a user
-- user enable reenable user after suspension
-+ user enable re-enable user after suspension
- user check check user info
- user stats show user stats as accounted by quota subsystem
- caps add add user capabilities
- caps rm remove user capabilities
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ceph/ceph.git
More information about the Pkg-ceph-commits
mailing list