[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