[Pkg-ceph-commits] [ceph] 03/03: New upstream release [0.87] + changelog summary

Dmitry Smirnov onlyjob at moszumanska.debian.org
Sun Oct 19 00:23:39 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 b9994cb (experimental)
Author: Dmitry Smirnov <onlyjob at member.fsf.org>
Date:   Sat Oct 18 18:08:27 2014

    New upstream release [0.87] + changelog summary
---
 debian/ceph-mds.install               |   1 +
 debian/ceph-test.install              |   2 -
 debian/ceph.install                   |   4 +-
 debian/changelog                      |  14 ++
 debian/control                        |  40 ++++
 debian/copyright                      | 121 +++++++++-
 debian/libcephfs1.symbols             |   6 +-
 debian/librados2.symbols              |  13 +-
 debian/libradosstriper-dev.install    |   5 +
 debian/libradosstriper1.install       |   1 +
 debian/libradosstriper1.symbols       |  36 +++
 debian/librbd1.symbols                |   5 +-
 debian/patches/arch.patch             |  14 +-
 debian/patches/backfill-prio.patch    | 268 ----------------------
 debian/patches/bash-completion.patch  |  98 --------
 debian/patches/bug-8342.patch         |  38 ----
 debian/patches/bug-8624a.patch        |  60 -----
 debian/patches/bug-8624b.patch        |  37 ---
 debian/patches/bug-8821.patch         | 353 -----------------------------
 debian/patches/bug-9341.patch         | 106 ---------
 debian/patches/client-sleep1.patch    |  46 ----
 debian/patches/client-sleep2.patch    |  41 ----
 debian/patches/client-sleep3.patch    |  44 ----
 debian/patches/firefly-latest.patch   |  30 ---
 debian/patches/modules.patch          |  34 ++-
 debian/patches/p2139.patch            |  39 ----
 debian/patches/rbdmap1-mount.patch    | 147 ------------
 debian/patches/rbdmap2-hooks.patch    |  99 --------
 debian/patches/sample.ceph.conf.patch | 411 ++++++++++------------------------
 debian/patches/series                 |  14 --
 debian/patches/sleep-recover.patch    |   2 +-
 debian/rules                          |   4 +
 32 files changed, 392 insertions(+), 1741 deletions(-)

diff --git a/debian/ceph-mds.install b/debian/ceph-mds.install
index 8a5d74e..df3cbe4 100644
--- a/debian/ceph-mds.install
+++ b/debian/ceph-mds.install
@@ -1,2 +1,3 @@
 usr/bin/ceph-mds
+usr/bin/cephfs-journal-tool
 usr/share/man/man8/ceph-mds.8
diff --git a/debian/ceph-test.install b/debian/ceph-test.install
index 1d37f45..ee64098 100644
--- a/debian/ceph-test.install
+++ b/debian/ceph-test.install
@@ -6,8 +6,6 @@ usr/bin/ceph_bench_log /usr/lib/ceph/bin
 usr/bin/ceph_dupstore /usr/lib/ceph/bin
 usr/bin/ceph_erasure_code /usr/lib/ceph/bin
 usr/bin/ceph_erasure_code_benchmark /usr/lib/ceph/bin
-usr/bin/ceph_filestore_dump /usr/lib/ceph/bin
-usr/bin/ceph_filestore_tool /usr/lib/ceph/bin
 usr/bin/ceph_kvstorebench /usr/lib/ceph/bin
 usr/bin/ceph_multi_stress_watch /usr/lib/ceph/bin
 usr/bin/ceph_omapbench /usr/lib/ceph/bin
diff --git a/debian/ceph.install b/debian/ceph.install
index 87c5865..c4b2a31 100644
--- a/debian/ceph.install
+++ b/debian/ceph.install
@@ -1,6 +1,5 @@
 debian/etc/pm/sleep.d/*    /etc/pm/sleep.d/
 etc/bash_completion.d/ceph
-sbin/mkcephfs
 usr/bin/ceph-clsinfo
 usr/bin/ceph-debugpack
 usr/bin/ceph-mon
@@ -12,6 +11,8 @@ usr/bin/monmaptool
 usr/bin/osdmaptool
 usr/lib/*/ceph/ceph_common.sh
 usr/lib/*/ceph/erasure-code/libec_jerasure*.so
+usr/lib/*/ceph/erasure-code/libec_lrc.so*
+usr/lib/*/ceph/erasure-code/libec_isa.so*
 usr/lib/*/rados-classes/*.so
 usr/sbin/ceph-create-keys
 usr/sbin/ceph-disk
@@ -25,7 +26,6 @@ usr/share/man/man8/ceph-mon.8
 usr/share/man/man8/ceph-osd.8
 usr/share/man/man8/ceph-run.8
 usr/share/man/man8/crushtool.8
-usr/share/man/man8/mkcephfs.8
 usr/share/man/man8/monmaptool.8
 usr/share/man/man8/osdmaptool.8
 ## install from source tree
diff --git a/debian/changelog b/debian/changelog
index a0a4099..a812455 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,17 @@
+ceph (0.87-1) UNRELEASED; urgency=medium
+
+  * New major upstream release [October 2014].
+    + new "libradosstriper*" binary packages.
+  * Patchworks (removed old patches, refreshed remaining ones).
+  * Build-Depends:
+    + libbabeltrace-dev
+    + libbabeltrace-ctf-dev
+    + libbz2-dev
+    + libudev-dev
+  * Build with "--with-babeltrace".
+
+ -- Dmitry Smirnov <onlyjob at debian.org>  Sat, 18 Oct 2014 15:59:17 +1100
+
 ceph (0.80.7-1) unstable; urgency=medium
 
   * New upstream release [October 2014].
diff --git a/debian/control b/debian/control
index 4d6a1ab..73f7f25 100644
--- a/debian/control
+++ b/debian/control
@@ -21,6 +21,9 @@ Build-Depends: debhelper (>= 9~),
                libboost-program-options-dev,
                libboost-system-dev,
                libboost-thread-dev,
+               libbabeltrace-dev,
+               libbabeltrace-ctf-dev,
+               libbz2-dev,
                libcurl4-gnutls-dev,
                libedit-dev,
                libexpat1-dev,
@@ -33,6 +36,8 @@ Build-Depends: debhelper (>= 9~),
                libs3-dev,
                libsnappy-dev,
                libtool,
+#               liblttng-ust-dev (>= 2.5.0) [amd64 armel armhf i386 mips mipsel powerpc s390x],
+               libudev-dev,
                libxml2-dev,
                pkg-config,
                python-all (>= 2.6.6-3~),
@@ -236,6 +241,8 @@ Section: libs
 Conflicts: libcrush, libcrush1, librados, librados1
 Replaces: libcrush, libcrush1, librados, librados1
 Depends: ${misc:Depends}, ${shlibs:Depends}
+# undefined symbol: lttng_probe_register
+#        ,liblttng-ust0 (>= 2.5.0)
 Pre-Depends: ${misc:Pre-Depends}
 Description: RADOS distributed object store client library
  RADOS is a reliable, autonomic distributed object storage cluster
@@ -273,6 +280,39 @@ Description: RADOS distributed object store client library (development files)
  This package contains development files needed for building applications that
  link against librados2.
 
+Package: libradosstriper1
+Architecture: linux-any
+Section: libs
+Depends: librados2 (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
+Description: RADOS striping interface
+ Striping interface built on top of the rados library, allowing
+ to stripe bigger objects onto several standard rados objects using
+ an interface very similar to the rados one.
+
+Package: libradosstriper1-dbg
+Architecture: linux-any
+Section: debug
+Priority: extra
+Depends: libradosstriper1 (= ${binary:Version}), ${misc:Depends}
+Description: debugging symbols for libradosstriper
+ libradosstriper is a striping interface built on top of the rados
+ library, allowing to stripe bigger objects onto several standard
+ rados objects using an interface very similar to the rados one.
+ .
+ This package contains debugging symbols for libradosstriper.
+
+Package: libradosstriper-dev
+Architecture: linux-any
+Section: libdevel
+Depends: libradosstriper1 (= ${binary:Version}), ${misc:Depends}
+Description: RADOS striping interface (development files)
+ libradosstriper is a striping interface built on top of the rados
+ library, allowing to stripe bigger objects onto several standard
+ rados objects using an interface very similar to the rados one.
+ .
+ This package contains development files needed for building applications that
+ link against libradosstriper.
+
 Package: librbd1
 Architecture: linux-any
 Section: libs
diff --git a/debian/copyright b/debian/copyright
index da07f5f..9cba12f 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -4,18 +4,21 @@ Upstream-Contact: Sage Weil <sage at newdream.net>
 Source: http://ceph.com/
 
 Files: *
-Copyright: 2004-2013 Sage Weil <sage at newdream.net>
+Copyright: 2004-2014 Sage Weil <sage at newdream.net>
            2004-2014 Inktank <info at inktank.com>
                      Inktank, Inc
                      Inktank Storage, Inc.
            2012-2014 Red Hat <contact at redhat.com>
            2013-2014 Cloudwatt <libre.licensing at cloudwatt.com>
+           2013      CohortFS, LLC
            2004-2011 Dreamhost
            2013      eNovance SAS <licensing at enovance.com>
+           2014      Adam Crume <adamcrume at gmail.com>
            2012      Florian Haas, hastexo
            2010      Greg Farnum <gregf at hq.newdream.net>
            2014      John Spray <john.spray at inktank.com
            2004-2012 New Dream Network
+           2014      Sebastien Ponce <sebastien.ponce at cern.ch>
            2011      Stanislav Sedov <stas at FreeBSD.org>
            2013-2014 UnitedStack <haomai at unitedstack.com>
            2011      Wido den Hollander <wido at widodh.nl>
@@ -23,15 +26,125 @@ License: LGPL-2.1
 
 Files: src/erasure-code/jerasure/ErasureCode*
        src/erasure-code/ErasureCode*
+       src/erasure-code/isa/*
        src/include/str_map.h
        src/test/common/test_str_map.cc
        src/test/erasure-code/*
        src/test/rgw/test_rgw_manifest.cc
-Copyright: 2014 CERN/Switzerland
-           2013 Cloudwatt <libre.licensing at cloudwatt.com>
-           2013 eNovance SAS <licensing at enovance.com>
+Copyright: 2014      CERN/Switzerland
+           2013-2014 Cloudwatt <libre.licensing at cloudwatt.com>
+           2014      Red Hat <contact at redhat.com>
+           2013      eNovance SAS <licensing at enovance.com>
 License: LGPL-2.1+
 
+Files: src/erasure-code/isa/isa-l/erasure_code/*
+Copyright: 2011-2014 Intel Corporation
+License: BSD-3-clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+  * Neither the name of Intel Corporation nor the names of its
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Files: src/rocksdb/*
+Copyright: 2004-2013 Facebook, Inc.
+           2011      The LevelDB Authors
+           2009      Google Inc.
+License: BSD-3-clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+    * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+    * Neither the name of Google Inc. nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+Comment:
+ Additional Grant of Patent Rights
+ .
+ “Software” means the rocksdb software distributed by Facebook, Inc.
+ .
+ Facebook hereby grants you a perpetual, worldwide, royalty-free,
+ non-exclusive, irrevocable (subject to the termination provision below)
+ license under any rights in any patent claims owned by Facebook, to make,
+ have made, use, sell, offer to sell, import, and otherwise transfer the
+ Software. For avoidance of doubt, no license is granted under Facebook’s
+ rights in any patent claims that are infringed by (i) modifications to the
+ Software made by you or a third party, or (ii) the Software in combination
+ with any software or other technology provided by you or a third party.
+ .
+ The license granted hereunder will terminate, automatically and without
+ notice, for anyone that makes any claim (including by filing any lawsuit,
+ assertion or other action) alleging (a) direct, indirect, or contributory
+ infringement or inducement to infringe any patent: (i) by Facebook or any
+ of its subsidiaries or affiliates, whether or not such claim is related
+ to the Software, (ii) by any party if such claim arises in whole or in
+ part from any software, product or service of Facebook or any of its
+ subsidiaries or affiliates, whether or not such claim is related to the
+ Software, or (iii) by any party relating to the Software; or (b) that
+ any right in any patent claim of Facebook is invalid or unenforceable.
+
+Files: src/rocksdb/util/xxhash.*
+Copyright: 2012-2014, Yann Collet.
+License: BSD-2-clause
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are
+ met:
+ .
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+ copyright notice, this list of conditions and the following disclaimer
+ in the documentation and/or other materials provided with the
+ distribution.
+ .
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
 Files: src/mount/canonicalize.c
        src/test/common/test_config.cc
        src/test/crush/TestCrushWrapper.cc
diff --git a/debian/libcephfs1.symbols b/debian/libcephfs1.symbols
index 955b701..faed00b 100644
--- a/debian/libcephfs1.symbols
+++ b/debian/libcephfs1.symbols
@@ -1,6 +1,6 @@
 libcephfs.so.1 libcephfs1 #MINVER#
- (regex)"^ceph_ver__[0-9a-f]{40}@Base$" 0.80
- (regex|c++)"^_.*" 0.80
+ (regex)"^ceph_ver__[0-9a-f]{40}@Base$" 0.87
+ (regex|c++)"^_.*" 0.87
  CEPH_CONF_FILE_DEFAULT at Base 0.72.2
  ceph_arch_intel_pclmul at Base 0.79
  ceph_arch_intel_probe at Base 0.72.2
@@ -246,6 +246,8 @@ libcephfs.so.1 libcephfs1 #MINVER#
 #MISSING: 0.79# is_kernel_secret at Base 0.72.2
  mime_decode_from_qp at Base 0.72.2
  mime_encode_as_qp at Base 0.72.2
+ module_has_param at Base 0.87
+ module_load at Base 0.87
  pem_key at Base 0.72.2
  pipe_cloexec at Base 0.72.2
 #MISSING: 0.79# read_secret_from_file at Base 0.72.2
diff --git a/debian/librados2.symbols b/debian/librados2.symbols
index 4e78c39..77e8333 100644
--- a/debian/librados2.symbols
+++ b/debian/librados2.symbols
@@ -1,6 +1,9 @@
 librados.so.2 librados2 #MINVER#
- (regex)"^ceph_ver__[0-9a-f]{40}@Base$" 0.80
- (regex|c++)"^_.*" 0.80
+ (regex)"^ceph_ver__[0-9a-f]{40}@Base$" 0.87
+ (regex|c++)"^_.*" 0.87
+# (regex)"^__event_desc___.*" 0.87
+# (regex)"^__tp_event_signature___.*" 0.87
+# (regex)"^__tracepoint_.*" 0.87
  CEPH_CONF_FILE_DEFAULT at Base 0.72.2
  ceph_arch_intel_pclmul at Base 0.79
  ceph_arch_intel_probe at Base 0.72.2
@@ -107,9 +110,12 @@ librados.so.2 librados2 #MINVER#
 #MISSING: 0.79# is_kernel_secret at Base 0.72.2
  mime_decode_from_qp at Base 0.72.2
  mime_encode_as_qp at Base 0.72.2
+ module_has_param at Base 0.87
+ module_load at Base 0.87
  pem_key at Base 0.72.2
  pipe_cloexec at Base 0.72.2
  rados_aio_append at Base 0.72.2
+ rados_aio_cancel at Base 0.87
  rados_aio_create_completion at Base 0.72.2
  rados_aio_flush at Base 0.72.2
  rados_aio_flush_async at Base 0.72.2
@@ -171,7 +177,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
+#MISSING: 0.87# 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
@@ -181,6 +187,7 @@ librados.so.2 librados2 #MINVER#
  rados_ioctx_snap_list at Base 0.72.2
  rados_ioctx_snap_lookup at Base 0.72.2
  rados_ioctx_snap_remove at Base 0.72.2
+ rados_ioctx_snap_rollback at Base 0.80~rc1
  rados_ioctx_snap_set_read at Base 0.72.2
  rados_list_lockers at Base 0.72.2
  rados_lock_exclusive at Base 0.72.2
diff --git a/debian/libradosstriper-dev.install b/debian/libradosstriper-dev.install
new file mode 100644
index 0000000..7cf0559
--- /dev/null
+++ b/debian/libradosstriper-dev.install
@@ -0,0 +1,5 @@
+usr/include/radosstriper/libradosstriper.h
+usr/include/radosstriper/libradosstriper.hpp
+usr/lib/*/libradosstriper.a
+#usr/lib/*/libradosstriper.la
+usr/lib/*/libradosstriper.so
diff --git a/debian/libradosstriper1.install b/debian/libradosstriper1.install
new file mode 100644
index 0000000..742549b
--- /dev/null
+++ b/debian/libradosstriper1.install
@@ -0,0 +1 @@
+usr/lib/*/libradosstriper.so.*
diff --git a/debian/libradosstriper1.symbols b/debian/libradosstriper1.symbols
new file mode 100644
index 0000000..09b0e38
--- /dev/null
+++ b/debian/libradosstriper1.symbols
@@ -0,0 +1,36 @@
+libradosstriper.so.1 libradosstriper1 #MINVER#
+ (regex|c++)"^_.*" 0.87
+ rados_striper_aio_append at Base 0.87
+ rados_striper_aio_flush at Base 0.87
+ rados_striper_aio_read at Base 0.87
+ rados_striper_aio_write at Base 0.87
+ rados_striper_aio_write_full at Base 0.87
+ rados_striper_append at Base 0.87
+ rados_striper_create at Base 0.87
+ rados_striper_destroy at Base 0.87
+ rados_striper_getxattr at Base 0.87
+ rados_striper_getxattrs at Base 0.87
+ rados_striper_getxattrs_end at Base 0.87
+ rados_striper_getxattrs_next at Base 0.87
+ rados_striper_multi_aio_create_completion at Base 0.87
+ rados_striper_multi_aio_get_return_value at Base 0.87
+ rados_striper_multi_aio_is_complete at Base 0.87
+ rados_striper_multi_aio_is_complete_and_cb at Base 0.87
+ rados_striper_multi_aio_is_safe at Base 0.87
+ rados_striper_multi_aio_is_safe_and_cb at Base 0.87
+ rados_striper_multi_aio_release at Base 0.87
+ rados_striper_multi_aio_wait_for_complete at Base 0.87
+ rados_striper_multi_aio_wait_for_complete_and_cb at Base 0.87
+ rados_striper_multi_aio_wait_for_safe at Base 0.87
+ rados_striper_multi_aio_wait_for_safe_and_cb at Base 0.87
+ rados_striper_read at Base 0.87
+ rados_striper_remove at Base 0.87
+ rados_striper_rmxattr at Base 0.87
+ rados_striper_set_object_layout_object_size at Base 0.87
+ rados_striper_set_object_layout_stripe_count at Base 0.87
+ rados_striper_set_object_layout_stripe_unit at Base 0.87
+ rados_striper_setxattr at Base 0.87
+ rados_striper_stat at Base 0.87
+ rados_striper_trunc at Base 0.87
+ rados_striper_write at Base 0.87
+ rados_striper_write_full at Base 0.87
diff --git a/debian/librbd1.symbols b/debian/librbd1.symbols
index 6635713..e15c92c 100644
--- a/debian/librbd1.symbols
+++ b/debian/librbd1.symbols
@@ -1,5 +1,8 @@
 librbd.so.1 librbd1 #MINVER#
