Skip to content
Commits on Source (43)
*~
*.co
*.diff
*.deb
*.tar.gz
*.tar.bz2
*.dsc
*.changes
*.gcda
*.gcov
*.gcno
*.generated.dot
*.swp
*.swo
*.tmp
*.orig
*.patch
!debian/patches/*.patch
*.rej
*.rpm
*.pyc
ceph.spec
cscope.*
gmon.out
py-compile
# Files generated by crashed programs
vgcore.*
core
*.core
# Files generated by running tests
*.log
/src/td
# alpine abuild things
.abuild/
alpine/APKBUILD
# specific local dir files
/build-doc
/tags
# where is this from?
web/*.html
# dir from coverity tools
cov-int/
# gtags(1) generated files
GPATH
GRTAGS
GSYMS
GTAGS
/examples/librados/.libs/
/examples/librados/librados_hello_world
/examples/librados/librados_hello_world_c
# common cmake build dir
/build
# editor backup files etc.
\#*\#
cmake_minimum_required(VERSION 2.8.11)
project(ceph)
set(VERSION 12.2.11)
set(VERSION 12.2.12)
if(POLICY CMP0046)
# Tweak policies (this one disables "missing" dependency warning)
......
>= 12.2.11
----------
12.2.12
-------
* In 12.2.9 and earlier releases, keyring caps were not checked for validity,
so the caps string could be anything. As of 12.2.10, caps strings are
validated and providing a keyring with an invalid caps string to, e.g.,
"ceph auth add" will result in an error.
12.2.11
-------
* `cephfs-journal-tool` makes rank argument (--rank) mandatory. Rank is
of format `filesystem:rank`, where `filesystem` is the cephfs filesystem
and `rank` is the MDS rank on which the operation is to be executed. To
......@@ -8,6 +15,26 @@
suffixed dump files. Importing journal information from dump files is
disallowed if operation is targetted for all ranks.
* The MDS cache trimming is now throttled. Dropping the MDS cache
via the `ceph tell mds.<foo> cache drop` command or large reductions in the
cache size will no longer cause service unavailability.
* The CephFS MDS behavior with recalling caps has been significantly improved
to not attempt recalling too many caps at once, leading to instability.
MDS with a large cache (64GB+) should be more stable.
* MDS now provides a config option "mds_max_caps_per_client" (default: 1M) to
limit the number of caps a client session may hold. Long running client
sessions with a large number of caps have been a source of instability in the
MDS when all of these caps need to be processed during certain session
events. It is recommended to not unnecessarily increase this value.
* The MDS config mds_recall_state_timeout has been removed. Late client recall
warnings are now generated based on the number of caps the MDS has recalled
which have not been released. The new configs mds_recall_warning_threshold
(default: 32K) and mds_recall_warning_decay_rate (default: 60s) sets the
threshold for this warning.
>= 12.1.2
---------
* When running 'df' on a CephFS filesystem comprising exactly one data pool,
......
Sphinx == 1.6.3
-e git+https://github.com/ceph/sphinx-ditaa.git@py3#egg=sphinx-ditaa
-e git+https://github.com/michaeljones/breathe#egg=breathe
breathe == 4.11.1
# Contributor: John Coyle <dx9err@gmail.com>
# Maintainer: John Coyle <dx9err@gmail.com>
pkgname=ceph
pkgver=12.2.11
pkgver=12.2.12
pkgrel=0
pkgdesc="Ceph is a distributed object store and file system"
pkgusers="ceph"
......@@ -63,7 +63,7 @@ makedepends="
xmlstarlet
yasm
"
source="ceph-12.2.11.tar.bz2"
source="ceph-12.2.12.tar.bz2"
subpackages="
$pkgname-base
$pkgname-common
......@@ -116,7 +116,7 @@ _sysconfdir=/etc
_udevrulesdir=/etc/udev/rules.d
_python_sitelib=/usr/lib/python2.7/site-packages
builddir=$srcdir/ceph-12.2.11
builddir=$srcdir/ceph-12.2.12
build() {
export CEPH_BUILD_VIRTUALENV=$builddir
......
......@@ -61,7 +61,7 @@
# main package definition
#################################################################################
Name: ceph
Version: 12.2.11
Version: 12.2.12
Release: 0%{?dist}
%if 0%{?fedora} || 0%{?rhel}
Epoch: 2
......@@ -77,7 +77,7 @@ License: LGPL-2.1 and CC-BY-SA-3.0 and GPL-2.0 and BSL-1.0 and BSD-3-Clause and
Group: System/Filesystems
%endif
URL: http://ceph.com/
Source0: http://ceph.com/download/ceph-12.2.11.tar.bz2
Source0: http://ceph.com/download/ceph-12.2.12.tar.bz2
%if 0%{?suse_version}
%if 0%{?is_opensuse}
ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
......@@ -382,7 +382,7 @@ Summary: Ceph daemon for mirroring RBD images
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
%description -n rbd-mirror
Daemon for mirroring RBD images between Ceph clusters, streaming
......@@ -403,7 +403,7 @@ Summary: Rados REST gateway
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
%if 0%{with selinux}
Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
%endif
......@@ -788,7 +788,7 @@ python-rbd, python-rgw or python-cephfs instead.
# common
#################################################################################
%prep
%autosetup -p1 -n ceph-12.2.11
%autosetup -p1 -n ceph-12.2.12
%build
%if 0%{with cephfs_java}
......
......@@ -382,7 +382,7 @@ Summary: Ceph daemon for mirroring RBD images
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
Requires: librados2 = %{_epoch_prefix}%{version}-%{release}
%description -n rbd-mirror
Daemon for mirroring RBD images between Ceph clusters, streaming
......@@ -403,7 +403,7 @@ Summary: Rados REST gateway
%if 0%{?suse_version}
Group: System/Filesystems
%endif
Requires: ceph-common = %{_epoch_prefix}%{version}-%{release}
Requires: ceph-base = %{_epoch_prefix}%{version}-%{release}
%if 0%{with selinux}
Requires: ceph-selinux = %{_epoch_prefix}%{version}-%{release}
%endif
......
include:
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
- https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
variables:
RELEASE: 'buster'
SALSA_CI_DISABLE_APTLY: 0
SALSA_CI_DISABLE_AUTOPKGTEST: 0
SALSA_CI_DISABLE_BLHC: 0
SALSA_CI_DISABLE_LINTIAN: 0
SALSA_CI_DISABLE_PIUPARTS: 0
SALSA_CI_DISABLE_REPROTEST: 1
SALSA_CI_DISABLE_BUILD_PACKAGE_ALL: 1
SALSA_CI_DISABLE_BUILD_PACKAGE_ANY: 1
ceph (12.2.12+dfsg-1~1.gbp379f22) unstable; urgency=medium
** SNAPSHOT build @379f227cd51cef411983a30c7d083411fe0bd123 **
[ Bernd Zeimetz ]
* [8fcba48] Merge branch 'luminous/unstable' into 'luminous/unstable'
Install ceph-volume@.service into ceph-osd.
See merge request ceph-team/ceph!2
* [06d1b80] Merge tag 'upstream/12.2.12' into debian/buster.
Upstream version 12.2.12
* [99ad7c5] Refreshing patches.
Also dropping radosgw-linkage-without-beast.patch which
is shipped with 12.2.12
[ James Page ]
* [0168aa7] Cherry pick inflight fix to ensure that required wal and db devices are present before activating OSD's (LP: #1828617).
* [0fa8b9d] d/p/civetweb-755-1.8-somaxconn-configurable*.patch: Backport changes to civetweb to allow tuning of SOMAXCONN in Ceph RADOS Gateway deployments (LP: #1838109).
* [fe496c1] d/p/rgw-gc-use-aio.patch: Cherry pick fix to switch to using AIO for garbage collection of objects in the Ceph RADOS Gateway (LP: #1838858).
[ Eric Desrochers ]
* [8f43b76] prevent ceph.target restart while and after pkg upgrade
(LP: #1840347)
[ James Page ]
* [e2f874a] SECURITY UPDATE: RADOS gateway remote denial of service
- d/p/CVE-2019-10222.patch: rgw: asio: check the remote endpoint
before processing requests.
- CVE-2019-10222
* [df64c77] Refresh lvs patch from upstream
[ Bernd Zeimetz ]
* [379f227] Updating gbp.conf for new branch layout
-- Bernd Zeimetz <bzed@debian.org> Sat, 04 Jan 2020 11:48:48 +0100
ceph (12.2.11+dfsg1-2.1) unstable; urgency=medium
* Non-maintainer upload.
......
src/rocksdb/util/build_version.cc
src/pybind/*.pyc
src/test/pybind/*.pyc
src/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.sln
src/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock.vcproj
src/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_config.vsprops
src/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_main.vcproj
src/rapidjson/thirdparty/gtest/googlemock/msvc/2005/gmock_test.vcproj
src/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.sln
src/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock.vcxproj
src/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_config.props
src/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_main.vcxproj
src/rapidjson/thirdparty/gtest/googlemock/msvc/2010/gmock_test.vcxproj
src/rapidjson/thirdparty/gtest/googletest/codegear/gtest.cbproj
src/rapidjson/thirdparty/gtest/googletest/codegear/gtest.groupproj
src/rapidjson/thirdparty/gtest/googletest/codegear/gtest_all.cc
src/rapidjson/thirdparty/gtest/googletest/codegear/gtest_link.cc
src/rapidjson/thirdparty/gtest/googletest/codegear/gtest_main.cbproj
src/rapidjson/thirdparty/gtest/googletest/codegear/gtest_unittest.cbproj
src/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.sln
src/rapidjson/thirdparty/gtest/googletest/msvc/gtest-md.vcproj
src/rapidjson/thirdparty/gtest/googletest/msvc/gtest.sln
src/rapidjson/thirdparty/gtest/googletest/msvc/gtest.vcproj
src/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main-md.vcproj
src/rapidjson/thirdparty/gtest/googletest/msvc/gtest_main.vcproj
src/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test-md.vcproj
src/rapidjson/thirdparty/gtest/googletest/msvc/gtest_prod_test.vcproj
src/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest-md.vcproj
src/rapidjson/thirdparty/gtest/googletest/msvc/gtest_unittest.vcproj
[DEFAULT]
debian-branch = luminous/unstable
debian-branch = debian/buster
upstream-branch = upstream-buster
pristine-tar = True
[import-orig]
......
......@@ -20,8 +20,6 @@ fbshipit-source-id: a75a7b8f7b7a42fd6273489ada405f14c6be196a
3 files changed, 103 insertions(+), 31 deletions(-)
create mode 100644 util/core_local.h
diff --git a/src/rocksdb/util/concurrent_arena.cc b/src/rocksdb/util/concurrent_arena.cc
index df87011..a0feb93 100644
--- a/src/rocksdb/util/concurrent_arena.cc
+++ b/src/rocksdb/util/concurrent_arena.cc
@@ -16,35 +16,24 @@
......@@ -67,8 +65,6 @@ index df87011..a0feb93 100644
}
} // namespace rocksdb
diff --git a/src/rocksdb/util/concurrent_arena.h b/src/rocksdb/util/concurrent_arena.h
index 3a20bb6..a6db1e9 100644
--- a/src/rocksdb/util/concurrent_arena.h
+++ b/src/rocksdb/util/concurrent_arena.h
@@ -14,6 +14,7 @@
......@@ -79,7 +75,7 @@ index 3a20bb6..a6db1e9 100644
#include "util/mutexlock.h"
#include "util/thread_local.h"
@@ -63,9 +64,7 @@ class ConcurrentArena : public Allocator {
@@ -63,9 +64,7 @@ class ConcurrentArena : public Allocator
size_t ApproximateMemoryUsage() const {
std::unique_lock<SpinMutex> lock(arena_mutex_, std::defer_lock);
......@@ -90,7 +86,7 @@ index 3a20bb6..a6db1e9 100644
return arena_.ApproximateMemoryUsage() - ShardAllocatedAndUnused();
}
@@ -95,18 +94,16 @@ class ConcurrentArena : public Allocator {
@@ -95,18 +94,16 @@ class ConcurrentArena : public Allocator
};
#ifdef ROCKSDB_SUPPORT_THREAD_LOCAL
......@@ -112,7 +108,7 @@ index 3a20bb6..a6db1e9 100644
Arena arena_;
mutable SpinMutex arena_mutex_;
@@ -120,15 +117,16 @@ class ConcurrentArena : public Allocator {
@@ -120,15 +117,16 @@ class ConcurrentArena : public Allocator
size_t ShardAllocatedAndUnused() const {
size_t total = 0;
......@@ -132,7 +128,7 @@ index 3a20bb6..a6db1e9 100644
// Go directly to the arena if the allocation is too large, or if
// we've never needed to Repick() and the arena mutex is available
@@ -137,7 +135,8 @@ class ConcurrentArena : public Allocator {
@@ -137,7 +135,8 @@ class ConcurrentArena : public Allocator
std::unique_lock<SpinMutex> arena_lock(arena_mutex_, std::defer_lock);
if (bytes > shard_block_size_ / 4 || force_arena ||
((cpu = tls_cpuid) == 0 &&
......@@ -142,7 +138,7 @@ index 3a20bb6..a6db1e9 100644
arena_lock.try_lock())) {
if (!arena_lock.owns_lock()) {
arena_lock.lock();
@@ -148,7 +147,7 @@ class ConcurrentArena : public Allocator {
@@ -148,7 +147,7 @@ class ConcurrentArena : public Allocator
}
// pick a shard from which to allocate
......@@ -151,9 +147,6 @@ index 3a20bb6..a6db1e9 100644
if (!s->mutex.try_lock()) {
s = Repick();
s->mutex.lock();
diff --git a/src/rocksdb/util/core_local.h b/src/rocksdb/util/core_local.h
new file mode 100644
index 0000000..806584d
--- /dev/null
+++ b/src/rocksdb/util/core_local.h
@@ -0,0 +1,84 @@
......@@ -241,6 +234,3 @@ index 0000000..806584d
+}
+
+} // namespace rocksdb
--
2.7.4
......@@ -19,8 +19,6 @@ fbshipit-source-id: f3309e77526ac9612c632bf93a62d99757af9a29
util/core_local.h | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/rocksdb/util/core_local.h b/src/rocksdb/util/core_local.h
index 806584d..7515c54 100644
--- a/src/rocksdb/util/core_local.h
+++ b/src/rocksdb/util/core_local.h
@@ -38,23 +38,23 @@ class CoreLocalArray {
......@@ -52,7 +50,7 @@ index 806584d..7515c54 100644
}
template<typename T>
@@ -77,7 +77,7 @@ std::pair<T*, size_t> CoreLocalArray<T>::AccessElementAndIndex() const {
@@ -77,7 +77,7 @@ std::pair<T*, size_t> CoreLocalArray<T>:
template<typename T>
T* CoreLocalArray<T>::AccessAtCore(size_t core_idx) const {
......@@ -61,6 +59,3 @@ index 806584d..7515c54 100644
return &data_[core_idx];
}
--
2.7.4
......@@ -20,8 +20,6 @@ fbshipit-source-id: 7d4d165b4a91d8110f0409d113d1be91f22d31a9
util/core_local.h | 21 ++++----
4 files changed, 78 insertions(+), 187 deletions(-)
diff --git a/src/rocksdb/HISTORY.md b/src/rocksdb/HISTORY.md
index 7b51d37..4cde9e2 100644
--- a/src/rocksdb/HISTORY.md
+++ b/src/rocksdb/HISTORY.md
@@ -1,6 +1,10 @@
......@@ -35,11 +33,9 @@ index 7b51d37..4cde9e2 100644
* DB::ResetStats() to reset internal stats.
* Statistics::Reset() to reset user stats.
* ldb add option --try_load_options, which will open DB with its own option file.
diff --git a/src/rocksdb/monitoring/statistics.cc b/src/rocksdb/monitoring/statistics.cc
index fb5634f..3a69a13 100644
--- a/src/rocksdb/monitoring/statistics.cc
+++ b/src/rocksdb/monitoring/statistics.cc
@@ -21,13 +21,9 @@ std::shared_ptr<Statistics> CreateDBStatistics() {
@@ -21,13 +21,9 @@ std::shared_ptr<Statistics> CreateDBStat
return std::make_shared<StatisticsImpl>(nullptr, false);
}
......@@ -56,7 +52,7 @@ index fb5634f..3a69a13 100644
StatisticsImpl::~StatisticsImpl() {}
@@ -41,79 +37,36 @@ uint64_t StatisticsImpl::getTickerCountLocked(uint32_t tickerType) const {
@@ -41,79 +37,36 @@ uint64_t StatisticsImpl::getTickerCountL
enable_internal_stats_ ?
tickerType < INTERNAL_TICKER_ENUM_MAX :
tickerType < TICKER_ENUM_MAX);
......@@ -150,7 +146,7 @@ index fb5634f..3a69a13 100644
}
void StatisticsImpl::setTickerCount(uint32_t tickerType, uint64_t count) {
@@ -129,14 +82,12 @@ void StatisticsImpl::setTickerCount(uint32_t tickerType, uint64_t count) {
@@ -129,14 +82,12 @@ void StatisticsImpl::setTickerCount(uint
void StatisticsImpl::setTickerCountLocked(uint32_t tickerType, uint64_t count) {
assert(enable_internal_stats_ ? tickerType < INTERNAL_TICKER_ENUM_MAX
: tickerType < TICKER_ENUM_MAX);
......@@ -171,7 +167,7 @@ index fb5634f..3a69a13 100644
}
}
@@ -146,16 +97,10 @@ uint64_t StatisticsImpl::getAndResetTickerCount(uint32_t tickerType) {
@@ -146,16 +97,10 @@ uint64_t StatisticsImpl::getAndResetTick
MutexLock lock(&aggregate_lock_);
assert(enable_internal_stats_ ? tickerType < INTERNAL_TICKER_ENUM_MAX
: tickerType < TICKER_ENUM_MAX);
......@@ -192,7 +188,7 @@ index fb5634f..3a69a13 100644
}
}
if (stats_ && tickerType < TICKER_ENUM_MAX) {
@@ -169,10 +114,8 @@ void StatisticsImpl::recordTick(uint32_t tickerType, uint64_t count) {
@@ -169,10 +114,8 @@ void StatisticsImpl::recordTick(uint32_t
enable_internal_stats_ ?
tickerType < INTERNAL_TICKER_ENUM_MAX :
tickerType < TICKER_ENUM_MAX);
......@@ -205,7 +201,7 @@ index fb5634f..3a69a13 100644
if (stats_ && tickerType < TICKER_ENUM_MAX) {
stats_->recordTick(tickerType, count);
}
@@ -183,9 +126,7 @@ void StatisticsImpl::measureTime(uint32_t histogramType, uint64_t value) {
@@ -183,9 +126,7 @@ void StatisticsImpl::measureTime(uint32_
enable_internal_stats_ ?
histogramType < INTERNAL_HISTOGRAM_ENUM_MAX :
histogramType < HISTOGRAM_ENUM_MAX);
......@@ -231,7 +227,7 @@ index fb5634f..3a69a13 100644
}
return Status::OK();
}
@@ -229,7 +168,7 @@ std::string StatisticsImpl::ToString() const {
@@ -229,7 +168,7 @@ std::string StatisticsImpl::ToString() c
if (h.first < HISTOGRAM_ENUM_MAX || enable_internal_stats_) {
char buffer[kTmpStrBufferSize];
HistogramData hData;
......@@ -240,8 +236,6 @@ index fb5634f..3a69a13 100644
snprintf(
buffer, kTmpStrBufferSize,
"%s statistics Percentiles :=> 50 : %f 95 : %f 99 : %f 100 : %f\n",
diff --git a/src/rocksdb/monitoring/statistics.h b/src/rocksdb/monitoring/statistics.h
index 32b7036..96b31a3 100644
--- a/src/rocksdb/monitoring/statistics.h
+++ b/src/rocksdb/monitoring/statistics.h
@@ -13,8 +13,14 @@
......@@ -260,7 +254,7 @@ index 32b7036..96b31a3 100644
namespace rocksdb {
@@ -50,97 +56,38 @@ class StatisticsImpl : public Statistics {
@@ -50,97 +56,38 @@ class StatisticsImpl : public Statistics
virtual bool HistEnabledForType(uint32_t type) const override;
private:
......@@ -284,6 +278,18 @@ index 32b7036..96b31a3 100644
- ThreadTickerInfo(uint_fast64_t _value,
- std::atomic_uint_fast64_t* _merged_sum)
- : value(_value), merged_sum(_merged_sum) {}
- };
-
- // Holds data maintained by each thread for implementing histograms.
- struct ThreadHistogramInfo {
- HistogramImpl value;
- // During teardown, value will be merged into *merged_hist while holding
- // *merge_lock, which also syncs with the merges necessary for reads.
- HistogramImpl* merged_hist;
- port::Mutex* merge_lock;
-
- ThreadHistogramInfo(HistogramImpl* _merged_hist, port::Mutex* _merge_lock)
- : value(), merged_hist(_merged_hist), merge_lock(_merge_lock) {}
+ // The ticker/histogram data are stored in this structure, which we will store
+ // per-core. It is cache-aligned, so tickers/histograms belonging to different
+ // cores can never share the same cache line.
......@@ -300,19 +306,6 @@ index 32b7036..96b31a3 100644
+ CACHE_LINE_SIZE] ROCKSDB_FIELD_UNUSED;
};
- // Holds data maintained by each thread for implementing histograms.
- struct ThreadHistogramInfo {
- HistogramImpl value;
- // During teardown, value will be merged into *merged_hist while holding
- // *merge_lock, which also syncs with the merges necessary for reads.
- HistogramImpl* merged_hist;
- port::Mutex* merge_lock;
+ static_assert(sizeof(StatisticsData) % 64 == 0, "Expected 64-byte aligned");
- ThreadHistogramInfo(HistogramImpl* _merged_hist, port::Mutex* _merge_lock)
- : value(), merged_hist(_merged_hist), merge_lock(_merge_lock) {}
- };
-
- // Holds global data for implementing tickers.
- struct TickerInfo {
- TickerInfo()
......@@ -331,7 +324,8 @@ index 32b7036..96b31a3 100644
- delete info_ptr;
- }
- };
-
+ static_assert(sizeof(StatisticsData) % 64 == 0, "Expected 64-byte aligned");
- // Holds global data for implementing histograms.
- struct HistogramInfo {
- HistogramInfo()
......@@ -380,8 +374,6 @@ index 32b7036..96b31a3 100644
};
// Utility functions
diff --git a/src/rocksdb/util/core_local.h b/src/rocksdb/util/core_local.h
index 7515c54..4239df6 100644
--- a/src/rocksdb/util/core_local.h
+++ b/src/rocksdb/util/core_local.h
@@ -7,19 +7,20 @@
......@@ -440,7 +432,7 @@ index 7515c54..4239df6 100644
std::pair<T*, size_t> CoreLocalArray<T>::AccessElementAndIndex() const {
int cpuid = port::PhysicalCoreID();
size_t core_idx;
@@ -75,7 +76,7 @@ std::pair<T*, size_t> CoreLocalArray<T>::AccessElementAndIndex() const {
@@ -75,7 +76,7 @@ std::pair<T*, size_t> CoreLocalArray<T>:
return {AccessAtCore(core_idx), core_idx};
}
......@@ -449,6 +441,3 @@ index 7515c54..4239df6 100644
T* CoreLocalArray<T>::AccessAtCore(size_t core_idx) const {
assert(core_idx < static_cast<size_t>(1) << size_shift_);
return &data_[core_idx];
--
2.7.4
......@@ -34,7 +34,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
--- a/doc/man/8/ceph-bluestore-tool.rst
+++ b/doc/man/8/ceph-bluestore-tool.rst
@@ -97,7 +97,7 @@
@@ -97,7 +97,7 @@ device. You can dump the contents of th
The main device will have a lot of metadata, including information
that used to be stored in small files in the OSD data directory. The
......@@ -45,7 +45,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
OSD directory priming
--- a/doc/man/8/ceph-detect-init.rst
+++ b/doc/man/8/ceph-detect-init.rst
@@ -34,7 +34,7 @@
@@ -34,7 +34,7 @@ Options
.. option:: --default INIT
......@@ -56,7 +56,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
.. option:: --verbose
--- a/qa/tasks/ceph.py
+++ b/qa/tasks/ceph.py
@@ -257,7 +257,7 @@
@@ -257,7 +257,7 @@ def assign_devs(roles, devs):
def valgrind_post(ctx, config):
"""
After the tests run, look throught all the valgrind logs. Exceptions are raised
......@@ -65,7 +65,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
the logs.
:param ctx: Context
@@ -398,7 +398,7 @@
@@ -398,7 +398,7 @@ def cluster(ctx, config):
Mkfs mon nodes.
On exit:
......@@ -76,7 +76,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
Cleanup the keyring setup, and remove all monitor map and data files left over.
--- a/qa/tasks/mds_thrash.py
+++ b/qa/tasks/mds_thrash.py
@@ -230,7 +230,7 @@
@@ -230,7 +230,7 @@ class MDSThrasher(Greenlet):
self.do_thrash()
except Exception as e:
# Log exceptions here so we get the full backtrace (gevent loses them).
......@@ -87,7 +87,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
# File "/home/teuthworker/src/git.ceph.com_git_teuthology_master/virtualenv/local/lib/python2.7/site-packages/gevent/hub.py", line 558, in handle_error
--- a/src/cls/rgw/cls_rgw.cc
+++ b/src/cls/rgw/cls_rgw.cc
@@ -2532,7 +2532,7 @@
@@ -2532,7 +2532,7 @@ static int rgw_bi_list_op(cls_method_con
bool more;
int ret = list_plain_entries(hctx, op.name, op.marker, max, &op_ret.entries, &more);
if (ret < 0) {
......@@ -96,7 +96,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
return ret;
}
int count = ret;
@@ -2542,7 +2542,7 @@
@@ -2542,7 +2542,7 @@ static int rgw_bi_list_op(cls_method_con
if (!more) {
ret = list_instance_entries(hctx, op.name, op.marker, max - count, &op_ret.entries, &more);
if (ret < 0) {
......@@ -105,7 +105,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
return ret;
}
@@ -2552,7 +2552,7 @@
@@ -2552,7 +2552,7 @@ static int rgw_bi_list_op(cls_method_con
if (!more) {
ret = list_olh_entries(hctx, op.name, op.marker, max - count, &op_ret.entries, &more);
if (ret < 0) {
......@@ -116,7 +116,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
--- a/src/common/legacy_config_opts.h
+++ b/src/common/legacy_config_opts.h
@@ -1558,7 +1558,7 @@
@@ -1558,7 +1558,7 @@ OPTION(throttler_perf_counter, OPT_BOOL)
/* The following are tunables for torrent data */
OPTION(rgw_torrent_flag, OPT_BOOL) // produce torrent function flag
......@@ -127,7 +127,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
OPTION(rgw_torrent_encoding, OPT_STR) // torrent field encoding
--- a/src/common/options.cc
+++ b/src/common/options.cc
@@ -5186,7 +5186,7 @@
@@ -5206,7 +5206,7 @@ std::vector<Option> get_rgw_options() {
.set_default(0)
.set_description("HTTP return code override for object creation")
.set_long_description(
......@@ -136,7 +136,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
"object creation."),
Option("rgw_resolve_cname", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
@@ -5494,7 +5494,7 @@
@@ -5514,7 +5514,7 @@ std::vector<Option> get_rgw_options() {
.set_description("Length of time to aggregate metadata changes")
.set_long_description(
"Length of time (in milliseconds) in which the master zone aggregates all the "
......@@ -145,7 +145,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
"zones."),
Option("rgw_run_sync_thread", Option::TYPE_BOOL, Option::LEVEL_ADVANCED)
@@ -5639,7 +5639,7 @@
@@ -5659,7 +5659,7 @@ std::vector<Option> get_rgw_options() {
Option("rgw_torrent_tracker", Option::TYPE_STR, Option::LEVEL_ADVANCED)
.set_default("")
......@@ -156,7 +156,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
.set_default("")
--- a/src/java/native/libcephfs_jni.cc
+++ b/src/java/native/libcephfs_jni.cc
@@ -265,7 +265,7 @@
@@ -265,7 +265,7 @@ static void handle_error(JNIEnv *env, in
/*
* Cast a jlong to ceph_mount_info. Each JNI function is expected to pass in
* the class instance variable instance_ptr. Passing a parameter is faster
......@@ -167,7 +167,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
{
--- a/src/journal/JournalPlayer.cc
+++ b/src/journal/JournalPlayer.cc
@@ -502,7 +502,7 @@
@@ -502,7 +502,7 @@ void JournalPlayer::prune_tag(uint64_t t
// avoid watch delay when pruning stale tags from journal objects
if (pruned) {
......@@ -178,7 +178,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
ObjectPlayerPtr object_player(player_pair.second);
--- a/src/librbd/image/OpenRequest.cc
+++ b/src/librbd/image/OpenRequest.cc
@@ -181,7 +181,7 @@
@@ -181,7 +181,7 @@ Context *OpenRequest<I>::handle_v2_get_n
*result = cls_client::dir_get_name_finish(&it, &m_image_ctx->name);
}
if (*result < 0 && *result != -ENOENT) {
......@@ -187,7 +187,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
<< cpp_strerror(*result) << dendl;
send_close_image(*result);
} else if (*result == -ENOENT) {
@@ -231,7 +231,7 @@
@@ -231,7 +231,7 @@ Context *OpenRequest<I>::handle_v2_get_n
ldout(cct, 5) << "failed to retrieve name for image id "
<< m_image_ctx->id << dendl;
} else {
......@@ -196,7 +196,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
<< cpp_strerror(*result) << dendl;
}
send_close_image(*result);
@@ -273,7 +273,7 @@
@@ -273,7 +273,7 @@ Context *OpenRequest<I>::handle_v2_get_i
&it, &m_image_ctx->object_prefix, &m_image_ctx->order);
}
if (*result < 0) {
......@@ -207,7 +207,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
} else {
--- a/src/librbd/internal.cc
+++ b/src/librbd/internal.cc
@@ -1354,7 +1354,7 @@
@@ -1354,7 +1354,7 @@ int validate_pool(IoCtx &io_ctx, CephCon
r = cls_client::dir_get_id(&io_ctx, RBD_DIRECTORY, image_name, &image_id);
if (r < 0) {
if (r != -ENOENT) {
......@@ -218,7 +218,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
return r;
--- a/src/librbd/mirror/DisableRequest.cc
+++ b/src/librbd/mirror/DisableRequest.cc
@@ -72,7 +72,7 @@
@@ -72,7 +72,7 @@ Context *DisableRequest<I>::handle_get_m
ldout(cct, 5) << this << " " << __func__
<< ": mirroring is not supported by OSD" << dendl;
} else {
......@@ -229,7 +229,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
return m_on_finish;
--- a/src/librbd/mirror/EnableRequest.cc
+++ b/src/librbd/mirror/EnableRequest.cc
@@ -108,7 +108,7 @@
@@ -108,7 +108,7 @@ Context *EnableRequest<I>::handle_get_mi
}
if (*result != -ENOENT) {
......@@ -240,7 +240,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
}
--- a/src/mds/CDir.cc
+++ b/src/mds/CDir.cc
@@ -1740,7 +1740,7 @@
@@ -1740,7 +1740,7 @@ CDentry *CDir::_load_dentry(
dn->link_remote(dn->get_linkage(), in);
dout(12) << "_fetched got remote link " << ino << " which we have " << *in << dendl;
} else {
......@@ -251,7 +251,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
}
--- a/src/msg/async/PosixStack.cc
+++ b/src/msg/async/PosixStack.cc
@@ -75,7 +75,7 @@
@@ -75,7 +75,7 @@ class PosixConnectedSocketImpl final : p
}
// return the sent length
......@@ -262,7 +262,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
size_t sent = 0;
--- a/src/os/bluestore/BlueStore.cc
+++ b/src/os/bluestore/BlueStore.cc
@@ -3856,7 +3856,7 @@
@@ -3856,7 +3856,7 @@ void BlueStore::_set_compression()
if (comp_mode == Compressor::COMP_NONE) {
dout(10) << __func__ << " compression mode set to 'none', "
......@@ -273,7 +273,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
--- a/src/os/bluestore/NVMEDevice.cc
+++ b/src/os/bluestore/NVMEDevice.cc
@@ -628,7 +628,7 @@
@@ -628,7 +628,7 @@ class NVMEManager {
// only support one device per osd now!
assert(shared_driver_datas.empty());
......@@ -284,7 +284,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
}
--- a/src/os/bluestore/bluestore_tool.cc
+++ b/src/os/bluestore/bluestore_tool.cc
@@ -236,7 +236,7 @@
@@ -236,7 +236,7 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE);
}
if (devs.empty()) {
......@@ -293,7 +293,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
for (auto fn : {"block", "block.wal", "block.db"}) {
string p = path + "/" + fn;
struct stat st;
@@ -255,7 +255,7 @@
@@ -255,7 +255,7 @@ int main(int argc, char **argv)
cerr << "must specify out-dir to export bluefs" << std::endl;
exit(EXIT_FAILURE);
}
......@@ -302,7 +302,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
for (auto fn : {"block", "block.wal", "block.db"}) {
string p = path + "/" + fn;
struct stat st;
@@ -269,7 +269,7 @@
@@ -269,7 +269,7 @@ int main(int argc, char **argv)
cerr << "must specify bluestore path" << std::endl;
exit(EXIT_FAILURE);
}
......@@ -313,7 +313,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
struct stat st;
--- a/src/pybind/rados/rados.pyx
+++ b/src/pybind/rados/rados.pyx
@@ -3312,7 +3312,7 @@
@@ -3312,7 +3312,7 @@ returned %d, but should return zero on s
@requires(('write_op', WriteOp), ('oid', str_type), ('mtime', opt(int)), ('flags', opt(int)))
def operate_write_op(self, write_op, oid, mtime=0, flags=LIBRADOS_OPERATION_NOFLAG):
"""
......@@ -322,7 +322,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
:para write_op: write operation object
:type write_op: WriteOp
:para oid: object name
@@ -3338,7 +3338,7 @@
@@ -3338,7 +3338,7 @@ returned %d, but should return zero on s
@requires(('write_op', WriteOp), ('oid', str_type), ('oncomplete', opt(Callable)), ('onsafe', opt(Callable)), ('mtime', opt(int)), ('flags', opt(int)))
def operate_aio_write_op(self, write_op, oid, oncomplete=None, onsafe=None, mtime=0, flags=LIBRADOS_OPERATION_NOFLAG):
"""
......@@ -331,7 +331,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
:para write_op: write operation object
:type write_op: WriteOp
:para oid: object name
@@ -3380,7 +3380,7 @@
@@ -3380,7 +3380,7 @@ returned %d, but should return zero on s
@requires(('read_op', ReadOp), ('oid', str_type), ('flag', opt(int)))
def operate_read_op(self, read_op, oid, flag=LIBRADOS_OPERATION_NOFLAG):
"""
......@@ -340,7 +340,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
:para read_op: read operation object
:type read_op: ReadOp
:para oid: object name
@@ -3402,7 +3402,7 @@
@@ -3402,7 +3402,7 @@ returned %d, but should return zero on s
@requires(('read_op', ReadOp), ('oid', str_type), ('oncomplete', opt(Callable)), ('onsafe', opt(Callable)), ('flag', opt(int)))
def operate_aio_read_op(self, read_op, oid, oncomplete=None, onsafe=None, flag=LIBRADOS_OPERATION_NOFLAG):
"""
......@@ -351,7 +351,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
:para oid: object name
--- a/src/pybind/rbd/rbd.pyx
+++ b/src/pybind/rbd/rbd.pyx
@@ -2659,7 +2659,7 @@
@@ -2659,7 +2659,7 @@ written." % (self.name, ret, length))
def aio_flush(self, oncomplete):
"""
......@@ -362,7 +362,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
--- a/src/test/objectstore/store_test.cc
+++ b/src/test/objectstore/store_test.cc
@@ -1724,7 +1724,7 @@
@@ -1724,7 +1724,7 @@ TEST_P(StoreTestSpecificAUSize, Bluestor
t.write(cid, hoid, 0, 0x30000, bl);
t.zero(cid, hoid, 0, 0x10000);
t.zero(cid, hoid, 0x20000, 0x10000);
......@@ -373,7 +373,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
--- a/src/test/osd/TestOSDMap.cc
+++ b/src/test/osd/TestOSDMap.cc
@@ -207,7 +207,7 @@
@@ -210,7 +210,7 @@ TEST_F(OSDMapTest, Features) {
ASSERT_TRUE(features & CEPH_FEATURE_CRUSH_TUNABLES2);
ASSERT_TRUE(features & CEPH_FEATURE_CRUSH_TUNABLES3);
ASSERT_TRUE(features & CEPH_FEATURE_CRUSH_V2);
......@@ -384,7 +384,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
--- a/src/tools/ceph_monstore_tool.cc
+++ b/src/tools/ceph_monstore_tool.cc
@@ -878,7 +878,7 @@
@@ -786,7 +786,7 @@ int main(int argc, char **argv) {
("version,v", po::value<unsigned>(&v),
"map version to obtain")
("readable,r", po::value<bool>(&readable)->default_value(false),
......@@ -395,7 +395,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
// it as an option during --help, but we do want to have it captured
--- a/src/tools/monmaptool.cc
+++ b/src/tools/monmaptool.cc
@@ -158,7 +158,7 @@
@@ -158,7 +158,7 @@ bool handle_features(list<feature_op_t>&
target.unset_feature(f.feature);
}
} else {
......@@ -406,7 +406,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
return modified;
--- a/src/tools/rbd/action/Journal.cc
+++ b/src/tools/rbd/action/Journal.cc
@@ -674,7 +674,7 @@
@@ -674,7 +674,7 @@ public:
return false;
}
if (r != entry_size) {
......@@ -417,7 +417,7 @@ Forwarded: https://github.com/ceph/ceph/pull/20831
return false;
--- a/src/tools/rbd_nbd/rbd-nbd.cc
+++ b/src/tools/rbd_nbd/rbd-nbd.cc
@@ -437,7 +437,7 @@
@@ -437,7 +437,7 @@ std::ostream &operator<<(std::ostream &o
os << " TRIM ";
break;
default:
......
......@@ -7,8 +7,6 @@ Origin: backport, https://github.com/ceph/ceph/commit/409b8923a24ff557c53260842a
src/pybind/mgr/dashboard/base.html | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/pybind/mgr/dashboard/base.html b/src/pybind/mgr/dashboard/base.html
index 9936eae..0c0a971 100644
--- a/src/pybind/mgr/dashboard/base.html
+++ b/src/pybind/mgr/dashboard/base.html
@@ -156,7 +156,6 @@
......
......@@ -4,9 +4,9 @@ Forwarded: no
Last-Update: 2019-02-18
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- ceph-12.2.11/src/osd/PrimaryLogPG.cc.orig 2019-02-02 01:29:42.853608099 -0500
+++ ceph-12.2.11/src/osd/PrimaryLogPG.cc 2019-02-02 12:39:33.841608099 -0500
@@ -1582,8 +1582,9 @@
--- a/src/osd/PrimaryLogPG.cc
+++ b/src/osd/PrimaryLogPG.cc
@@ -1582,8 +1582,9 @@ void PrimaryLogPG::calc_trim_to()
if (limit != eversion_t() &&
limit != pg_trim_to &&
pg_log.get_log().approx_size() > target) {
......@@ -17,7 +17,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
if (num_to_trim < cct->_conf->osd_pg_log_trim_min &&
cct->_conf->osd_pg_log_trim_max >= cct->_conf->osd_pg_log_trim_min) {
return;
@@ -1628,8 +1629,9 @@
@@ -1628,8 +1629,9 @@ void PrimaryLogPG::calc_trim_to_aggressi
pg_log.get_log().approx_size() > target) {
dout(10) << __func__ << " approx pg log length = "
<< pg_log.get_log().approx_size() << dendl;
......
>From e57eb949aebee7ebc4c11e9ec1da969503ae10c8 Mon Sep 17 00:00:00 2001
From: Abhishek Lekshmanan <abhishek@suse.com>
Date: Wed, 7 Aug 2019 17:09:32 +0200
Subject: [PATCH] rgw: asio: check the remote endpoint before processing
requests
If a client disconnects after sending headers, then socket.remote_endpoint()
which ultimately calls getpeername syscall would throw an error corresponding to
ENOTCONN. Switch to the non throwing version of remote_endpoint call and return
when this is detected.
Fixes: https://tracker.ceph.com/issues/40018
Signed-off-by: Abhishek Lekshmanan <abhishek@suse.com>
---
src/rgw/rgw_asio_frontend.cc | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/rgw/rgw_asio_frontend.cc b/src/rgw/rgw_asio_frontend.cc
index d4ea4483e5..cd4c31e8f5 100644
--- a/src/rgw/rgw_asio_frontend.cc
+++ b/src/rgw/rgw_asio_frontend.cc
@@ -146,9 +146,16 @@ void handle_connection(boost::asio::io_context& context,
RGWRequest req{env.store->get_new_req_id()};
auto& socket = stream.lowest_layer();
+ const auto& remote_endpoint = socket.remote_endpoint(ec);
+ if (ec) {
+ ldout(cct, 1) << "failed to connect client: " << ec.message() << dendl;
+ return;
+ }
+
+
StreamIO<Stream> real_client{stream, parser, buffer, is_ssl,
socket.local_endpoint(),
- socket.remote_endpoint()};
+ remote_endpoint};
auto real_client_io = rgw::io::add_reordering(
rgw::io::add_buffering(cct,
--
2.16.4
......@@ -18,11 +18,9 @@ Signed-off-by: Boris Ranto <branto@redhat.com>
src/test/librbd/operation/test_mock_ResizeRequest.cc | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/test/librbd/operation/test_mock_ResizeRequest.cc b/src/test/librbd/operation/test_mock_ResizeRequest.cc
index e67f8a2a8321..7b70a50e8f48 100644
--- a/src/test/librbd/operation/test_mock_ResizeRequest.cc
+++ b/src/test/librbd/operation/test_mock_ResizeRequest.cc
@@ -44,7 +44,6 @@ TrimRequest<MockImageCtx> *TrimRequest<MockImageCtx>::s_instance = nullptr;
@@ -44,7 +44,6 @@ TrimRequest<MockImageCtx> *TrimRequest<M
// template definitions
#include "librbd/operation/ResizeRequest.cc"
......
--- a/src/test/librbd/test_mock_Journal.cc
+++ b/src/test/librbd/test_mock_Journal.cc
@@ -214,7 +214,6 @@
@@ -214,7 +214,6 @@ using ::testing::Return;
using ::testing::SaveArg;
using ::testing::SetArgPointee;
using ::testing::WithArg;
......@@ -8,7 +8,7 @@
ACTION_P2(StartReplay, wq, ctx) {
wq->queue(ctx, 0);
@@ -482,7 +481,7 @@
@@ -482,7 +481,7 @@ public:
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -17,7 +17,7 @@
MockJournalReplay mock_journal_replay;
expect_stop_replay(mock_journaler);
@@ -531,7 +530,7 @@
@@ -531,7 +530,7 @@ TEST_F(TestMockJournal, StateTransitions
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -26,7 +26,7 @@
::journal::MockReplayEntry mock_replay_entry;
MockJournalReplay mock_journal_replay;
@@ -540,11 +539,11 @@
@@ -540,11 +539,11 @@ TEST_F(TestMockJournal, StateTransitions
expect_try_pop_front(mock_image_ctx, mock_journaler, true, mock_replay_entry);
expect_replay_process(mock_journal_replay);
expect_try_pop_front(mock_image_ctx, mock_journaler, false, mock_replay_entry,
......@@ -40,7 +40,7 @@
expect_stop_replay(mock_journaler);
expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0);
@@ -601,7 +600,7 @@
@@ -601,7 +600,7 @@ TEST_F(TestMockJournal, ReplayCompleteEr
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -49,7 +49,7 @@
MockJournalReplay mock_journal_replay;
expect_stop_replay(mock_journaler);
@@ -616,7 +615,7 @@
@@ -616,7 +615,7 @@ TEST_F(TestMockJournal, ReplayCompleteEr
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -58,7 +58,7 @@
expect_stop_replay(mock_journaler);
expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0);
@@ -649,14 +648,14 @@
@@ -649,14 +648,14 @@ TEST_F(TestMockJournal, FlushReplayError
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -75,7 +75,7 @@
expect_stop_replay(mock_journaler);
expect_shut_down_replay(mock_image_ctx, mock_journal_replay, -EINVAL);
expect_flush_commit_position(mock_journaler);
@@ -669,7 +668,7 @@
@@ -669,7 +668,7 @@ TEST_F(TestMockJournal, FlushReplayError
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -84,7 +84,7 @@
expect_stop_replay(mock_journaler);
expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0);
@@ -702,7 +701,7 @@
@@ -702,7 +701,7 @@ TEST_F(TestMockJournal, CorruptEntry) {
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -93,7 +93,7 @@
::journal::MockReplayEntry mock_replay_entry;
MockJournalReplay mock_journal_replay;
@@ -720,7 +719,7 @@
@@ -720,7 +719,7 @@ TEST_F(TestMockJournal, CorruptEntry) {
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -102,7 +102,7 @@
expect_stop_replay(mock_journaler);
expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0);
expect_flush_commit_position(mock_journaler);
@@ -752,7 +751,7 @@
@@ -752,7 +751,7 @@ TEST_F(TestMockJournal, StopError) {
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -111,7 +111,7 @@
MockJournalReplay mock_journal_replay;
expect_stop_replay(mock_journaler);
@@ -786,7 +785,7 @@
@@ -786,7 +785,7 @@ TEST_F(TestMockJournal, ReplayOnDiskPreF
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -120,7 +120,7 @@
::journal::MockReplayEntry mock_replay_entry;
MockJournalReplay mock_journal_replay;
@@ -813,7 +812,7 @@
@@ -813,7 +812,7 @@ TEST_F(TestMockJournal, ReplayOnDiskPreF
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler, {
......@@ -129,7 +129,7 @@
});
expect_stop_replay(mock_journaler);
@@ -868,14 +867,14 @@
@@ -868,14 +867,14 @@ TEST_F(TestMockJournal, ReplayOnDiskPost
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -146,7 +146,7 @@
expect_stop_replay(mock_journaler);
Context *on_flush = nullptr;
@@ -892,7 +891,7 @@
@@ -892,7 +891,7 @@ TEST_F(TestMockJournal, ReplayOnDiskPost
expect_get_max_append_size(mock_journaler, 1 << 16);
expect_start_replay(
mock_image_ctx, mock_journaler,
......@@ -157,7 +157,7 @@
expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0);
--- a/src/rbd_replay/Replayer.cc
+++ b/src/rbd_replay/Replayer.cc
@@ -350,7 +350,7 @@
@@ -350,7 +350,7 @@ void Replayer::wait_for_actions(const ac
dout(DEPGRAPH_LEVEL) << "Finished waiting for " << dep.id << " after " << micros << " microseconds" << dendl;
// Apparently the nanoseconds constructor is optional:
// http://www.boost.org/doc/libs/1_46_0/doc/html/date_time/details.html#compile_options
......