- (regex|c++)"^_.*" 0.80
+ (regex|c++)"^_.*" 0.87
+# (regex)"^__event_desc___.*" 0.87
+# (regex)"^__tp_event_signature___.*" 0.87
+# (regex)"^__tracepoint_.*" 0.87
  rbd_aio_create_completion at Base 0.72.2
  rbd_aio_discard at Base 0.72.2
  rbd_aio_flush at Base 0.72.2
diff --git a/debian/patches/arch.patch b/debian/patches/arch.patch
index f3d2e73..d50744d 100644
--- a/debian/patches/arch.patch
+++ b/debian/patches/arch.patch
@@ -1,4 +1,4 @@
-Last-Update: 2014-04-19
+Last-Update: 2014-10-19
 Forwarded: not-needed
 Author: Dmitry Smirnov <onlyjob at member.fsf.org>
 Description: use `dpkg-architecture` instead of `arch` to get build architecture
@@ -6,12 +6,14 @@ Description: use `dpkg-architecture` instead of `arch` to get build architecture
 
 --- a/configure.ac
 +++ b/configure.ac
-@@ -87,7 +87,7 @@ AM_CXXFLAGS="${AM_CXXFLAGS}"
+@@ -86,9 +86,9 @@
+ 
  # Check for yasm
  if yasm -f elf64 src/common/crc32c_intel_fast_asm.S -o /dev/null; then
     echo 'we have a modern and working yasm'
--   if test `arch` = "x86_64"; then
-+   if test `dpkg-architecture -qDEB_BUILD_GNU_CPU` = "x86_64"; then
+-   if test `arch` = "x86_64" ; then
++   if test `dpkg-architecture -qDEB_BUILD_GNU_CPU` = "x86_64" ; then
        echo 'we are x86_64'
-       AC_DEFINE([HAVE_GOOD_YASM_ELF64], [1], [we have a recent yasm and are x86_64])
-       with_good_yasm=yes
+       arch_x32=0
+       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[
+         #if defined(__x86_64__) && defined(__ILP32__)
diff --git a/debian/patches/backfill-prio.patch b/debian/patches/backfill-prio.patch
deleted file mode 100644
index c163aeb..0000000
--- a/debian/patches/backfill-prio.patch
+++ /dev/null
@@ -1,268 +0,0 @@
-commit f317684
-Merge: c339343 0985ae7
-Author: Sage Weil <sage at inktank.com>
-Date:   Tue Jun 24 02:09:49 2014
-
-    Merge pull request #1979 from ceph/wip-backfill-priority
-    
-    osd: improve backfill prioritization
-    
-    Reviewed-by: Samuel Just <sam.just at inktank.com>
-
---- a/src/common/AsyncReserver.h
-+++ b/src/common/AsyncReserver.h
-@@ -32,8 +32,9 @@
- template <typename T>
- class AsyncReserver {
-   Finisher *f;
-   unsigned max_allowed;
-+  unsigned min_priority;
-   Mutex lock;
- 
-   map<unsigned, list<pair<T, Context*> > > queues;
-   map<T, pair<unsigned, typename list<pair<T, Context*> >::iterator > > queue_pointers;
-@@ -41,9 +42,11 @@
- 
-   void do_queues() {
-     typename map<unsigned, list<pair<T, Context*> > >::reverse_iterator it;
-     for (it = queues.rbegin();
--         it != queues.rend() && in_progress.size() < max_allowed;
-+         it != queues.rend() &&
-+	   in_progress.size() < max_allowed &&
-+	   it->first >= min_priority;
-          ++it) {
-       while (in_progress.size() < max_allowed &&
-              !it->second.empty()) {
-         pair<T, Context*> p = it->second.front();
-@@ -56,17 +59,27 @@
-   }
- public:
-   AsyncReserver(
-     Finisher *f,
--    unsigned max_allowed)
--    : f(f), max_allowed(max_allowed), lock("AsyncReserver::lock") {}
-+    unsigned max_allowed,
-+    unsigned min_priority = 0)
-+    : f(f),
-+      max_allowed(max_allowed),
-+      min_priority(min_priority),
-+      lock("AsyncReserver::lock") {}
- 
-   void set_max(unsigned max) {
-     Mutex::Locker l(lock);
-     max_allowed = max;
-     do_queues();
-   }
- 
-+  void set_min_priority(unsigned min) {
-+    Mutex::Locker l(lock);
-+    min_priority = min;
-+    do_queues();
-+  }
-+
-   /**
-    * Requests a reservation
-    *
-    * Note, on_reserved may be called following cancel_reservation.  Thus,
---- a/src/common/config_opts.h
-+++ b/src/common/config_opts.h
-@@ -389,8 +389,11 @@
- 
- // Maximum number of backfills to or from a single osd
- OPTION(osd_max_backfills, OPT_U64, 10)
- 
-+// Minimum recovery priority (255 = max, smaller = lower)
-+OPTION(osd_min_recovery_priority, OPT_INT, 0)
-+
- // Refuse backfills when OSD full ratio is above this value
- OPTION(osd_backfill_full_ratio, OPT_FLOAT, 0.85)
- 
- // Seconds to wait before retrying refused backfills
---- a/src/messages/MBackfillReserve.h
-+++ b/src/messages/MBackfillReserve.h
-@@ -27,10 +27,10 @@
-     REQUEST = 0,
-     GRANT = 1,
-     REJECT = 2,
-   };
--  int type;
--  unsigned priority;
-+  uint32_t type;
-+  uint32_t priority;
- 
-   MBackfillReserve()
-     : Message(MSG_OSD_BACKFILL_RESERVE, HEAD_VERSION, COMPAT_VERSION),
-       query_epoch(0), type(-1), priority(-1) {}
---- a/src/osd/OSD.cc
-+++ b/src/osd/OSD.cc
-@@ -218,10 +218,12 @@
-   backfill_request_timer(cct, backfill_request_lock, false),
-   last_tid(0),
-   tid_lock("OSDService::tid_lock"),
-   reserver_finisher(cct),
--  local_reserver(&reserver_finisher, cct->_conf->osd_max_backfills),
--  remote_reserver(&reserver_finisher, cct->_conf->osd_max_backfills),
-+  local_reserver(&reserver_finisher, cct->_conf->osd_max_backfills,
-+		 cct->_conf->osd_min_recovery_priority),
-+  remote_reserver(&reserver_finisher, cct->_conf->osd_max_backfills,
-+		  cct->_conf->osd_min_recovery_priority),
-   pg_temp_lock("OSDService::pg_temp_lock"),
-   map_cache_lock("OSDService::map_lock"),
-   map_cache(cct->_conf->osd_map_cache_size),
-   map_bl_cache(cct->_conf->osd_map_cache_size),
-@@ -7870,8 +7872,9 @@
- const char** OSD::get_tracked_conf_keys() const
- {
-   static const char* KEYS[] = {
-     "osd_max_backfills",
-+    "osd_min_recovery_priority",
-     "osd_op_complaint_time", "osd_op_log_threshold",
-     "osd_op_history_size", "osd_op_history_duration",
-     "osd_map_cache_size",
-     "osd_map_max_advance",
-@@ -7889,8 +7892,12 @@
-   if (changed.count("osd_max_backfills")) {
-     service.local_reserver.set_max(cct->_conf->osd_max_backfills);
-     service.remote_reserver.set_max(cct->_conf->osd_max_backfills);
-   }
-+  if (changed.count("osd_min_recovery_priority")) {
-+    service.local_reserver.set_min_priority(cct->_conf->osd_min_recovery_priority);
-+    service.remote_reserver.set_min_priority(cct->_conf->osd_min_recovery_priority);
-+  }
-   if (changed.count("osd_op_complaint_time") ||
-       changed.count("osd_op_log_threshold")) {
-     op_tracker.set_complaint_and_threshold(cct->_conf->osd_op_complaint_time,
-                                            cct->_conf->osd_op_log_threshold);
---- a/src/osd/OSD.h
-+++ b/src/osd/OSD.h
-@@ -629,13 +629,8 @@
-     return t;
-   }
- 
-   // -- backfill_reservation --
--  enum {
--    BACKFILL_LOW = 0,   // backfill non-degraded PGs
--    BACKFILL_HIGH = 1,	// backfill degraded PGs
--    RECOVERY = AsyncReserver<spg_t>::MAX_PRIORITY  // log based recovery
--  };
-   Finisher reserver_finisher;
-   AsyncReserver<spg_t> local_reserver;
-   AsyncReserver<spg_t> remote_reserver;
- 
---- a/src/osd/PG.cc
-+++ b/src/osd/PG.cc
-@@ -1885,8 +1885,28 @@
- 
-   dirty_info = true;
- }
- 
-+unsigned PG::get_recovery_priority()
-+{
-+  // a higher value -> a higher priority
-+  return OSD_RECOVERY_PRIORITY_MAX;
-+}
-+
-+unsigned PG::get_backfill_priority()
-+{
-+  // a higher value -> a higher priority
-+
-+  // degraded: 200 + num missing replicas
-+  if (is_degraded()) {
-+    assert(pool.info.size > acting.size());
-+    return 200 + (pool.info.size - acting.size());
-+  }
-+
-+  // baseline
-+  return 1;
-+}
-+
- void PG::finish_recovery(list<Context*>& tfin)
- {
-   dout(10) << "finish_recovery" << dendl;
-   assert(info.last_complete == info.last_update);
-@@ -5852,15 +5872,14 @@
-     ConnectionRef con = pg->osd->get_con_osd_cluster(
-       backfill_osd_it->osd, pg->get_osdmap()->get_epoch());
-     if (con) {
-       if (con->has_feature(CEPH_FEATURE_BACKFILL_RESERVATION)) {
--        unsigned priority = pg->is_degraded() ? OSDService::BACKFILL_HIGH
--	  : OSDService::BACKFILL_LOW;
-         pg->osd->send_message_osd_cluster(
-           new MBackfillReserve(
- 	  MBackfillReserve::REQUEST,
- 	  spg_t(pg->info.pgid.pgid, backfill_osd_it->shard),
--	  pg->get_osdmap()->get_epoch(), priority),
-+	  pg->get_osdmap()->get_epoch(),
-+	  pg->get_backfill_priority()),
- 	con.get());
-       } else {
-         post_event(RemoteBackfillReserved());
-       }
-@@ -5927,10 +5946,10 @@
-   pg->osd->local_reserver.request_reservation(
-     pg->info.pgid,
-     new QueuePeeringEvt<LocalBackfillReserved>(
-       pg, pg->get_osdmap()->get_epoch(),
--      LocalBackfillReserved()), pg->is_degraded() ? OSDService::BACKFILL_HIGH
--	 : OSDService::BACKFILL_LOW);
-+      LocalBackfillReserved()),
-+    pg->get_backfill_priority());
- }
- 
- void PG::RecoveryState::WaitLocalBackfillReserved::exit()
- {
-@@ -5995,9 +6014,10 @@
-   pg->osd->remote_reserver.request_reservation(
-     pg->info.pgid,
-     new QueuePeeringEvt<RemoteRecoveryReserved>(
-       pg, pg->get_osdmap()->get_epoch(),
--      RemoteRecoveryReserved()), OSDService::RECOVERY);
-+      RemoteRecoveryReserved()),
-+    pg->get_recovery_priority());
- }
- 
- boost::statechart::result
- PG::RecoveryState::RepWaitRecoveryReserved::react(const RemoteRecoveryReserved &evt)
-@@ -6136,9 +6156,10 @@
-   pg->osd->local_reserver.request_reservation(
-     pg->info.pgid,
-     new QueuePeeringEvt<LocalRecoveryReserved>(
-       pg, pg->get_osdmap()->get_epoch(),
--      LocalRecoveryReserved()), OSDService::RECOVERY);
-+      LocalRecoveryReserved()),
-+    pg->get_recovery_priority());
- }
- 
- void PG::RecoveryState::WaitLocalRecoveryReserved::exit()
- {
---- a/src/osd/PG.h
-+++ b/src/osd/PG.h
-@@ -776,8 +776,13 @@
-   
-   bool needs_recovery() const;
-   bool needs_backfill() const;
- 
-+  /// get log recovery reservation priority
-+  unsigned get_recovery_priority();
-+  /// get backfill reservation priority
-+  unsigned get_backfill_priority();
-+
-   void mark_clean();  ///< mark an active pg clean
- 
-   bool _calc_past_interval_range(epoch_t *start, epoch_t *end);
-   void generate_past_intervals();
---- a/src/osd/osd_types.h
-+++ b/src/osd/osd_types.h
-@@ -55,8 +55,12 @@
- #define CEPH_OSD_FEATURE_INCOMPAT_SNAPMAPPER CompatSet::Feature(10, "snapmapper")
- #define CEPH_OSD_FEATURE_INCOMPAT_SHARDS CompatSet::Feature(11, "sharded objects")
- 
- 
-+/// max recovery priority for MBackfillReserve
-+#define OSD_RECOVERY_PRIORITY_MAX 255u
-+
-+
- typedef hobject_t collection_list_handle_t;
- 
- typedef uint8_t shard_id_t;
- 
diff --git a/debian/patches/bash-completion.patch b/debian/patches/bash-completion.patch
deleted file mode 100644
index 48e7585..0000000
--- a/debian/patches/bash-completion.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-Last-Update: 2014-05-13
-Forwarded: not-needed
-Origin: upstream, 8dd1190dd544cd87f565384f060ff9efcb37516f
-Author: Wido den Hollander <wido at 42on.com>
-Description: Improve Bash completion for various tools
-
---- a/src/bash_completion/ceph
-+++ b/src/bash_completion/ceph
-@@ -16,6 +16,7 @@ _ceph()
-         COMPREPLY=()
-         cur="${COMP_WORDS[COMP_CWORD]}"
-         prev="${COMP_WORDS[COMP_CWORD-1]}"
-+        prevprev="${COMP_WORDS[COMP_CWORD-2]}"
- 
-         if [[ ${cur} == -* ]] ; then
-             COMPREPLY=( $(compgen -W "--conf -c --name --id -m --version -s --status -w --watch -o --out-file -i --in-file" -- ${cur}) )
-@@ -32,29 +33,41 @@ _ceph()
-                 return 0
-                 ;;
-             auth)
--                COMPREPLY=( $(compgen -W "list add del" -- ${cur}) )
-+                COMPREPLY=( $(compgen -W "list add del print_key print-key export get get-key import get-or-create get-or-create-key" -- ${cur}) )
-                 return 0
-                 ;;
-             pg)
--                COMPREPLY=( $(compgen -W "stat dump getmap map send_pg_creates scrub deep-scrub repair" -- ${cur}) )
-+                COMPREPLY=( $(compgen -W "stat dump dump_json dump_stuck force_create_pg getmap map send_pg_creates scrub deep-scrub repair" -- ${cur}) )
-                 return 0
-                 ;;
-             osd)
--                COMPREPLY=( $(compgen -W "tell stat pool dump getmaxosd tree getmap getcrushmap lspools" -- ${cur}) )
-+                COMPREPLY=( $(compgen -W "stat pool dump getmaxosd tree getmap getcrushmap lspools reweight-by-utilization trash tier" -- ${cur}) )
-                 return 0
-                 ;;
-             mon)
--                COMPREPLY=( $(compgen -W "tell stat getmap" -- ${cur}) )
-+                COMPREPLY=( $(compgen -W "stat getmap add remove dump" -- ${cur}) )
-                 return 0
-                 ;;
-             mds)
--                COMPREPLY=( $(compgen -W "tell stat stat getmap dump compat" -- ${cur}) )
-+                COMPREPLY=( $(compgen -W "stat stat getmap dump compat" -- ${cur}) )
-                 return 0
-                 ;;
--            *)
--                COMPREPLY=( $(compgen -W "osd mon mds pg auth" -- ${cur}) )
-+            pool)
-+                COMPREPLY=( $(compgen -W "create delete rename stats set set-quota get rmsnap mksnap" -- ${cur}) )
-                 return 0
--            ;;
-+                ;;
-+            health)
-+                COMPREPLY=( $(compgen -W "detail" -- ${cur}) )
-+                return 0
-+                ;;
-+            tier)
-+                COMPREPLY=( $(compgen -W "remove cache-mode" -- ${cur}) )
-+                return 0
-+                ;;
-+            ceph)
-+                COMPREPLY=( $(compgen -W "osd mon mds pg auth health df" -- ${cur}) )
-+                return 0
-+                ;;
-         esac
- }
- complete -F _ceph ceph
---- a/src/bash_completion/rados
-+++ b/src/bash_completion/rados
-@@ -31,7 +31,7 @@ _rados()
-                 COMPREPLY=( $(compgen -A hostname ${cur}) )
-                 return 0
-                 ;;
--            *)
-+            rados)
-                 COMPREPLY=( $(compgen -W "lspools mkpool rmpool df ls chown get put create rm listxattr getxattr setxattr rmxattr stat mapext lssnap mksnap rmsnap rollback bench" -- ${cur}) )
-                 return 0
-             ;;
---- a/src/bash_completion/rbd
-+++ b/src/bash_completion/rbd
-@@ -32,11 +32,15 @@ _rbd()
-                 return 0
-                 ;;
-             snap)
--                COMPREPLY=( $(compgen -W "ls create rollback rm" -- ${cur}) )
-+                COMPREPLY=( $(compgen -W "ls create rollback rm purge protect unprotect" -- ${cur}) )
-                 return 0
-                 ;;
--            *)
--                COMPREPLY=( $(compgen -W "ls list info create resize rm export import cp copy mv rename snap watch map unmap showmapped" -- ${cur}) )
-+            lock)
-+                COMPREPLY=( $(compgen -W "list add remove" -- ${cur}) )
-+                return 0
-+                ;;
-+            rbd)
-+                COMPREPLY=( $(compgen -W "ls list info create clone flatten resize rm export import diff export-diff import-diff cp copy mv rename snap watch lock bench-write map unmap showmapped" -- ${cur}) )
-                 return 0
-             ;;
-         esac
diff --git a/debian/patches/bug-8342.patch b/debian/patches/bug-8342.patch
deleted file mode 100644
index 0de003b..0000000
--- a/debian/patches/bug-8342.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Last-update: 2014-05-20
-Origin: upstream, https://github.com/ceph/ceph/pull/1846/
-Bug-Ceph: http://tracker.ceph.com/issues/8342
-Author: Sage Weil <sage at inktank.com>
-Description:  [Fixes:#8342]
- * init-ceph: continue loop immediately on daemon start failure
-   If we fail to start the daemon, skip the post_start and other steps.
- * if we fail to set an OSD's crush position, continue
-   If we fail to set the CRUSH position for one OSD, continue on to try
-   starting others, just as we do when we fail to start the daemon.
-
---- a/src/init-ceph.in
-+++ b/src/init-ceph.in
-@@ -361,9 +361,13 @@
- 		    osd_location=`$osd_location_hook --cluster $cluster --id $id --type osd`
- 		    get_conf osd_weight "" "osd crush initial weight"
- 		    defaultweight="$(df -P -k $osd_data/. | tail -1 | awk '{ print sprintf("%.2f",$2/1073741824) }')"
- 		    get_conf osd_keyring "$osd_data/keyring" "keyring"
--		    do_cmd "timeout 30 $BINDIR/ceph -c $conf --name=osd.$id --keyring=$osd_keyring osd crush create-or-move -- $id ${osd_weight:-${defaultweight:-1}} $osd_location"
-+		    do_cmd_okfail "timeout 30 $BINDIR/ceph -c $conf --name=osd.$id --keyring=$osd_keyring osd crush create-or-move -- $id ${osd_weight:-${defaultweight:-1}} $osd_location"
-+		    if [ "$ERR" != "0" ]; then
-+			EXIT_STATUS=$ERR
-+			continue
-+		    fi
- 		fi
- 	    fi
- 
- 	    echo Starting Ceph $name on $host...
-@@ -375,8 +379,9 @@
- 	    [ -n "$pre_start" ] && do_cmd "$pre_start"
- 	    do_cmd_okfail "$cmd" $runarg
- 	    if [ "$ERR" != "0" ]; then
- 		EXIT_STATUS=$ERR
-+		continue
- 	    fi
- 
- 	    if [ "$type" = "mon" ]; then
- 		# this will only work if we are using default paths
diff --git a/debian/patches/bug-8624a.patch b/debian/patches/bug-8624a.patch
deleted file mode 100644
index 1295cf4..0000000
--- a/debian/patches/bug-8624a.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From d6f68132cead3b03027827c621864d5fc322daca Mon Sep 17 00:00:00 2001
-From: Joao Eduardo Luis <joao.luis at inktank.com>
-Date: Fri, 20 Jun 2014 16:13:28 +0100
-Subject: [PATCH] mon: MDSMonitor: do not allow ec pools to be used for data or
- metadata
-
-Fixes: #8624
-
-Signed-off-by: Joao Eduardo Luis <joao.luis at inktank.com>
----
- src/mon/MDSMonitor.cc | 31 +++++++++++++++++++++++++++++++
- 1 file changed, 31 insertions(+)
-
---- a/src/mon/MDSMonitor.cc
-+++ b/src/mon/MDSMonitor.cc
-@@ -1068,6 +1068,14 @@ bool MDSMonitor::prepare_command(MMonCom
- 	ss << "pool '" << poolname << "' does not exist";
-       }
-     }
-+    const pg_pool_t *p = mon->osdmon()->osdmap.get_pg_pool(poolid);
-+    assert(p != NULL);
-+    if (p->is_erasure()) {
-+      // I'm sorry Dave, I'm afraid I can't do that
-+      r = -EINVAL;
-+      poolid = -1;
-+      ss << "can't use pool '" << poolname << "' as it's an erasure-code pool";
-+    }
-     if (poolid >= 0) {
-       pending_mdsmap.add_data_pool(poolid);
-       ss << "added data pool " << poolid << " to mdsmap";
-@@ -1116,6 +1124,29 @@ bool MDSMonitor::prepare_command(MMonCom
-       r = -EINVAL;
-       goto out;
-     }
-+
-+    const pg_pool_t *p = mon->osdmon()->osdmap.get_pg_pool(data);
-+    if (!p) {
-+      ss << "pool id '" << data << "' does not exist";
-+      r = -ENOENT;
-+      goto out;
-+    } else if (p->is_erasure()) {
-+      ss << "pool id '" << data << "' is an erasure-code pool";
-+      r = -EINVAL;
-+      goto out;
-+    }
-+
-+    p = mon->osdmon()->osdmap.get_pg_pool(metadata);
-+    if (!p) {
-+      ss << "pool id '" << metadata << "' does not exist";
-+      r = -ENOENT;
-+      goto out;
-+    } else if (p->is_erasure()) {
-+      ss << "pool id '" << metadata << "' is an erasure-code pool";
-+      r = -EINVAL;
-+      goto out;
-+    }
-+
-     string sure;
-     cmd_getval(g_ceph_context, cmdmap, "sure", sure);
-     if (sure != "--yes-i-really-mean-it") {
diff --git a/debian/patches/bug-8624b.patch b/debian/patches/bug-8624b.patch
deleted file mode 100644
index 9fdb025..0000000
--- a/debian/patches/bug-8624b.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 2b007c25bc6d383cec0f9fd0e76f0742c2e9a671 Mon Sep 17 00:00:00 2001
-From: Joao Eduardo Luis <joao.luis at inktank.com>
-Date: Mon, 23 Jun 2014 23:27:05 +0100
-Subject: [PATCH] mon: MDSMonitor: print pool name along with id during 'newfs'
- errors
-
-Signed-off-by: Joao Eduardo Luis <joao.luis at inktank.com>
----
- src/mon/MDSMonitor.cc | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
---- a/src/mon/MDSMonitor.cc
-+++ b/src/mon/MDSMonitor.cc
-@@ -1131,7 +1131,10 @@ bool MDSMonitor::prepare_command(MMonCom
-       r = -ENOENT;
-       goto out;
-     } else if (p->is_erasure()) {
--      ss << "pool id '" << data << "' is an erasure-code pool";
-+      const char *pn = mon->osdmon()->osdmap.get_pool_name(data);
-+      assert(pn != NULL);
-+      ss << "pool '" << pn << "' (id '" << data << "')"
-+         << " is an erasure-code pool";
-       r = -EINVAL;
-       goto out;
-     }
-@@ -1142,7 +1145,10 @@ bool MDSMonitor::prepare_command(MMonCom
-       r = -ENOENT;
-       goto out;
-     } else if (p->is_erasure()) {
--      ss << "pool id '" << metadata << "' is an erasure-code pool";
-+      const char *pn = mon->osdmon()->osdmap.get_pool_name(metadata);
-+      assert(pn != NULL);
-+      ss << "pool '" << pn << "' (id '" << metadata << "')"
-+         << " is an erasure-code pool";
-       r = -EINVAL;
-       goto out;
-     }
diff --git a/debian/patches/bug-8821.patch b/debian/patches/bug-8821.patch
deleted file mode 100644
index d2abce2..0000000
--- a/debian/patches/bug-8821.patch
+++ /dev/null
@@ -1,353 +0,0 @@
-From 0f87c55355ace952befce773498a3b5d8fac4f01 Mon Sep 17 00:00:00 2001
-From: Josh Durgin <josh.durgin at inktank.com>
-Date: Wed, 16 Jul 2014 13:29:29 -0700
-Subject: [PATCH 1/3] librbd: use order-agnostic default stripe parameters
-
- This way the default striping style of splitting into
- object-sized chunks still works with non-default orders
- specified.
-
- Signed-off-by: Josh Durgin <josh.durgin at inktank.com>
-
-Subject: [PATCH 2/3] rbd: remove accidental repeated option
-
- --stripe-count is already parsed above this
-
- Signed-off-by: Josh Durgin <josh.durgin at inktank.com>
-
-Subject: [PATCH 3/3] rbd: respect rbd_default_* parameters
-
- Treat rbd_default_{format,order,stripe_unit,stripe_count} as defaults for
- the usual arguments for specifying those properties.
-
- librbd::create() is affected by rbd_default_format, so we need to
- explicitly override it if --image-format is set. The rest of the
- parameters are passed explicitly when they are used, so their rbd_default
- equivalents don't matter.
-
- Fixes: #8821
- Signed-off-by: Josh Durgin <josh.durgin at inktank.com>
-
---- a/src/common/config_opts.h
-+++ b/src/common/config_opts.h
-@@ -749,10 +749,10 @@
-  * affected by rbd_default_order.
-  */
- OPTION(rbd_default_format, OPT_INT, 1)
- OPTION(rbd_default_order, OPT_INT, 22)
--OPTION(rbd_default_stripe_count, OPT_U64, 1) // changing requires stripingv2 feature
--OPTION(rbd_default_stripe_unit, OPT_U64, 4194304) // changing to non-object size requires stripingv2 feature
-+OPTION(rbd_default_stripe_count, OPT_U64, 0) // changing requires stripingv2 feature
-+OPTION(rbd_default_stripe_unit, OPT_U64, 0) // changing to non-object size requires stripingv2 feature
- OPTION(rbd_default_features, OPT_INT, 3) // 1 for layering, 3 for layering+stripingv2. only applies to format 2 images
- 
- OPTION(nss_db_path, OPT_STR, "") // path to nss db
- 
---- a/src/rbd.cc
-+++ b/src/rbd.cc
-@@ -2344,9 +2344,10 @@
- 
-   const char *poolname = NULL;
-   uint64_t size = 0;  // in bytes
-   int order = 0;
--  bool format_specified = false, output_format_specified = false;
-+  bool format_specified = false,
-+    output_format_specified = false;
-   int format = 1;
-   uint64_t features = RBD_FEATURE_LAYERING;
-   const char *imgname = NULL, *snapname = NULL, *destname = NULL,
-     *dest_poolname = NULL, *dest_snapname = NULL, *path = NULL,
-@@ -2358,9 +2359,9 @@
-   long long stripe_unit = 0, stripe_count = 0;
-   long long bench_io_size = 4096, bench_io_threads = 16, bench_bytes = 1 << 30;
-   string bench_pattern = "seq";
- 
--  std::string val;
-+  std::string val, parse_err;
-   std::ostringstream err;
-   long long sizell = 0;
-   std::vector<const char*>::iterator i;
-   for (i = args.begin(); i != args.end(); ) {
-@@ -2374,15 +2375,17 @@
-       return 0;
-     } else if (ceph_argparse_flag(args, i, "--new-format", (char*)NULL)) {
-       format = 2;
-       format_specified = true;
--    } else if (ceph_argparse_withint(args, i, &format, &err, "--image-format",
-+    } else if (ceph_argparse_witharg(args, i, &val, "--image-format",
- 				     (char*)NULL)) {
--      if (!err.str().empty()) {
--	cerr << "rbd: " << err.str() << std::endl;
-+      format = strict_strtol(val.c_str(), 10, &parse_err);
-+      if (!parse_err.empty()) {
-+	cerr << "rbd: error parsing --image-format: " << parse_err << std::endl;
- 	return EXIT_FAILURE;
-       }
-       format_specified = true;
-+      g_conf->set_val_or_die("rbd_default_format", val.c_str());
-     } else if (ceph_argparse_witharg(args, i, &val, "-p", "--pool", (char*)NULL)) {
-       poolname = strdup(val.c_str());
-     } else if (ceph_argparse_witharg(args, i, &val, "--dest-pool", (char*)NULL)) {
-       dest_poolname = strdup(val.c_str());
-@@ -2415,9 +2418,8 @@
-     } else if (ceph_argparse_withlonglong(args, i, &bench_io_size, &err, "--io-size", (char*)NULL)) {
-     } else if (ceph_argparse_withlonglong(args, i, &bench_io_threads, &err, "--io-threads", (char*)NULL)) {
-     } else if (ceph_argparse_withlonglong(args, i, &bench_bytes, &err, "--io-total", (char*)NULL)) {
-     } else if (ceph_argparse_witharg(args, i, &bench_pattern, &err, "--io-pattern", (char*)NULL)) {
--    } else if (ceph_argparse_withlonglong(args, i, &stripe_count, &err, "--stripe-count", (char*)NULL)) {
-     } else if (ceph_argparse_witharg(args, i, &val, "--path", (char*)NULL)) {
-       path = strdup(val.c_str());
-     } else if (ceph_argparse_witharg(args, i, &val, "--dest", (char*)NULL)) {
-       destname = strdup(val.c_str());
-@@ -2440,11 +2442,11 @@
-       progress = false;
-     } else if (ceph_argparse_flag(args, i , "--allow-shrink", (char *)NULL)) {
-       resize_allow_shrink = true;
-     } else if (ceph_argparse_witharg(args, i, &val, "--format", (char *) NULL)) {
--      std::string err;
--      long long ret = strict_strtoll(val.c_str(), 10, &err);
--      if (err.empty()) {
-+      long long ret = strict_strtoll(val.c_str(), 10, &parse_err);
-+      if (parse_err.empty()) {
-+	g_conf->set_val_or_die("rbd_default_format", val.c_str());
- 	format = ret;
- 	format_specified = true;
- 	cerr << "rbd: using --format for specifying the rbd image format is"
- 	     << " deprecated, use --image-format instead"
-@@ -2556,8 +2558,19 @@
- 	break;
-     }
-   }
- 
-+  /* get defaults from rbd_default_* options to keep behavior consistent with
-+     manual short-form options */
-+  if (!format_specified)
-+    format = g_conf->rbd_default_format;
-+  if (!order)
-+    order = g_conf->rbd_default_order;
-+  if (!stripe_unit)
-+    stripe_unit = g_conf->rbd_default_stripe_unit;
-+  if (!stripe_count)
-+    stripe_count = g_conf->rbd_default_stripe_count;
-+
-   if (format_specified && opt_cmd != OPT_IMPORT && opt_cmd != OPT_CREATE) {
-     cerr << "rbd: image format can only be set when "
- 	 << "creating or importing an image" << std::endl;
-     return EXIT_FAILURE;
---- /dev/null
-+++ b/src/test/cli-integration/rbd/defaults.t
-@@ -0,0 +1,214 @@
-+Plain create with various options specified via usual cli arguments
-+===================================================================
-+  $ rbd create -s 1 test
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rb.0.*",  (glob)
-+      "format": 1, 
-+      "name": "test", 
-+      "object_size": 4194304, 
-+      "objects": 1, 
-+      "order": 22, 
-+      "size": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+  $ rbd create -s 1 --order 20 test
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rb.0.*",  (glob)
-+      "format": 1, 
-+      "name": "test", 
-+      "object_size": 1048576, 
-+      "objects": 1, 
-+      "order": 20, 
-+      "size": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+  $ rbd create -s 1 test --image-format 2
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rbd_data.*",  (glob)
-+      "features": [
-+          "layering", 
-+          "striping"
-+      ], 
-+      "format": 2, 
-+      "name": "test", 
-+      "object_size": 4194304, 
-+      "objects": 1, 
-+      "order": 22, 
-+      "size": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+  $ rbd create -s 1 test --image-format 2 --order 20
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rbd_data.*",  (glob)
-+      "features": [
-+          "layering", 
-+          "striping"
-+      ], 
-+      "format": 2, 
-+      "name": "test", 
-+      "object_size": 1048576, 
-+      "objects": 1, 
-+      "order": 20, 
-+      "size": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+  $ rbd create -s 1 test --image-format 2 --stripe-unit 1048576 --stripe-count 8
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rbd_data.*",  (glob)
-+      "features": [
-+          "layering", 
-+          "striping"
-+      ], 
-+      "format": 2, 
-+      "name": "test", 
-+      "object_size": 4194304, 
-+      "objects": 1, 
-+      "order": 22, 
-+      "size": 1048576, 
-+      "stripe_count": 8, 
-+      "stripe_unit": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+
-+Format 2 Usual arguments with custom rbd_default_* params
-+=========================================================
-+  $ rbd create -s 1 test --image-format 2 --stripe-unit 1048576 --stripe-count 8 --rbd-default-order 21
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rbd_data.*",  (glob)
-+      "features": [
-+          "layering", 
-+          "striping"
-+      ], 
-+      "format": 2, 
-+      "name": "test", 
-+      "object_size": 2097152, 
-+      "objects": 1, 
-+      "order": 21, 
-+      "size": 1048576, 
-+      "stripe_count": 8, 
-+      "stripe_unit": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+  $ rbd create -s 1 test --image-format 2 --stripe-unit 1048576 --stripe-count 8 --order 23 --rbd-default-order 20
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rbd_data.*",  (glob)
-+      "features": [
-+          "layering", 
-+          "striping"
-+      ], 
-+      "format": 2, 
-+      "name": "test", 
-+      "object_size": 8388608, 
-+      "objects": 1, 
-+      "order": 23, 
-+      "size": 1048576, 
-+      "stripe_count": 8, 
-+      "stripe_unit": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+  $ rbd create -s 1 test --image-format 2 --rbd-default-stripe-unit 1048576 --rbd-default-stripe-count 8
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rbd_data.*",  (glob)
-+      "features": [
-+          "layering", 
-+          "striping"
-+      ], 
-+      "format": 2, 
-+      "name": "test", 
-+      "object_size": 4194304, 
-+      "objects": 1, 
-+      "order": 22, 
-+      "size": 1048576, 
-+      "stripe_count": 8, 
-+      "stripe_unit": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+
-+Format 1 Usual arguments with custom rbd_default_* params
-+=========================================================
-+  $ rbd create -s 1 test --rbd-default-order 20
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rb.0.*",  (glob)
-+      "format": 1, 
-+      "name": "test", 
-+      "object_size": 1048576, 
-+      "objects": 1, 
-+      "order": 20, 
-+      "size": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+  $ rbd create -s 1 test --rbd-default-format 2
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rbd_data.*",  (glob)
-+      "features": [
-+          "layering", 
-+          "striping"
-+      ], 
-+      "format": 2, 
-+      "name": "test", 
-+      "object_size": 4194304, 
-+      "objects": 1, 
-+      "order": 22, 
-+      "size": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+  $ rbd create -s 1 test --rbd-default-format 2 --rbd-default-order 20
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rbd_data.*",  (glob)
-+      "features": [
-+          "layering", 
-+          "striping"
-+      ], 
-+      "format": 2, 
-+      "name": "test", 
-+      "object_size": 1048576, 
-+      "objects": 1, 
-+      "order": 20, 
-+      "size": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+  $ rbd create -s 1 test --rbd-default-format 2 --rbd-default-order 20 --rbd-default-features 1
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rbd_data.*",  (glob)
-+      "features": [
-+          "layering", 
-+          "striping"
-+      ], 
-+      "format": 2, 
-+      "name": "test", 
-+      "object_size": 1048576, 
-+      "objects": 1, 
-+      "order": 20, 
-+      "size": 1048576
-+  }
-+  $ rbd rm test --no-progress
-+  $ rbd create -s 1 test --rbd-default-format 2 --stripe-unit 1048576 --stripe-count 8
-+  $ rbd info test --format json | python -mjson.tool
-+  {
-+      "block_name_prefix": "rbd_data.*",  (glob)
-+      "features": [
-+          "layering", 
-+          "striping"
-+      ], 
-+      "format": 2, 
-+      "name": "test", 
-+      "object_size": 4194304, 
-+      "objects": 1, 
-+      "order": 22, 
-+      "size": 1048576, 
-+      "stripe_count": 8, 
-+      "stripe_unit": 1048576
-+  }
-+  $ rbd rm test --no-progress
diff --git a/debian/patches/bug-9341.patch b/debian/patches/bug-9341.patch
deleted file mode 100644
index 1c35924..0000000
--- a/debian/patches/bug-9341.patch
+++ /dev/null
@@ -1,106 +0,0 @@
-Last-update: 2014-05-20
-Forwarded: not-needed
-Origin: upstream, http://tracker.ceph.com/attachments/download/1388/0001-client-trim-unused-inodes-before-reconnecting-to-rec.patch
-Bug-Ceph: http://tracker.ceph.com/issues/9341
-From: Yan, Zheng <zyan at redhat.com>
-Description: dramatically (e.g seconds instead of hours) reduce rejoin (i.e. MDS restart) time.
-
---- a/src/client/Client.cc
-+++ b/src/client/Client.cc
-@@ -466,16 +466,21 @@
- 
- // ===================
- // metadata cache stuff
- 
--void Client::trim_cache()
-+void Client::trim_cache(unsigned max)
- {
--  ldout(cct, 20) << "trim_cache size " << lru.lru_get_size() << " max " << lru.lru_get_max() << dendl;
-+  if (max > lru.lru_get_max())
-+    max = lru.lru_get_max();
-+
-+  ldout(cct, 20) << "trim_cache size " << lru.lru_get_size() << " max " << max << dendl;
-+
-   unsigned last = 0;
-   while (lru.lru_get_size() != last) {
-     last = lru.lru_get_size();
- 
--    if (lru.lru_get_size() <= lru.lru_get_max())  break;
-+    if (lru.lru_get_size() <= max)
-+      break;
- 
-     // trim!
-     Dentry *dn = static_cast<Dentry*>(lru.lru_expire());
-     if (!dn)
-@@ -483,8 +488,24 @@
-     
-     trim_dentry(dn);
-   }
- 
-+  // notify kernel to invalidate top level directory entries. As a side effect,
-+  // unused inodes underneath these entries get pruned.
-+  if (dentry_invalidate_cb && lru.lru_get_size() > max) {
-+    if (root->dir) {
-+      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);
-+      }
-+    } else {
-+      // This seems unnatural, as long as we are holding caps they must be on
-+      // some descendent of the root, so why don't we have the root open?`
-+    }
-+  }
-+
-   // hose root?
-   if (lru.lru_get_size() == 0 && root && root->get_num_ref() == 0 && inode_map.size() == 1) {
-     ldout(cct, 15) << "trim_cache trimmed root " << root << dendl;
-     delete root;
-@@ -1977,10 +1998,15 @@
-     int newstate = mdsmap->get_state(p->first);
-     if (!mdsmap->is_up(p->first) ||
- 	mdsmap->get_inst(p->first) != p->second->inst) {
-       messenger->mark_down(p->second->con);
--      if (mdsmap->is_up(p->first))
-+      if (mdsmap->is_up(p->first)) {
- 	p->second->inst = mdsmap->get_inst(p->first);
-+	// When new MDS starts to take over, notify kernel to trim unused entries
-+	// in its dcache/icache. Hopefully, the kernel will release some unused
-+	// inodes before the new MDS enters reconnect state.
-+	trim_cache(1);
-+      }
-     } else if (oldstate == newstate)
-       continue;  // no change
-     
-     if (newstate == MDSMap::STATE_RECONNECT &&
-@@ -2016,8 +2042,16 @@
- {
-   int mds = session->mds_num;
-   ldout(cct, 10) << "send_reconnect to mds." << mds << dendl;
- 
-+  // trim unused caps to reduce MDS's cache rejoin time
-+  trim_cache(1);
-+
-+  if (session->release) {
-+    session->release->put();
-+    session->release = NULL;
-+  }
-+
-   MClientReconnect *m = new MClientReconnect;
- 
-   // i have an open session.
-   ceph::unordered_set<inodeno_t> did_snaprealm;
---- a/src/client/Client.h
-+++ b/src/client/Client.h
-@@ -392,9 +392,9 @@
-   int fill_stat(Inode *in, struct stat *st, frag_info_t *dirstat=0, nest_info_t *rstat=0);
-   void touch_dn(Dentry *dn);
- 
-   // trim cache.
--  void trim_cache();
-+  void trim_cache(unsigned max=-1U);
-   void trim_dentry(Dentry *dn);
-   void trim_caps(MetaSession *s, int max);
-   
-   void dump_inode(Formatter *f, Inode *in, set<Inode*>& did, bool disconnected);
diff --git a/debian/patches/client-sleep1.patch b/debian/patches/client-sleep1.patch
deleted file mode 100644
index f3b2367..0000000
--- a/debian/patches/client-sleep1.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From b8aa58af793bea4ed1a150ac5bf554fc894774f1 Mon Sep 17 00:00:00 2001
-From: "Yan, Zheng" <zheng.z.yan at intel.com>
-Date: Fri, 11 Apr 2014 15:34:25 +0800
-Subject: [PATCH] client: drop dirty/flushing caps if auth MDS' session is
- reset
-
-Signed-off-by: Yan, Zheng <zheng.z.yan at intel.com>
----
- src/client/Client.cc | 21 ++++++++++++++++++---
- 1 file changed, 18 insertions(+), 3 deletions(-)
-
---- a/src/client/Client.cc
-+++ b/src/client/Client.cc
-@@ -3108,14 +3108,29 @@
-   while (!in->caps.empty())
-     remove_cap(in->caps.begin()->second, true);
- }
- 
--void Client::remove_session_caps(MetaSession *mds) 
-+void Client::remove_session_caps(MetaSession *s)
- {
--  while (mds->caps.size()) {
--    Cap *cap = *mds->caps.begin();
-+  ldout(cct, 10) << "remove_session_caps mds." << s->mds_num << dendl;
-+
-+  while (s->caps.size()) {
-+    Cap *cap = *s->caps.begin();
-+    Inode *in = cap->inode;
-+    int dirty_caps = 0;
-+    if (in->auth_cap == cap)
-+      dirty_caps = in->dirty_caps | in->flushing_caps;
-     remove_cap(cap, false);
-+    if (dirty_caps) {
-+      lderr(cct) << "remove_session_caps still has dirty|flushing caps on " << *in << dendl;
-+      if (in->flushing_caps)
-+	num_flushing_caps--;
-+      in->flushing_caps = 0;
-+      in->dirty_caps = 0;
-+      put_inode(in);
-+    }
-   }
-+  sync_cond.Signal();
- }
- 
- void Client::trim_caps(MetaSession *s, int max)
- {
diff --git a/debian/patches/client-sleep2.patch b/debian/patches/client-sleep2.patch
deleted file mode 100644
index 67ce24a..0000000
--- a/debian/patches/client-sleep2.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 70ab0793cc7d2d75ac942efb677a0b3297d3792a Mon Sep 17 00:00:00 2001
-From: "Yan, Zheng" <zheng.z.yan at intel.com>
-Date: Fri, 11 Apr 2014 16:31:29 +0800
-Subject: [PATCH] client: wake up cap waiters if MDS session is reset
-
-Signed-off-by: Yan, Zheng <zheng.z.yan at intel.com>
----
- src/client/Client.cc | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
---- a/src/client/Client.cc
-+++ b/src/client/Client.cc
-@@ -2385,8 +2385,11 @@
- 
- int Client::get_caps(Inode *in, int need, int want, int *phave, loff_t endoff)
- {
-   while (1) {
-+    if (!in->is_any_caps())
-+      return -ESTALE;
-+
-     if (endoff > 0 &&
- 	(endoff >= (loff_t)in->max_size ||
- 	 endoff > (loff_t)(in->size << 1)) &&
- 	endoff > (loff_t)in->wanted_max_size) {
-@@ -3116,11 +3119,15 @@
-   while (s->caps.size()) {
-     Cap *cap = *s->caps.begin();
-     Inode *in = cap->inode;
-     int dirty_caps = 0;
--    if (in->auth_cap == cap)
-+    if (in->auth_cap == cap) {
-       dirty_caps = in->dirty_caps | in->flushing_caps;
-+      in->wanted_max_size = 0;
-+      in->requested_max_size = 0;
-+    }
-     remove_cap(cap, false);
-+    signal_cond_list(in->waitfor_caps);
-     if (dirty_caps) {
-       lderr(cct) << "remove_session_caps still has dirty|flushing caps on " << *in << dendl;
-       if (in->flushing_caps)
- 	num_flushing_caps--;
diff --git a/debian/patches/client-sleep3.patch b/debian/patches/client-sleep3.patch
deleted file mode 100644
index edf1a36..0000000
--- a/debian/patches/client-sleep3.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 3e41f92b8439fcae33f412c7b833a7233e1faecb Mon Sep 17 00:00:00 2001
-From: "Yan, Zheng" <zheng.z.yan at intel.com>
-Date: Fri, 11 Apr 2014 16:42:42 +0800
-Subject: [PATCH] client: cleanup unsafe requests if MDS session is reset
-
-Signed-off-by: Yan, Zheng <zheng.z.yan at intel.com>
----
- src/client/Client.cc | 22 ++++++++++++++--------
- 1 file changed, 14 insertions(+), 8 deletions(-)
-
---- a/src/client/Client.cc
-+++ b/src/client/Client.cc
-@@ -2123,17 +2123,23 @@
- void Client::kick_requests_closed(MetaSession *session)
- {
-   ldout(cct, 10) << "kick_requests_closed for mds." << session->mds_num << dendl;
-   for (map<ceph_tid_t, MetaRequest*>::iterator p = mds_requests.begin();
--       p != mds_requests.end();
--       ++p) {
--    if (p->second->mds == session->mds_num) {
--      if (p->second->caller_cond) {
--	p->second->kick = true;
--	p->second->caller_cond->Signal();
-+       p != mds_requests.end(); ) {
-+    MetaRequest *req = p->second;
-+    ++p;
-+    if (req->mds == session->mds_num) {
-+      if (req->caller_cond) {
-+	req->kick = true;
-+	req->caller_cond->Signal();
-+      }
-+      req->item.remove_myself();
-+      if (req->got_unsafe) {
-+	lderr(cct) << "kick_requests_closed removing unsafe request " << req->get_tid() << dendl;
-+	req->unsafe_item.remove_myself();
-+	mds_requests.erase(req->get_tid());
-+	put_request(req);
-       }
--      p->second->item.remove_myself();
--      p->second->unsafe_item.remove_myself();
-     }
-   }
-   assert(session->requests.empty());
-   assert(session->unsafe_requests.empty());
diff --git a/debian/patches/firefly-latest.patch b/debian/patches/firefly-latest.patch
deleted file mode 100644
index b042b23..0000000
--- a/debian/patches/firefly-latest.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Last-Update: 2014-10-02
-Forwarded: not-needed
-Origin: upstream
-Author: Dmitry Smirnov <onlyjob at member.fsf.org>
-Description: fixes from "firefly" branch since 0.80.6 release
-
---- a/src/common/config.cc
-+++ b/src/common/config.cc
-@@ -946,9 +946,9 @@
-   return -ENOSYS;
- }
- 
- static const char *CONF_METAVARIABLES[] =
--  { "cluster", "type", "name", "host", "num", "id", "pid" };
-+  { "cluster", "type", "name", "host", "num", "id", "pid", "cctid" };
- static const int NUM_CONF_METAVARIABLES =
-       (sizeof(CONF_METAVARIABLES) / sizeof(CONF_METAVARIABLES[0]));
- 
- void md_config_t::expand_all_meta()
-@@ -1058,8 +1058,10 @@
- 	else if (var == "id")
- 	  out += name.get_id().c_str();
- 	else if (var == "pid")
- 	  out += stringify(getpid());
-+	else if (var == "cctid")
-+	  out += stringify((unsigned long long)this);
- 	else
- 	  assert(0); // unreachable
- 	expanded = true;
-       }
diff --git a/debian/patches/modules.patch b/debian/patches/modules.patch
index 301d253..9a749cb 100644
--- a/debian/patches/modules.patch
+++ b/debian/patches/modules.patch
@@ -9,7 +9,8 @@ Description: Mark modules as actually being modules
 
 --- a/src/cls/Makefile.am
 +++ b/src/cls/Makefile.am
-@@ -45,7 +45,7 @@ radoslib_LTLIBRARIES += libcls_replica_l
+@@ -44,9 +44,9 @@
+ radoslib_LTLIBRARIES += libcls_replica_log.la
  
  libcls_user_la_SOURCES = cls/user/cls_user.cc
  libcls_user_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
@@ -18,37 +19,45 @@ Description: Mark modules as actually being modules
  radoslib_LTLIBRARIES += libcls_user.la
  
  libcls_rgw_la_SOURCES = \
+ 	cls/rgw/cls_rgw.cc \
 --- a/src/erasure-code/jerasure/Makefile.am
 +++ b/src/erasure-code/jerasure/Makefile.am
-@@ -40,7 +40,7 @@ libec_jerasure_generic_la_CXXFLAGS= ${AM
- 	-Ierasure-code/jerasure/gf-complete/include \
- 	-Ierasure-code/jerasure/jerasure/include
+@@ -42,9 +42,9 @@
+ libec_jerasure_generic_la_CXXFLAGS= ${AM_CXXFLAGS} \
+ 	-I$(srcdir)/erasure-code/jerasure/gf-complete/include \
+ 	-I$(srcdir)/erasure-code/jerasure/jerasure/include
  libec_jerasure_generic_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 -libec_jerasure_generic_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0
 +libec_jerasure_generic_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared
  if LINUX
  libec_jerasure_generic_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*'
  endif
-@@ -63,7 +63,7 @@ libec_jerasure_sse3_la_CXXFLAGS= ${AM_CX
- 	-Ierasure-code/jerasure/gf-complete/include \
- 	-Ierasure-code/jerasure/jerasure/include
+ 
+@@ -65,9 +65,9 @@
+ 	${INTEL_SSSE3_FLAGS} \
+ 	-I$(srcdir)/erasure-code/jerasure/gf-complete/include \
+ 	-I$(srcdir)/erasure-code/jerasure/jerasure/include
  libec_jerasure_sse3_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 -libec_jerasure_sse3_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0
 +libec_jerasure_sse3_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared
  if LINUX
  libec_jerasure_sse3_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*'
  endif
-@@ -90,7 +90,7 @@ libec_jerasure_sse4_la_CXXFLAGS= ${AM_CX
- 	-Ierasure-code/jerasure/gf-complete/include \
- 	-Ierasure-code/jerasure/jerasure/include
+ 
+@@ -92,9 +92,9 @@
+ 	${INTEL_SSE4_2_FLAGS} \
+ 	-I$(srcdir)/erasure-code/jerasure/gf-complete/include \
+ 	-I$(srcdir)/erasure-code/jerasure/jerasure/include
  libec_jerasure_sse4_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 -libec_jerasure_sse4_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0
 +libec_jerasure_sse4_la_LDFLAGS = ${AM_LDFLAGS} -module -avoid-version -shared
  if LINUX
  libec_jerasure_sse4_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*'
  endif
-@@ -102,7 +102,7 @@ libec_jerasure_la_SOURCES = \
- libec_jerasure_la_CFLAGS = ${AM_CFLAGS} 
+ 
+@@ -104,9 +104,9 @@
+ 	erasure-code/jerasure/ErasureCodePluginSelectJerasure.cc
+ libec_jerasure_la_CFLAGS = ${AM_CFLAGS}
  libec_jerasure_la_CXXFLAGS= ${AM_CXXFLAGS}
  libec_jerasure_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
 -libec_jerasure_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0
@@ -56,3 +65,4 @@ Description: Mark modules as actually being modules
  if LINUX
  libec_jerasure_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*'
  endif
+ 
diff --git a/debian/patches/p2139.patch b/debian/patches/p2139.patch
deleted file mode 100644
index 6886c6a..0000000
--- a/debian/patches/p2139.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 4eb18dd487da4cb621dcbecfc475fc0871b356ac Mon Sep 17 00:00:00 2001
-From: Ma Jianpeng <jianpeng.ma at intel.com>
-Date: Wed, 23 Jul 2014 10:10:38 -0700
-Subject: [PATCH] os/FileJournal: Update the journal header when closing
- journal
-
-When closing journal, it should check must_write_header and update
-journal header if must_write_header alreay set.
-It can reduce the nosense journal-replay after restarting osd.
-
-Signed-off-by: Ma Jianpeng <jianpeng.ma at intel.com>
-Reviewed-by: Sage Weil <sage at redhat.com>
----
- src/os/FileJournal.cc | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/src/os/FileJournal.cc
-+++ b/src/os/FileJournal.cc
-@@ -543,8 +543,9 @@
-   stop_writer();
- 
-   // close
-   assert(writeq_empty());
-+  assert(!must_write_header);
-   assert(fd >= 0);
-   VOID_TEMP_FAILURE_RETRY(::close(fd));
-   fd = -1;
- }
-@@ -1101,9 +1102,9 @@
-   dout(10) << "write_thread_entry start" << dendl;
-   while (1) {
-     {
-       Mutex::Locker locker(writeq_lock);
--      if (writeq.empty()) {
-+      if (writeq.empty() && !must_write_header) {
- 	if (write_stop)
- 	  break;
- 	dout(20) << "write_thread_entry going to sleep" << dendl;
- 	writeq_cond.Wait(writeq_lock);
diff --git a/debian/patches/rbdmap1-mount.patch b/debian/patches/rbdmap1-mount.patch
deleted file mode 100644
index d406a15..0000000
--- a/debian/patches/rbdmap1-mount.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-Forwarded: yes
-Applied-Upstream: yes
-Author: Dmitry Smirnov <onlyjob at member.fsf.org>
-Description: rbdmap: per-device mount (Closes: #8538)
-
-`/etc/init.d/rbdmap start` was doing `mount -a`. Although (arguably)
-`mount -a -O _netdev` could be less disruptive, it's not RBD mapping job to
-mount unrelated devices and potentially do it at the wrong time.
-
-Solution is to call `mount {device}` which works as expected and mounts
-device even if it given in form `mount /dev/rbd/pool/imagename` while
-`/etc/fstab` uses UUID or LABEL notation.
-
-Furthermore this commit
-
- * fixes global exit code (it was always 0): now it is 0 only when
-   all devices were (un)mounted successfully; otherwise non-zero.
- * replaces `mount -a` with per-device post-mapping `mount {dev}`
- * show mapping progress using LSB functions per device instead of for
-   {start|stop} invocation.
- * capture output of `(u)mount` (if any) and report it as "info".
-
-Signed-off-by: Dmitry Smirnov <onlyjob at member.fsf.org>
----
- src/init-rbdmap | 74 ++++++++++++++++++++++++++++++++++++---------------------
- 1 file changed, 47 insertions(+), 27 deletions(-)
-
---- a/src/init-rbdmap
-+++ b/src/init-rbdmap
-@@ -18,7 +18,7 @@
- # Description:       Ceph RBD Mapping
- ### END INIT INFO
- 
--DESC="RBD Mapping"
-+DESC="RBD Mapping:"
- RBDMAPFILE="/etc/ceph/rbdmap"
- 
- . /lib/lsb/init-functions
-@@ -29,9 +29,7 @@ do_map() {
- 		exit 0
- 	fi
- 
--	log_daemon_msg "Starting $DESC"
- 	# Read /etc/rbdtab to create non-existant mapping
--	newrbd=
- 	RET=0
- 	while read DEV PARAMS; do
- 		case "$DEV" in
-@@ -44,6 +42,10 @@ do_map() {
- 			DEV=rbd/$DEV
- 			;;
- 		esac
-+		log_action_begin_msg "${DESC} '${DEV}'"
-+		newrbd=""
-+		MAP_RV=""
-+		RET_OP=0
- 		OIFS=$IFS
- 		IFS=','
- 		for PARAM in ${PARAMS[@]}; do
-@@ -51,39 +53,59 @@ do_map() {
- 		done
- 		IFS=$OIFS
- 		if [ ! -b /dev/rbd/$DEV ]; then
--			log_progress_msg $DEV
--			rbd map $DEV $CMDPARAMS
--			[ $? -ne "0" ] && RET=1
--			newrbd="yes"
-+			MAP_RV=$(rbd map $DEV $CMDPARAMS 2>&1)
-+			if [ $? -eq 0 ]; then
-+			    newrbd="yes"
-+			else
-+			    RET=$((${RET}+$?))
-+			    RET_OP=1
-+			fi
-+		fi
-+		log_action_end_msg ${RET_OP} "${MAP_RV}"
-+
-+		if [ "$newrbd" ]; then
-+                        ## Mount new rbd
-+			MNT_RV=""
-+			mount --fake /dev/rbd/$DEV >>/dev/null 2>&1 \
-+			&& MNT_RV=$(mount -v /dev/rbd/$DEV 2>&1)
-+			[ -n "${MNT_RV}" ] && log_action_msg "mount: ${MNT_RV}"
- 		fi
- 	done < $RBDMAPFILE
--	log_end_msg $RET
-+	exit ${RET}
- 
--	# Mount new rbd
--	if [ "$newrbd" ]; then
--                log_action_begin_msg "Mounting all filesystems"
--		mount -a
--		log_action_end_msg $?
--	fi
- }
- 
- do_unmap() {
--	log_daemon_msg "Stopping $DESC"
- 	RET=0
--	# Recursive umount that depends /dev/rbd*
--	MNTDEP=$(findmnt --mtab | awk '$2 ~ /^\/dev\/rbd[0-9]*$/ {print $1}' | sort -r)
--	for MNT in $MNTDEP; do
--		umount $MNT
--	done 
--	# Unmap all rbd device
-+	## Unmount and unmap all rbd devices
- 	if ls /dev/rbd[0-9]* >/dev/null 2>&1; then
- 		for DEV in /dev/rbd[0-9]*; do
--			log_progress_msg $DEV
--			rbd unmap $DEV
--			[ $? -ne "0" ] && RET=1
-+			log_action_begin_msg "RBD un-mapping: '${DEV}'"
-+			UMNT_RV=""
-+			UMAP_RV=""
-+			RET_OP=0
-+			MNT=$(findmnt --mtab --source ${DEV} --noheadings | awk '{print $1'})
-+			if [ -n "${MNT}" ]; then
-+			    log_action_cont_msg "un-mounting '${MNT}'"
-+			    UMNT_RV=$(umount "${MNT}" 2>&1)
-+			fi
-+			if mountpoint -q "${MNT}"; then
-+			    ## Un-mounting failed.
-+			    RET_OP=1
-+			    RET=$((${RET}+1))
-+			else
-+			    ## Un-mapping.
-+			    UMAP_RV=$(rbd unmap $DEV 2>&1)
-+			    if [ $? -ne 0 ]; then
-+			        RET=$((${RET}+$?))
-+			        RET_OP=1
-+			    fi
-+			fi
-+			log_action_end_msg ${RET_OP} "${UMAP_RV}"
-+			[ -n "${UMNT_RV}" ] && log_action_msg "${UMNT_RV}"
- 		done
- 	fi
--	log_end_msg $RET
-+	exit ${RET}
- }
- 
- 
-@@ -114,5 +136,3 @@ case "$1" in
- 	exit 1
- 	;;
- esac
--
--exit 0
diff --git a/debian/patches/rbdmap2-hooks.patch b/debian/patches/rbdmap2-hooks.patch
deleted file mode 100644
index c5c7926..0000000
--- a/debian/patches/rbdmap2-hooks.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-Forwarded: yes
-Applied-Upstream: yes
-From: Dmitry Smirnov <onlyjob at member.fsf.org>
-Description: rbdmap: per-device post-map/pre-unmap hooks
-
-There are cases when automatic (un-)mounting of file system on RBD is not
-enough. Some services may need to be started when RBD device becomes
-available (mapped) as well as it may be desirable to stop services in order
-to release file system before unmapping RBD device.
-
-File system(s) on RBD is not the only use case scenario. RBD devices may be
-used as block devices in which case `/etc/fstab` is not sufficient to
-perform action upon mapping RBD device. A handler script (hook) can be
-useful to properly release RBD device before unmapping, etc.
-
-Pre-unmap hooks can be important for clean shut down and for re-exporting
-RBD device(s) as (iSCSI,AoE,DRBD) etc.
-
-This commit introduces support for per-device hooks to perform per-device
-post-map/pre-unmap actions. If hook named like "poolname/imagename" (same
-as in `/etc/ceph/rbdmap` file) is found in
-
-    /etc/ceph/rbd.d/poolname/imagename
-
-it is executed as
-
-    /etc/ceph/rbd.d/poolname/imagename map poolname/imagename
-
-following after attempt to mount file system (if relevant `fstab` entry
-exist) following mapping of corresponding RBD device.
-
-Before un-mounting file system and un-mapping RBD device hook is called as
-follows:
-
-    /etc/ceph/rbd.d/poolname/imagename unmap poolname/imagename
-
-Second argument is intentional to allow multiple RBD devices to share the
-same hook (symlinked under different names).
-
-Sample hook to use RBD device as "mdadm" hot spare may look like this:
-
-~~~~
-DEV="$2"
-case "$1" in
-    "map")
-        mdadm /dev/md2 --add --write-mostly "${DEV}"
-    ;;
-    "unmap")
-        mdadm /dev/md2 --fail "${DEV}"
-        sleep 2
-        mdadm /dev/md2 --remove "${DEV}"
-    ;;
-esac
-~~~~
-
-Signed-off-by: Dmitry Smirnov <onlyjob at member.fsf.org>
----
- src/init-rbdmap | 19 ++++++++++++++++++-
- 1 file changed, 18 insertions(+), 1 deletion(-)
-
---- a/src/init-rbdmap
-+++ b/src/init-rbdmap
-@@ -64,11 +64,17 @@ do_map() {
- 		log_action_end_msg ${RET_OP} "${MAP_RV}"
- 
- 		if [ "$newrbd" ]; then
--                        ## Mount new rbd
-+			## Mount new rbd
- 			MNT_RV=""
- 			mount --fake /dev/rbd/$DEV >>/dev/null 2>&1 \
- 			&& MNT_RV=$(mount -v /dev/rbd/$DEV 2>&1)
- 			[ -n "${MNT_RV}" ] && log_action_msg "mount: ${MNT_RV}"
-+
-+			## post-mapping
-+			if [ -x "/etc/ceph/rbd.d/${DEV}" ]; then
-+			    log_action_msg "RBD Running post-map hook '/etc/ceph/rbd.d/${DEV}'"
-+			    /etc/ceph/rbd.d/${DEV} map "/dev/rbd/${DEV}"
-+			fi
- 		fi
- 	done < $RBDMAPFILE
- 	exit ${RET}
-@@ -80,6 +86,17 @@ do_unmap() {
- 	## Unmount and unmap all rbd devices
- 	if ls /dev/rbd[0-9]* >/dev/null 2>&1; then
- 		for DEV in /dev/rbd[0-9]*; do
-+			## pre-unmapping
-+			for L in $(find /dev/rbd -type l); do
-+			    LL="${L##/dev/rbd/}"
-+			    if [ "$(readlink -f $L)" = "${DEV}" ] \
-+			    && [ -x "/etc/ceph/rbd.d/${LL}" ]; then
-+			        log_action_msg "RBD pre-unmap:  '${DEV}' hook '/etc/ceph/rbd.d/${LL}'"
-+			        /etc/ceph/rbd.d/${LL} unmap "$L"
-+			        break
-+			    fi
-+			done
-+
- 			log_action_begin_msg "RBD un-mapping: '${DEV}'"
- 			UMNT_RV=""
- 			UMAP_RV=""
diff --git a/debian/patches/sample.ceph.conf.patch b/debian/patches/sample.ceph.conf.patch
index 0e0eacd..f3bbcb5 100644
--- a/debian/patches/sample.ceph.conf.patch
+++ b/debian/patches/sample.ceph.conf.patch
@@ -1,369 +1,204 @@
-Last-Update: 2014-05-23
-Forwarded: yes
+Last-Update: 2014-10-19
+Forwarded: no
 Author: Dmitry Smirnov <onlyjob at member.fsf.org>
-Description: sample.ceph.conf update:
+Description: sample.ceph.conf updates:
 
  * corrected URLs.
- * added [client] section.
  * more options and descriptions.
- * filestore settings were moved under [osd].
- * cephx settings to reflect lack of support for authentication in kernel RBD client.
- * many minor corrections and updates.
 
 --- a/src/sample.ceph.conf
 +++ b/src/sample.ceph.conf
-@@ -31,7 +31,7 @@
+@@ -30,9 +30,9 @@
+ # $name       ; Expands to $type.$id.
  #             ; Example: /var/run/ceph/$cluster-$name.asok
  
  [global]
 -### http://ceph.com/docs/master/rados/configuration/general-config-ref/
-+### http://ceph.com/docs/firefly/rados/configuration/general-config-ref/
++### http://ceph.com/docs/giant/rados/configuration/general-config-ref/
  
      ;fsid                       = {UUID}    # use `uuidgen` to generate your own UUID
      ;public network             = 192.168.0.0/24
-@@ -51,8 +51,8 @@
+     ;cluster network            = 192.168.0.0/24
+@@ -50,10 +50,10 @@
+     # (Default: 0)
      ;max open files             = 131072
  
  
 -### http://ceph.com/docs/master/rados/operations/authentication
 -### http://ceph.com/docs/master/rados/configuration/auth-config-ref/
-+### http://ceph.com/docs/firefly/rados/operations/authentication
-+### http://ceph.com/docs/firefly/rados/configuration/auth-config-ref/
++### http://ceph.com/docs/giant/rados/operations/authentication
++### http://ceph.com/docs/giant/rados/configuration/auth-config-ref/
  
      # If enabled, the Ceph Storage Cluster daemons (i.e., ceph-mon, ceph-osd,
      # and ceph-mds) must authenticate with each other.
-@@ -78,7 +78,11 @@
-     # comprising the Ceph Storage Cluster.
-     # Type: Boolean (optional)
-     # (Default: false)
--    cephx require signatures   = true    ; everywhere possible
-+    ;cephx require signatures   = true
-+
-+    # kernel RBD client do not support authentication yet:
-+    cephx cluster require signatures = true
-+    cephx service require signatures = false
- 
-     # The path to the keyring file.
-     # Type: String (optional)
-@@ -86,13 +90,13 @@
+     # Type: String (optional); Valid settings are "cephx" or "none".
+@@ -89,9 +89,9 @@
+     # Default: /etc/ceph/$cluster.$name.keyring,/etc/ceph/$cluster.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin
      ;keyring                  = /etc/ceph/$cluster.$name.keyring
  
  
 -### http://ceph.com/docs/master/rados/configuration/pool-pg-config-ref/
-+### http://ceph.com/docs/firefly/rados/configuration/pool-pg-config-ref/
++### http://ceph.com/docs/giant/rados/configuration/pool-pg-config-ref/
  
  
      ## Replication level, number of data copies.
      # Type: 32-bit Integer
-     # (Default: 2)
--    ;osd pool default size      = 2
-+    ;osd pool default size      = 3
- 
-     ## Replication level in degraded state, less than 'osd pool default size' value.
-     # Sets the minimum number of written replicas for objects in the
-@@ -102,7 +106,7 @@
-     # operating in degraded mode.
-     # Type: 32-bit Integer
-     # (Default: 0), which means no particular minimum. If 0, minimum is size - (size / 2).
--    ;osd pool default min size  = 1
-+    ;osd pool default min size  = 2
- 
-     ## Ensure you have a realistic number of placement groups. We recommend
-     ## approximately 100 per OSD. E.g., total number of OSDs multiplied by 100
-@@ -114,14 +118,14 @@
-     #              default value is the same as pg_num with mkpool.
-     # Type: 32-bit Integer
-     # (Default: 8)
--    ;osd pool default pg num    = 100
-+    ;osd pool default pg num    = 128
- 
-     # Description: The default number of placement groups for placement for a
-     #              pool. The default value is the same as pgp_num with mkpool.
-     #              PG and PGP should be equal (for now).
-     # Type: 32-bit Integer
-     # (Default: 8)
--    ;osd pool default pgp num   = 100
-+    ;osd pool default pgp num   = 128
- 
-     # The default CRUSH ruleset to use when creating a pool
-     # Type: 32-bit Integer
-@@ -135,15 +139,22 @@
+@@ -138,9 +138,9 @@
+     # (Default: 1) Typically a host containing one or more Ceph OSD Daemons.
      ;osd crush chooseleaf type = 1
  
  
--### http://ceph.com/docs/bobtail/rados/configuration/log-and-debug-ref/
-+### http://ceph.com/docs/firefly/rados/troubleshooting/log-and-debug/
+-### http://ceph.com/docs/master/rados/troubleshooting/log-and-debug/
++### http://ceph.com/docs/giant/rados/troubleshooting/log-and-debug/
  
-+    # The location of the logging file for your cluster.
-+    # Type: String
-+    # Required: No
-     # Default: /var/log/ceph/$cluster-$name.log
-     ;log file                   = /var/log/ceph/$cluster-$name.log
- 
-+    # Determines if logging messages should appear in syslog.
-+    # Type: Boolean
-+    # Required: No
-+    # (Default: false)
+     # The location of the logging file for your cluster.
+     # Type: String
+     # Required: No
+@@ -153,9 +153,9 @@
+     # (Default: false)
      ;log to syslog              = true
  
  
 -### http://ceph.com/docs/master/rados/configuration/ms-ref/
-+### http://ceph.com/docs/firefly/rados/configuration/ms-ref/
++### http://ceph.com/docs/giant/rados/configuration/ms-ref/
  
      # Enable if you want your daemons to bind to IPv6 address instead of
      # IPv4 ones. (Not required if you specify a daemon or cluster IP.)
-@@ -151,29 +162,13 @@
-     # (Default: false)
-     ;ms bind ipv6               = true
- 
--
--### http://ceph.com/docs/master/rados/configuration/filestore-config-ref/
--
--    # The maximum interval in seconds for synchronizing the filestore.
--    # Type: Double (optional)
--    # (Default: 5)
--    ;filestore max sync interval = 5
--
--    # Use object map for XATTRS. Set to true for ext4 file systems only.
--    # Type: Boolean (optional)
--    # (Default: false)
--    ;filestore xattr use omap    = true
--
--### http://ceph.com/docs/master/rados/configuration/journal-ref/
--
- ##################
+     # Type: Boolean
+@@ -166,10 +166,10 @@
  ## Monitors
  ## You need at least one. You need at least three if you want to
  ## tolerate any node failures. Always create an odd number.
  [mon]
--### http://ceph.com/docs/argonaut/config-ref/mon-config/
 -### http://ceph.com/docs/master/rados/configuration/mon-config-ref/
--### http://ceph.com/docs/dumpling/rados/configuration/mon-osd-interaction/
-+### http://ceph.com/docs/firefly/rados/configuration/mon-config-ref/
-+### http://ceph.com/docs/firefly/rados/configuration/mon-osd-interaction/
+-### http://ceph.com/docs/master/rados/configuration/mon-osd-interaction/
++### http://ceph.com/docs/giant/rados/configuration/mon-config-ref/
++### http://ceph.com/docs/giant/rados/configuration/mon-osd-interaction/
  
      # The IDs of initial monitors in a cluster during startup.
      # If specified, Ceph requires an odd number of monitors to form an
-@@ -185,7 +180,7 @@
-     ;mon host                   = cephhost01,cephhost02
-     ;mon addr                   = 192.168.0.101,192.168.0.102
- 
--    # The monitor’s data location
-+    # The monitor's data location
-     # Default: /var/lib/ceph/mon/$cluster-$id
-     ;mon data                   = /var/lib/ceph/mon/$name
- 
-@@ -197,7 +192,7 @@
-     # Exponential backoff for clock drift warnings
-     # Type: Float
-     # (Default: 5)
--    ;mon clock drift warn backoff = 30    ; Tell the monitor to backoff from this warning for 30 seconds
-+    ;mon clock drift warn backoff = 30    # Tell the monitor to backoff from this warning for 30 seconds
- 
-     # The percentage of disk space used before an OSD is considered full.
-     # Type: Float
-@@ -209,8 +204,19 @@
-     # (Default: .85)
-     ;mon osd nearfull ratio     = .85
- 
-+    # The number of seconds Ceph waits before marking a Ceph OSD
-+    # Daemon "down" and "out" if it doesn't respond.
-+    # Type: 32-bit Integer
-+    # (Default: 300)
-+    ;mon osd down out interval  = 300
-+
-+    # The grace period in seconds before declaring unresponsive Ceph OSD
-+    # Daemons "down".
-+    # Type: 32-bit Integer
-+    # (Default: 900)
-+    ;mon osd report timeout          = 300
+     # initial quorum (e.g., 3).
+@@ -215,9 +215,9 @@
+     # Type: 32-bit Integer
+     # (Default: 900)
+     ;mon osd report timeout          = 300
  
--### http://ceph.com/docs/next/rados/troubleshooting/log-and-debug/
-+### http://ceph.com/docs/firefly/rados/troubleshooting/log-and-debug/
+-### http://ceph.com/docs/master/rados/troubleshooting/log-and-debug/
++### http://ceph.com/docs/giant/rados/troubleshooting/log-and-debug/
  
      # logging, for debugging monitor crashes, in order of
      # their likelihood of being helpful :)
-@@ -239,16 +245,28 @@
+     ;debug ms                   = 1
+@@ -237,16 +237,20 @@
+ ;[mon.gamma]
+ ;    host                       = gamma
+ ;    mon addr                   = 192.168.0.12:6789
+ 
++    # The maximum number of simultaneous scrub operations for a Ceph OSD Daemon.
++    # Type: 32-bit Int
++    # (Default: 1)
++    ;osd max scrubs               = 2
+ 
+ ##################
+ ## Metadata servers
+ # You must deploy at least one metadata server to use CephFS. There is
  # experimental support for running multiple metadata servers. Do not run
  # multiple metadata servers in production.
  [mds]
--### http://ceph.com/docs/argonaut/config-ref/mds-config/
 -### http://ceph.com/docs/master/cephfs/mds-config-ref/
-+### http://ceph.com/docs/firefly/cephfs/mds-config-ref/
++### http://ceph.com/docs/giant/cephfs/mds-config-ref/
  
      # where the mds keeps it's secret encryption keys
      ;keyring                    = /var/lib/ceph/mds/$name/keyring
  
-+    # Determines whether a 'ceph-mds' daemon should poll and
-+    # replay the log of an active MDS (hot standby).
-+    # Type:  Boolean
-+    # (Default: false)
-+    ;mds standby replay          = true
-+
-     ; mds logging to debug issues.
-     ;debug ms                   = 1
-     ;debug mds                  = 20
-+    ;debug journaler            = 20
-+
-+    # The number of inodes to cache.
-+    # Type: 32-bit Integer
-+    # (Default: 100000)
-+    ;mds cache size             = 250000
- 
-+    ;mds mem max                = 1048576     # KB
- 
- ;[mds.alpha]
- ;    host                       = alpha
-@@ -261,8 +279,7 @@
+@@ -278,9 +282,9 @@
+ ## osd
  # You need at least one.  Two or more if you want data to be replicated.
  # Define as many as you like.
  [osd]
--### http://ceph.com/docs/argonaut/config-ref/osd-config/
--### http://ceph.com/docs/bobtail/rados/configuration/osd-config-ref/
-+### http://ceph.com/docs/firefly/rados/configuration/osd-config-ref/
+-### http://ceph.com/docs/master/rados/configuration/osd-config-ref/
++### http://ceph.com/docs/giant/rados/configuration/osd-config-ref/
  
      # The path to the OSDs data.
      # You must create the directory when deploying Ceph.
-@@ -282,6 +299,10 @@
-     # (Default: 5)
-     ;osd recovery max active      = 3
- 
-+    # The maximum number of simultaneous scrub operations for a Ceph OSD Daemon.
-+    # Type: 32-bit Int
-+    # (Default: 1)
-+    ;osd max scrubs               = 2
- 
-     # You may add settings for mkcephfs so that it will create and mount
-     # the file system for you. Remove the comment `#` character for
-@@ -303,7 +324,7 @@
-     ## disks.  You can use a file under the osd data dir if need be
-     ## (e.g. /data/$name/journal), but it will be slower than a
-     ## separate disk or partition.
--    # The path to the OSD’s journal. This may be a path to a file or a block
-+    # The path to the OSD's journal. This may be a path to a file or a block
-     # device (such as a partition of an SSD). If it is a file, you must
-     # create the directory to contain it.
-     # We recommend using a drive separate from the osd data drive.
-@@ -311,7 +332,12 @@
-     # Default: /var/lib/ceph/osd/$cluster-$id/journal
-     ;osd journal                  = /var/lib/ceph/osd/$name/journal
+     # You should mount a drive for OSD data at this mount point.
+@@ -338,9 +342,9 @@
+     # Type: Boolean
+     # (Default: false)
+     ;osd check for log corruption = true
  
 -### http://ceph.com/docs/master/rados/configuration/journal-ref/
-+    # Check log files for corruption. Can be computationally expensive.
-+    # Type: Boolean
-+    # (Default: false)
-+    ;osd check for log corruption = true
-+
-+### http://ceph.com/docs/firefly/rados/configuration/journal-ref/
++### http://ceph.com/docs/giant/rados/configuration/journal-ref/
  
      # The size of the journal in megabytes. If this is 0,
      # and the journal is a block device, the entire block device is used.
-@@ -321,28 +347,47 @@
-     # (Default: 5120)
-     # Recommended: Begin with 1GB. Should be at least twice the product
-     # of the expected speed multiplied by "filestore max sync interval".
--    ;osd journal size             = 1000     ; journal size, in megabytes
-+    ;osd journal size             = 2048     ; journal size, in megabytes
- 
-     ## If you want to run the journal on a tmpfs, disable DirectIO
-     # Enables direct i/o to the journal.
--    # Requires journal block align set to true.
-+    # Requires "journal block align" set to "true".
-     # Type: Boolean
-     # Required: Yes when using aio.
+     # Since v0.54, this is ignored if the journal is a block device,
+@@ -364,9 +368,9 @@
+     ;debug osd                    = 20
+     ;debug filestore              = 20
+     ;debug journal                = 20
+ 
+-### http://ceph.com/docs/master/rados/configuration/filestore-config-ref/
++### http://ceph.com/docs/giant/rados/configuration/filestore-config-ref/
+ 
+     # The maximum interval in seconds for synchronizing the filestore.
+     # Type: Double (optional)
+     # (Default: 5)
+@@ -377,14 +381,8 @@
+     # Required: No. Only used for btrfs.
      # (Default: true)
-     ;journal dio                  = false
+     ;filestore btrfs snap        = false
  
--    # Check log files for corruption. Can be computationally expensive.
+-    # Enables the filestore flusher.
 -    # Type: Boolean
+-    # Required: No
 -    # (Default: false)
--    ;osd check for log corruption = true
+-    ;filestore flusher            = true
 -
-     # osd logging to debug osd issues, in order of likelihood of being helpful
-     ;debug ms                     = 1
-     ;debug osd                    = 20
-     ;debug filestore              = 20
-     ;debug journal                = 20
+     # Defines the maximum number of in progress operations the file store
+     # accepts before blocking on queuing new operations.
+     # Type: Integer
+     # Required: No. Minimal impact on performance.
+@@ -392,9 +390,9 @@
+     ;filestore queue max ops      = 500
+ 
+     ## Filestore and OSD settings can be tweak to achieve better performance
+ 
+-### http://ceph.com/docs/master/rados/configuration/filestore-config-ref/#misc
++### http://ceph.com/docs/giant/rados/configuration/filestore-config-ref/#misc
+ 
+     # Min number of files in a subdir before merging into parent NOTE: A negative value means to disable subdir merging
+     # Type: Integer
+     # Required: No
+@@ -425,8 +423,9 @@
+     # Required: No;
+     # (Default: true)
+     ;osd crush update on start    = false
  
-+### http://ceph.com/docs/firefly/rados/configuration/filestore-config-ref/
-+
-+    # The maximum interval in seconds for synchronizing the filestore.
-+    # Type: Double (optional)
-+    # (Default: 5)
-+    ;filestore max sync interval = 5
 +
-+    # Enable snapshots for a btrfs filestore.
-+    # Type: Boolean
-+    # Required: No. Only used for btrfs.
-+    # (Default: true)
-+    ;filestore btrfs snap        = false
- 
-+    # Enables the filestore flusher.
-+    # Type: Boolean
-+    # Required: No
-+    # (Default: false)
-+    ;filestore flusher            = true
-+
-+    # Defines the maximum number of in progress operations the file store
-+    # accepts before blocking on queuing new operations.
-+    # Type: Integer
-+    # Required: No. Minimal impact on performance.
-+    # (Default: 500)
-+    ;filestore queue max ops      = 500
- 
  ;[osd.0]
  ;    host                         = delta
-@@ -362,3 +407,53 @@
- ;[osd.3]
- ;    host                         = eta
- ;    devs                         = /dev/sdy
-+
-+
-+##################
-+## client settings
-+[client]
-+
-+### http://ceph.com/docs/firefly/rbd/rbd-config-ref/
-+
-+    # Enable caching for RADOS Block Device (RBD).
-+    # Type: Boolean
-+    # Required: No
-+    # (Default: false)
-+    rbd cache                  = true
-+
-+    # The RBD cache size in bytes.
-+    # Type: 64-bit Integer
-+    # Required: No
-+    # (Default: 32 MiB)
-+    ;rbd cache size            = 33554432
-+
-+    # The dirty limit in bytes at which the cache triggers write-back.
-+    # If 0, uses write-through caching.
-+    # Type: 64-bit Integer
-+    # Required: No
-+    # Constraint: Must be less than rbd cache size.
-+    # (Default: 24 MiB)
-+    ;rbd cache max dirty       = 25165824
-+
-+    # The dirty target before the cache begins writing data to the data storage.
-+    # Does not block writes to the cache.
-+    # Type: 64-bit Integer
-+    # Required: No
-+    # Constraint: Must be less than rbd cache max dirty.
-+    # (Default: 16 MiB)
-+    ;rbd cache target dirty    = 16777216
-+
-+    # The number of seconds dirty data is in the cache before writeback starts.
-+    # Type: Float
-+    # Required: No
-+    # (Default: 1.0)
-+    ;rbd cache max dirty age   = 1.0
-+
-+    # Start out in write-through mode, and switch to write-back after the
-+    # first flush request is received. Enabling this is a conservative but
-+    # safe setting in case VMs running on rbd are too old to send flushes,
-+    # like the virtio driver in Linux before 2.6.32.
-+    # Type: Boolean
-+    # Required: No
-+    # (Default: false)
-+    ;rbd cache writethrough until flush = false
+ 
+ ;[osd.1]
+@@ -442,9 +441,9 @@
+ ##################
+ ## client settings
+ [client]
+ 
+-### http://ceph.com/docs/master/rbd/rbd-config-ref/
++### http://ceph.com/docs/giant/rbd/rbd-config-ref/
+ 
+     # Enable caching for RADOS Block Device (RBD).
+     # Type: Boolean
+     # Required: No
+@@ -491,9 +490,9 @@
+ ##################
+ ## radosgw client settings
+ [client.radosgw.gateway]
+ 
+-### http://ceph.com/docs/master/radosgw/config-ref/
++### http://ceph.com/docs/giant/radosgw/config-ref/
+ 
+     # Sets the location of the data files for Ceph Object Gateway.
+     # You must create the directory when deploying Ceph.
+     # We do not recommend changing the default.
diff --git a/debian/patches/series b/debian/patches/series
index 6c2bef9..48ad0fd 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,19 +1,5 @@
 ## Backported / Upstream
-firefly-latest.patch
-bug-8342.patch
-bug-8624a.patch
-bug-8624b.patch
-bug-8821.patch
-bug-9341.patch
-p2139.patch
-client-sleep1.patch
-client-sleep2.patch
-client-sleep3.patch
 sleep-recover.patch
-backfill-prio.patch
-bash-completion.patch
-rbdmap1-mount.patch
-rbdmap2-hooks.patch
 
 ## Debian
 rbdmap3-lazyumount.patch
diff --git a/debian/patches/sleep-recover.patch b/debian/patches/sleep-recover.patch
index bf89722..327db50 100644
--- a/debian/patches/sleep-recover.patch
+++ b/debian/patches/sleep-recover.patch
@@ -6,7 +6,7 @@ Description: fix fuse-client hang after wake-up from suspend.
 
 --- a/src/client/Client.cc
 +++ b/src/client/Client.cc
-@@ -9048,8 +9048,9 @@
+@@ -9325,8 +9325,9 @@
  
  	case MetaSession::STATE_OPEN:
  	  ldout(cct, 1) << "reset from mds we were open; mark session as stale" << dendl;
diff --git a/debian/rules b/debian/rules
index b3b0ccb..6838203 100755
--- a/debian/rules
+++ b/debian/rules
@@ -18,6 +18,9 @@ extraopts += --disable-silent-rules
 extraopts += --with-ocf --with-rest-bench --with-nss
 extraopts += --with-debug
 extraopts += --enable-cephfs-java
+extraopts += --with-babeltrace
+## do not build with lttng just yet, see #765842.
+#extraopts += --with-lttng
 
 ifeq ($(DEB_HOST_ARCH), armel)
   # armel supports ARMv4t or above instructions sets.
@@ -87,6 +90,7 @@ override_dh_strip:
 	dh_strip -pceph-common --dbg-package=ceph-common-dbg
 	dh_strip -pceph-fs-common --dbg-package=ceph-fs-common-dbg
 	dh_strip -plibrados2 --dbg-package=librados2-dbg
+	dh_strip -plibradosstriper1 --dbg-package=libradosstriper1-dbg
 	dh_strip -plibrbd1 --dbg-package=librbd1-dbg
 	dh_strip -plibcephfs1 --dbg-package=libcephfs1-dbg
 	dh_strip -pradosgw --dbg-package=radosgw-dbg

-- 
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