From bbcdc7ce329d6d431d47d60765d963458ddc051b Mon Sep 17 00:00:00 2001 From: Jakub Bogusz Date: Sun, 24 May 2020 07:43:08 +0200 Subject: [PATCH] - updated to 10.2.11 (for now, WIP on newer ones) - updated logrotate patch - removed obsolete cxx patch - added link,assert,python patches - use upstream files for systemd - rocksdb support builds now --- ceph-assert.patch | 10 ++ ceph-link.patch | 175 +++++++++++++++++++ ceph-mds@.service | 14 -- ceph-mon@.service | 21 --- ceph-osd@.service | 16 -- ceph-python.patch | 47 ++++++ ceph.logrotate.patch | 27 +-- ceph.spec | 184 ++++++++++++-------- ceph.target | 4 - cxx.patch | 390 ------------------------------------------- 10 files changed, 353 insertions(+), 535 deletions(-) create mode 100644 ceph-assert.patch create mode 100644 ceph-link.patch delete mode 100644 ceph-mds@.service delete mode 100644 ceph-mon@.service delete mode 100644 ceph-osd@.service create mode 100644 ceph-python.patch delete mode 100644 ceph.target delete mode 100644 cxx.patch diff --git a/ceph-assert.patch b/ceph-assert.patch new file mode 100644 index 0000000..3a131bc --- /dev/null +++ b/ceph-assert.patch @@ -0,0 +1,10 @@ +--- ceph-10.2.11/src/test/librados_test_stub/TestWatchNotify.cc.orig 2018-07-09 18:23:56.000000000 +0200 ++++ ceph-10.2.11/src/test/librados_test_stub/TestWatchNotify.cc 2020-05-23 14:37:53.766463510 +0200 +@@ -1,6 +1,7 @@ + // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- + // vim: ts=8 sw=2 smarttab + ++#define BOOST_DISABLE_ASSERTS // broken with ceph assert.h + #include "test/librados_test_stub/TestWatchNotify.h" + #include "include/Context.h" + #include "common/Finisher.h" diff --git a/ceph-link.patch b/ceph-link.patch new file mode 100644 index 0000000..63ab49e --- /dev/null +++ b/ceph-link.patch @@ -0,0 +1,175 @@ +--- ceph-10.2.11/configure.ac.orig 2018-07-09 18:23:56.000000000 +0200 ++++ ceph-10.2.11/configure.ac 2020-05-22 21:04:23.958900423 +0200 +@@ -760,12 +760,12 @@ + + if test "x$enable_xio" = x"yes"; then + AC_CHECK_HEADER([libxio.h], [], AC_MSG_ERROR([Cannot find header 'libxio.h'.])) +- AC_CHECK_LIB([xio], [xio_init], [], AC_MSG_FAILURE([Accelio libxio not found])) +- AC_CHECK_LIB([ibverbs], [ibv_query_device], [], AC_MSG_FAILURE([libibverbs not found])) +- AC_CHECK_LIB([rdmacm], [rdma_connect], [], AC_MSG_FAILURE([librdmacm not found])) ++ AC_CHECK_LIB([xio], [xio_init], [true], AC_MSG_FAILURE([Accelio libxio not found])) ++ AC_CHECK_LIB([ibverbs], [ibv_query_device], [true], AC_MSG_FAILURE([libibverbs not found])) ++ AC_CHECK_LIB([rdmacm], [rdma_connect], [true], AC_MSG_FAILURE([librdmacm not found])) + + # Also require boost-regex, used in address_helper +- AC_CHECK_LIB(boost_regex, main, [], ++ AC_CHECK_LIB(boost_regex, main, [true], + AC_MSG_FAILURE(["Boost regex library not found."])) + + AC_DEFINE([HAVE_XIO], [1], [Accelio conditional compilation]) +@@ -874,7 +874,7 @@ + AS_IF([test "x$with_librocksdb" = "xyes"], + [PKG_CHECK_MODULES([LIBROCKSDB], [rocksdb], [], [true])]) + AS_IF([test "x$with_librocksdb" = "xyes"], +- [AC_CHECK_LIB([rocksdb], [open], [], [AC_MSG_FAILURE([librocksdb not found])])]) ++ [AC_CHECK_LIB([rocksdb], [open], [true], [AC_MSG_FAILURE([librocksdb not found])])]) + AM_CONDITIONAL(WITH_DLIBROCKSDB, [ test "$with_librocksdb" = "yes" ]) + + AC_ARG_WITH([librocksdb-static], +@@ -897,8 +897,8 @@ + + # needs libcurl and libxml2 + if test "x$with_rest_bench" = xyes && test "x$with_system_libs3" = xno; then +- AC_CHECK_LIB([curl], [curl_easy_init], [], AC_MSG_ERROR([libcurl not found])) +- AC_CHECK_LIB([xml2], [xmlParseChunk], [], AC_MSG_ERROR([libxml2 not found])) ++ AC_CHECK_LIB([curl], [curl_easy_init], [true], AC_MSG_ERROR([libcurl not found])) ++ AC_CHECK_LIB([xml2], [xmlParseChunk], [true], AC_MSG_ERROR([libxml2 not found])) + fi + + # use libaio? +--- ceph-10.2.11/src/kv/Makefile.am.orig 2018-07-09 18:23:56.000000000 +0200 ++++ ceph-10.2.11/src/kv/Makefile.am 2020-05-22 21:08:20.037621475 +0200 +@@ -1,12 +1,12 @@ + if ENABLE_SERVER + +-libkv_a_SOURCES = \ ++libkv_la_SOURCES = \ + kv/KeyValueDB.cc \ + kv/LevelDBStore.cc +-libkv_a_CXXFLAGS = ${AM_CXXFLAGS} +-libkv_a_LIBADD = ++libkv_la_CXXFLAGS = ${AM_CXXFLAGS} ++libkv_la_LIBADD = + +-noinst_LIBRARIES += libkv.a ++noinst_LTLIBRARIES += libkv.la + + noinst_HEADERS += \ + kv/KeyValueDB.h \ +@@ -29,22 +29,22 @@ + + rocksdb/librocksdb.a: + cd rocksdb && $(ROCKSDB_MAKE_VARS) $(MAKE) -j$(shell ${NPROC}) static_lib +-libkv_a_CXXFLAGS += -I rocksdb/include -fPIC +-libkv_a_SOURCES += kv/RocksDBStore.cc +-libkv_a_LIBADD += rocksdb/librocksdb.a ++libkv_la_CXXFLAGS += -I rocksdb/include -fPIC ++libkv_la_SOURCES += kv/RocksDBStore.cc ++libkv_la_LIBADD += rocksdb/librocksdb.a + noinst_HEADERS += kv/RocksDBStore.h + endif + + if WITH_DLIBROCKSDB +-libkv_a_SOURCES += kv/RocksDBStore.cc +-libkv_a_LIBADD += -lrocksdb ++libkv_la_SOURCES += kv/RocksDBStore.cc ++libkv_la_LIBADD += -lrocksdb + noinst_HEADERS += kv/RocksDBStore.h + endif + + if WITH_KINETIC +-libkv_a_SOURCES += kv/KineticStore.cc +-libkv_a_CXXFLAGS += -std=gnu++11 +-libkv_a_LIBADD += -lkinetic_client -lprotobuf -lglog -lgflags libcrypto.a ++libkv_la_SOURCES += kv/KineticStore.cc ++libkv_la_CXXFLAGS += -std=gnu++11 ++libkv_la_LIBADD += -lkinetic_client -lprotobuf -lglog -lgflags libcrypto.a + noinst_HEADERS += kv/KineticStore.h + endif + +--- ceph-10.2.11/src/os/Makefile.am.orig 2018-07-09 18:23:56.000000000 +0200 ++++ ceph-10.2.11/src/os/Makefile.am 2020-05-22 21:11:02.663407123 +0200 +@@ -12,7 +12,7 @@ + + if ENABLE_SERVER + +-libos_a_SOURCES = \ ++libos_la_SOURCES = \ + os/filestore/chain_xattr.cc \ + os/filestore/DBObjectMap.cc \ + os/filestore/FileJournal.cc \ +@@ -31,11 +31,11 @@ + os/ObjectStore.cc + + if WITH_FUSE +-libos_a_SOURCES += os/FuseStore.cc ++libos_la_SOURCES += os/FuseStore.cc + endif + + if WITH_LIBAIO +-libos_a_SOURCES += \ ++libos_la_SOURCES += \ + os/bluestore/kv.cc \ + os/bluestore/Allocator.cc \ + os/bluestore/BlockDevice.cc \ +@@ -48,25 +48,25 @@ + endif + + if LINUX +-libos_a_SOURCES += os/filestore/BtrfsFileStoreBackend.cc ++libos_la_SOURCES += os/filestore/BtrfsFileStoreBackend.cc + endif + + if WITH_LIBXFS +-libos_a_SOURCES += \ ++libos_la_SOURCES += \ + os/filestore/XfsFileStoreBackend.cc \ + os/fs/XFS.cc + endif + + if WITH_LIBZFS +-libos_a_SOURCES += os/filestore/ZFSFileStoreBackend.cc ++libos_la_SOURCES += os/filestore/ZFSFileStoreBackend.cc + endif + +-libos_a_CXXFLAGS = ${AM_CXXFLAGS} -I rocksdb/include -fPIC +-libos_a_LIBADD = libos_types.a libkv.a +-noinst_LIBRARIES += libos.a ++libos_la_CXXFLAGS = ${AM_CXXFLAGS} -I rocksdb/include -fPIC ++libos_la_LIBADD = libos_types.a libkv.la ++noinst_LTLIBRARIES += libos.la + + if WITH_LTTNG +-libos_a_LIBADD += $(LIBOS_TP) ++libos_la_LIBADD += $(LIBOS_TP) + endif + + noinst_HEADERS += \ +@@ -140,11 +140,11 @@ + ${top_srcdir}/src/spdk/lib/util/libspdk_util.a \ + ${top_srcdir}/src/spdk/lib/ioat/libspdk_ioat.a + +-libos_a_CXXFLAGS += \ ++libos_la_CXXFLAGS += \ + ${LIBSPDK_CFLAGS} \ + ${LIBDPDK_CFLAGS} \ + ${LIBPCIACCESS_CFLAGS} +-libos_a_SOURCES += os/bluestore/NVMEDevice.cc ++libos_la_SOURCES += os/bluestore/NVMEDevice.cc + noinst_HEADERS += os/bluestore/NVMEDevice.h + endif + +--- ceph-10.2.11/src/Makefile-env.am.orig 2018-07-09 18:23:56.000000000 +0200 ++++ ceph-10.2.11/src/Makefile-env.am 2020-05-22 21:11:33.779905217 +0200 +@@ -203,9 +203,9 @@ + LIBCRUSH = libcrush.la + LIBCOMPRESSOR = libcompressor.la + LIBJSON_SPIRIT = libjson_spirit.la +-LIBKV = libkv.a ++LIBKV = libkv.la + LIBLOG = liblog.la +-LIBOS = libos.a ++LIBOS = libos.la + LIBOS_TYPES = libos_types.a + LIBOSD = libosd.a + LIBOSD_TYPES = libosd_types.la diff --git a/ceph-mds@.service b/ceph-mds@.service deleted file mode 100644 index aec46fd..0000000 --- a/ceph-mds@.service +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Ceph metadata server daemon -After=network-online.target local-fs.target -Wants=network-online.target local-fs.target -PartOf=ceph.target - -[Service] -EnvironmentFile=-/etc/sysconfig/ceph -Environment=CLUSTER=ceph -ExecStart=/usr/bin/ceph-mds -f --cluster ${CLUSTER} --id %i -ExecReload=/bin/kill -HUP $MAINPID - -[Install] -WantedBy=ceph.target diff --git a/ceph-mon@.service b/ceph-mon@.service deleted file mode 100644 index 421897d..0000000 --- a/ceph-mon@.service +++ /dev/null @@ -1,21 +0,0 @@ -[Unit] -Description=Ceph cluster monitor daemon -After=network-online.target -Wants=network-online.target - -# According to: -# http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget -# these can be removed once ceph-mon will dynamically change network -# configuration. -After=network-online.target local-fs.target -Wants=network-online.target local-fs.target -PartOf=ceph.target - -[Service] -EnvironmentFile=-/etc/sysconfig/ceph -Environment=CLUSTER=ceph -ExecStart=/usr/bin/ceph-mon -f --cluster ${CLUSTER} --id %i -ExecReload=/bin/kill -HUP $MAINPID - -[Install] -WantedBy=ceph.target diff --git a/ceph-osd@.service b/ceph-osd@.service deleted file mode 100644 index 1e08355..0000000 --- a/ceph-osd@.service +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=Ceph object storage daemon -After=network-online.target local-fs.target -Wants=network-online.target local-fs.target -PartOf=ceph.target - -[Service] -EnvironmentFile=-/etc/sysconfig/ceph -Environment=CLUSTER=ceph -ExecStart=/usr/bin/ceph-osd -f --cluster ${CLUSTER} --id %i -ExecStartPre=/usr/lib/ceph/ceph-osd-prestart.sh --cluster ${CLUSTER} --id %i -ExecReload=/bin/kill -HUP $MAINPID -LimitNOFILE=131072 - -[Install] -WantedBy=ceph.target diff --git a/ceph-python.patch b/ceph-python.patch new file mode 100644 index 0000000..5d93ce4 --- /dev/null +++ b/ceph-python.patch @@ -0,0 +1,47 @@ +--- ceph-10.2.11/src/ceph-detect-init/Makefile.am.orig 2018-07-09 18:23:56.000000000 +0200 ++++ ceph-10.2.11/src/ceph-detect-init/Makefile.am 2020-05-23 15:54:24.161595205 +0200 +@@ -67,15 +67,9 @@ + ceph-detect-init-install-data: + cd $(srcdir)/ceph-detect-init ; \ + if test "$(DESTDIR)" ; then \ +- if lsb_release -si | grep --quiet 'Ubuntu\|Debian\|Devuan' ; then \ +- options=--install-layout=deb ; \ +- else \ + options=--prefix=/usr ; \ +- fi ; \ + root="--root=$(DESTDIR)" ; \ + fi ; \ +- python setup.py install $$root $$options ++ $(PYTHON) setup.py install $$root $$options --optimize=2 + +-LOCAL_ALL += ceph-detect-init-all +-LOCAL_CLEAN += ceph-detect-init-clean + LOCAL_INSTALLDATA += ceph-detect-init-install-data +--- ceph-10.2.11/src/ceph-disk/Makefile.am.orig 2018-07-09 18:23:56.000000000 +0200 ++++ ceph-10.2.11/src/ceph-disk/Makefile.am 2020-05-23 15:55:36.397870535 +0200 +@@ -32,7 +32,7 @@ + + export CEPH_DISK_VIRTUALENV = ${CEPH_BUILD_VIRTUALENV}/ceph-disk-virtualenv + +-ceph-disk-all: ${CEPH_DISK_VIRTUALENV} ++ceph-disk-init-all: ${CEPH_DISK_VIRTUALENV} + + ${CEPH_DISK_VIRTUALENV}: + cd $(srcdir)/ceph-disk ; ../tools/setup-virtualenv.sh ${CEPH_DISK_VIRTUALENV} ; test -d wheelhouse && export NO_INDEX=--no-index ; ${CEPH_DISK_VIRTUALENV}/bin/pip install $$NO_INDEX --find-links=file://$$(pwd)/wheelhouse -e . +@@ -43,15 +43,10 @@ + ceph-disk-install-data: + cd $(srcdir)/ceph-disk ; \ + if test "$(DESTDIR)" ; then \ +- if lsb_release -si | grep --quiet 'Ubuntu\|Debian\|Devuan' ; then \ +- options=--install-layout=deb ; \ +- else \ + options=--prefix=/usr ; \ +- fi ; \ + root="--root=$(DESTDIR) --install-script=/usr/sbin" ; \ + fi ; \ +- python setup.py install $$root $$options ++ $(PYTHON) setup.py install $$root $$options --optimize=2 + +-LOCAL_ALL += ceph-disk-all + LOCAL_CLEAN += ceph-disk-clean + LOCAL_INSTALLDATA += ceph-disk-install-data diff --git a/ceph.logrotate.patch b/ceph.logrotate.patch index bdde0fa..6702afc 100644 --- a/ceph.logrotate.patch +++ b/ceph.logrotate.patch @@ -1,29 +1,10 @@ ---- ceph-0.94.7/src/logrotate.conf.orig 2016-05-21 07:57:16.259310201 +0200 -+++ ceph-0.94.7/src/logrotate.conf 2016-05-21 07:59:10.385972051 +0200 -@@ -4,26 +4,7 @@ +--- ceph-10.2.11/src/logrotate.conf.orig 2018-07-09 18:23:56.000000000 +0200 ++++ ceph-10.2.11/src/logrotate.conf 2020-05-23 15:03:02.828288220 +0200 +@@ -4,7 +4,7 @@ compress sharedscripts postrotate -- if which service > /dev/null 2>&1 && [ -x `which service` ]; then -- service ceph reload >/dev/null -- elif which invoke-rc.d > /dev/null 2>&1 && [ -x `which invoke-rc.d` ]; then -- invoke-rc.d ceph reload >/dev/null -- fi -- # Possibly reload twice, but depending on ceph.conf the reload above may be a no-op -- if which initctl > /dev/null 2>&1 && [ -x `which initctl` ]; then -- for daemon in osd mon mds ; do -- find -L /var/lib/ceph/$daemon/ -mindepth 1 -maxdepth 1 -regextype posix-egrep -regex '.*/[A-Za-z0-9]+-[A-Za-z0-9._-]+' -printf '%P\n' \ -- | while read f; do -- if [ -e "/var/lib/ceph/$daemon/$f/done" -o -e "/var/lib/ceph/$daemon/$f/ready" ] && [ -e "/var/lib/ceph/$daemon/$f/upstart" ] && [ ! -e "/var/lib/ceph/$daemon/$f/sysvinit" ]; then -- cluster="${f%%-*}" -- id="${f#*-}" -- -- initctl reload ceph-$daemon cluster="$cluster" id="$id" 2>/dev/null || : -- fi -- done -- done -- fi -- killall -q -1 ceph-fuse || true +- killall -q -1 ceph-mon ceph-mds ceph-osd ceph-fuse radosgw || true + cephctl reload >/dev/null 2>/dev/null endscript missingok diff --git a/ceph.spec b/ceph.spec index 4b69581..d172a06 100644 --- a/ceph.spec +++ b/ceph.spec @@ -1,16 +1,17 @@ # TODO: -# - proper init scripts if non-systemd boot is too be supported -# (upstream scripts seem overcomplicated and hardly useful) -# - run as non-root user +# - SPDK (libpciaccess dpdk/rte_config.h -lrte_eal -lrte_mempool -lrte_ring) +# - proper init scripts if non-systemd boot is too be supported +# (upstream scripts seem overcomplicated and hardly useful) +# - run as non-root user # # Note on versioning: http://docs.ceph.com/docs/master/releases/ # # Conditional build: %bcond_without java # Java binding -%bcond_with accelio # Accelio transport support +%bcond_with accelio # Accelio transport support [needs update for internal API changes] %bcond_with kinetic # Kinetic storage support [needs update for internal API changes] -%bcond_with rocksdb # RocksDB storage support [needs update for internal API changes] -%bcond_with zfs # ZFS support +%bcond_without rocksdb # RocksDB storage support +%bcond_with zfs # ZFS support [not ready for zfs 0.8.x] %bcond_without lttng # LTTng tracing %bcond_without babeltrace # Babeltrace traces support %bcond_without tcmalloc # tcmalloc allocator @@ -22,24 +23,21 @@ Summary: User space components of the Ceph file system Summary(pl.UTF-8): Działające w przestrzeni użytkownika elementy systemu plików Ceph Name: ceph -Version: 0.94.10 -Release: 3 +Version: 10.2.11 +Release: 1 License: LGPL v2.1 (libraries), GPL v2 (some programs) Group: Base Source0: http://download.ceph.com/tarballs/%{name}-%{version}.tar.gz -# Source0-md5: 9bf0d6df74e6da3725dcc3b7adf3d849 +# Source0-md5: 09d18eb8d8d06893e9496657f03427a0 Source1: ceph.sysconfig -# based on files from https://github.com/ceph/ceph/tree/master/systemd -Source10: cephctl -Source11: ceph-mds@.service -Source12: ceph-mon@.service -Source13: ceph-osd@.service -Source14: ceph.target -Source15: ceph.tmpfiles +Source2: cephctl +Source3: ceph.tmpfiles Patch0: %{name}-init-fix.patch Patch1: %{name}.logrotate.patch -Patch2: cxx.patch +Patch2: %{name}-link.patch Patch3: boost.patch +Patch4: %{name}-assert.patch +Patch5: %{name}-python.patch URL: https://ceph.io/ %{?with_accelio:BuildRequires: accelio-devel} BuildRequires: autoconf >= 2.59 @@ -64,26 +62,32 @@ BuildRequires: libfuse-devel %{?with_accelio:BuildRequires: libibverbs-devel} BuildRequires: libltdl-devel %{?with_accelio:BuildRequires: librdmacm-devel} -BuildRequires: libs3-devel -BuildRequires: libstdc++-devel +BuildRequires: libstdc++-devel >= 6:4.7 %{?with_tcmalloc:BuildRequires: libtcmalloc-devel} BuildRequires: libtool >= 2:1.5 BuildRequires: libuuid-devel +BuildRequires: libxml2-devel >= 2.0 %{?with_lttng:BuildRequires: lttng-ust-devel} -BuildRequires: nss-devel +BuildRequires: nss-devel >= 3 +BuildRequires: openldap-devel +BuildRequires: openssl-devel BuildRequires: perl-base BuildRequires: pkgconfig -BuildRequires: python >= 1:2.4 +BuildRequires: python >= 1:2.7 +BuildRequires: python-Cython %{?with_rocksdb:BuildRequires: rocksdb-devel} BuildRequires: rpmbuild(macros) >= 1.671 BuildRequires: sed >= 4.0 BuildRequires: snappy-devel +BuildRequires: sphinx-pdg-2 >= 1.0 BuildRequires: udev-devel +#BuildRequires: virtualenv disabled in python patch BuildRequires: xfsprogs-devel %ifarch %{x8664} BuildRequires: yasm %endif %{?with_zfs:BuildRequires: zfs-devel} +BuildRequires: zlib-devel Requires(post,preun): /sbin/chkconfig Requires(preun): rc-scripts Requires: %{name}-libs = %{version}-%{release} @@ -93,7 +97,7 @@ Obsoletes: gcephtool Obsoletes: hadoop-cephfs BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) -%define skip_post_check_so libcls_.*.so.* libec_.*.so.* +%define skip_post_check_so libceph_example.so.* libceph_snappy.so.* libceph_zlib.so.* libcls_.*.so.* libec_.*.so.* %description Ceph is a distributed network file system designed to provide @@ -121,10 +125,17 @@ License: LGPL v2.1 Group: Development/Libraries Requires: %{name}-libs = %{version}-%{release} Requires: boost-devel >= 1.34 -Requires: nss-devel +Requires: curl-devel +Requires: expat-devel +Requires: fcgi-devel +Requires: nss-devel >= 3 Requires: leveldb-devel Requires: libatomic_ops +Requires: libblkid-devel >= 2.17 +Requires: libstdc++-devel >= 6:4.7 Requires: libuuid-devel +%{?with_lttng:Requires: lttng-ust-devel} +Requires: openldap-devel %description devel This package contains the headers needed to develop programs that use @@ -218,13 +229,16 @@ Agenci OCF do monitorowania procesów Cepha. %patch1 -p1 %patch2 -p1 %patch3 -p0 +%patch4 -p1 +%patch5 -p1 %{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' \ - src/{ceph-create-keys,ceph-disk,ceph-rest-api} \ - src/brag/client/ceph-brag + src/{ceph-create-keys,ceph-rest-api} \ + src/brag/client/ceph-brag \ + src/ceph-disk/ceph_disk/main.py # adjust rule used to create ceph from ceph.in -%{__sed} -i -e 's,"#!/usr/bin/env python","#!%{__python}",' src/Makefile-client.am +%{__sed} -i -e 's,|/usr/bin/env python|,|%{__python}|,' src/Makefile-client.am %build %{__libtoolize} @@ -239,6 +253,8 @@ CPPFLAGS="%{rpmcppflags} -D_FILE_OFFSET_BITS=64" %configure \ %{?with_java:JAVAC=/usr/bin/javac} \ %{?with_zfs:LIBZFS_CFLAGS="-I/usr/include/libzfs -I/usr/include/libspl"} \ + PYTHON=%{__python} \ + SPHINX_BUILD=/usr/bin/sphinx-build-2 \ ac_cv_prog_uudecode_base64=no \ --sbindir=/sbin \ %{!?with_babeltrace:--without-babeltrace} \ @@ -247,12 +263,13 @@ CPPFLAGS="%{rpmcppflags} -D_FILE_OFFSET_BITS=64" %{!?with_tcmalloc:--without-tcmalloc} \ %{?with_kinetic:--with-kinetic} \ %{?with_rocksdb:--with-librocksdb} \ + --without-librocksdb-static \ %{?with_zfs:--with-libzfs} \ %{!?with_lttng:--without-lttng} \ --with-ocf \ --with-radosgw \ --with-system-leveldb \ - --with-system-libs3 \ + --with-systemd-unit-dir=%{systemdunitdir} \ %{?with_java:--enable-cephfs-java --with-jdk-dir=%{_jvmdir}/java} \ --disable-silent-rules \ %{?with_accelio:--enable-xio} @@ -272,15 +289,15 @@ install -d $RPM_BUILD_ROOT%{_localstatedir}/{lib/ceph/{tmp,mon,osd,mds},log/ceph install -p src/init-ceph $RPM_BUILD_ROOT/etc/rc.d/init.d/ceph install -p src/logrotate.conf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/ceph -install %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/ceph -install %{SOURCE10} $RPM_BUILD_ROOT%{_bindir} -install %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} $RPM_BUILD_ROOT%{systemdunitdir} +cp -p %{SOURCE1} $RPM_BUILD_ROOT/etc/sysconfig/ceph +install %{SOURCE2} $RPM_BUILD_ROOT%{_bindir} ln -sf /dev/null $RPM_BUILD_ROOT%{systemdunitdir}/ceph.service -install %{SOURCE15} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/ceph.conf +cp -p %{SOURCE3} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/ceph.conf # loadable modules -%{__rm} $RPM_BUILD_ROOT%{_libdir}/ceph/erasure-code/*.{a,la} -%{__rm} $RPM_BUILD_ROOT%{_libdir}/rados-classes/*.{a,la} +%{__rm} $RPM_BUILD_ROOT%{_libdir}/ceph/compressor/*.{a,la} +%{__rm} $RPM_BUILD_ROOT%{_libdir}/ceph/erasure-code/*.la +%{__rm} $RPM_BUILD_ROOT%{_libdir}/rados-classes/*.la %if %{with java} %{__rm} $RPM_BUILD_ROOT%{_libdir}/libcephfs_jni.{la,a} %endif @@ -323,15 +340,24 @@ fi %attr(754,root,root) /etc/rc.d/init.d/ceph %config(noreplace) /etc/sysconfig/ceph %dir /etc/systemd/system/ceph.target.wants +%{systemdunitdir}/ceph.service +%{systemdunitdir}/ceph.target +%{systemdunitdir}/ceph-create-keys@.service +%{systemdunitdir}/ceph-disk@.service +%{systemdunitdir}/ceph-mds.target %{systemdunitdir}/ceph-mds@.service +%{systemdunitdir}/ceph-mon.target %{systemdunitdir}/ceph-mon@.service +%{systemdunitdir}/ceph-osd.target %{systemdunitdir}/ceph-osd@.service -%{systemdunitdir}/ceph.service -%{systemdunitdir}/ceph.target +%{systemdunitdir}/ceph-rbd-mirror.target +%{systemdunitdir}/ceph-rbd-mirror@.service +%{systemdunitdir}/rbdmap.service %{systemdtmpfilesdir}/ceph.conf %dir %{_sysconfdir}/ceph %attr(755,root,root) %{_bindir}/ceph %attr(755,root,root) %{_bindir}/ceph-authtool +%attr(755,root,root) %{_bindir}/ceph-bluefs-tool %attr(755,root,root) %{_bindir}/ceph-brag %attr(755,root,root) %{_bindir}/ceph-clsinfo %attr(755,root,root) %{_bindir}/ceph-conf @@ -339,6 +365,7 @@ fi %attr(755,root,root) %{_bindir}/ceph-crush-location %attr(755,root,root) %{_bindir}/ceph-debugpack %attr(755,root,root) %{_bindir}/ceph-dencoder +%attr(755,root,root) %{_bindir}/ceph-detect-init %attr(755,root,root) %{_bindir}/ceph-mds %attr(755,root,root) %{_bindir}/ceph-mon %attr(755,root,root) %{_bindir}/ceph-objectstore-tool @@ -350,6 +377,7 @@ fi %attr(755,root,root) %{_bindir}/ceph-syn %attr(755,root,root) %{_bindir}/cephctl %attr(755,root,root) %{_bindir}/cephfs +%attr(755,root,root) %{_bindir}/cephfs-data-scan %attr(755,root,root) %{_bindir}/cephfs-journal-tool %attr(755,root,root) %{_bindir}/cephfs-table-tool %attr(755,root,root) %{_bindir}/crushtool @@ -359,33 +387,35 @@ fi %attr(755,root,root) %{_bindir}/rados %attr(755,root,root) %{_bindir}/rbd %attr(755,root,root) %{_bindir}/rbd-fuse +%attr(755,root,root) %{_bindir}/rbd-mirror +%attr(755,root,root) %{_bindir}/rbd-nbd %attr(755,root,root) %{_bindir}/rbd-replay %attr(755,root,root) %{_bindir}/rbd-replay-many %attr(755,root,root) %{_bindir}/rbd-replay-prep +%attr(755,root,root) %{_bindir}/rbdmap +%attr(755,root,root) %{_sbindir}/ceph-disk %attr(755,root,root) /sbin/ceph-create-keys -%attr(755,root,root) /sbin/ceph-disk -%attr(755,root,root) /sbin/ceph-disk-activate -%attr(755,root,root) /sbin/ceph-disk-prepare %attr(755,root,root) /sbin/ceph-disk-udev %attr(755,root,root) /sbin/mount.ceph %attr(755,root,root) /sbin/mount.fuse.ceph %if "%{_libexecdir}" != "%{_libdir}" %dir %{_libexecdir}/ceph %endif +%attr(755,root,root) %{_libexecdir}/ceph/ceph-monstore-update-crush.sh %attr(755,root,root) %{_libexecdir}/ceph/ceph-osd-prestart.sh %dir %{_libdir}/ceph %{_libdir}/ceph/ceph_common.sh +%dir %{_libdir}/ceph/compressor +%attr(755,root,root) %{_libdir}/ceph/compressor/libceph_example.so* +%attr(755,root,root) %{_libdir}/ceph/compressor/libceph_snappy.so* +%attr(755,root,root) %{_libdir}/ceph/compressor/libceph_zlib.so* %dir %{_libdir}/ceph/erasure-code -%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_example.so* -%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_fail_to_initialize.so* -%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_fail_to_register.so* -%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_hangs.so* %ifarch %{x8664} %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_isa.so* %endif %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_jerasure.so* %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_jerasure_generic.so* -%ifarch arm +%ifarch %{arm} %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_jerasure_neon.so* %endif %ifarch %{ix86} %{x8664} x32 @@ -395,25 +425,27 @@ fi %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_jerasure_sse4.so* %endif %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_lrc.so* -%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_missing_entry_point.so* -%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_missing_version.so* %attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec.so* -%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_test_jerasure_generic.so* -%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_test_jerasure_neon.so* -%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_test_jerasure_sse3.so* -%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_test_jerasure_sse4.so* +%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec_generic.so* +%ifarch %{ix86} %{x8664} x32 +%attr(755,root,root) %{_libdir}/ceph/erasure-code/libec_shec_sse3.so* +%endif %dir %{_libdir}/rados-classes -%attr(755,root,root) %{_libdir}/rados-classes/libcls_hello.so* -%attr(755,root,root) %{_libdir}/rados-classes/libcls_kvs.so* -%attr(755,root,root) %{_libdir}/rados-classes/libcls_lock.so* -%attr(755,root,root) %{_libdir}/rados-classes/libcls_log.so* -%attr(755,root,root) %{_libdir}/rados-classes/libcls_rbd.so* -%attr(755,root,root) %{_libdir}/rados-classes/libcls_refcount.so* -%attr(755,root,root) %{_libdir}/rados-classes/libcls_replica_log.so* -%attr(755,root,root) %{_libdir}/rados-classes/libcls_rgw.so* -%attr(755,root,root) %{_libdir}/rados-classes/libcls_statelog.so* -%attr(755,root,root) %{_libdir}/rados-classes/libcls_user.so* -%attr(755,root,root) %{_libdir}/rados-classes/libcls_version.so* +%attr(755,root,root) %{_libdir}/rados-classes/libcls_cephfs.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_hello.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_journal.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_kvs.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_lock.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_log.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_numops.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_rbd.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_refcount.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_replica_log.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_rgw.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_statelog.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_timeindex.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_user.so +%attr(755,root,root) %{_libdir}/rados-classes/libcls_version.so %{_datadir}/ceph %config(noreplace) /etc/logrotate.d/ceph %config(noreplace) %{_sysconfdir}/bash_completion.d/rados @@ -427,6 +459,7 @@ fi %{_mandir}/man8/ceph-debugpack.8* %{_mandir}/man8/ceph-dencoder.8* %{_mandir}/man8/ceph-deploy.8* +%{_mandir}/man8/ceph-detect-init.8* %{_mandir}/man8/ceph-disk.8* %{_mandir}/man8/ceph-mds.8* %{_mandir}/man8/ceph-mon.8* @@ -447,9 +480,12 @@ fi %{_mandir}/man8/radosgw-admin.8* %{_mandir}/man8/rbd.8* %{_mandir}/man8/rbd-fuse.8* +%{_mandir}/man8/rbd-mirror.8* +%{_mandir}/man8/rbd-nbd.8* %{_mandir}/man8/rbd-replay.8* %{_mandir}/man8/rbd-replay-many.8* %{_mandir}/man8/rbd-replay-prep.8* +%{_mandir}/man8/rbdmap.8* %dir %{_localstatedir}/lib/ceph %dir %{_localstatedir}/lib/ceph/mds @@ -477,6 +513,8 @@ fi %attr(755,root,root) %ghost %{_libdir}/librbd.so.1 %attr(755,root,root) %{_libdir}/librbd_tp.so.*.*.* %attr(755,root,root) %ghost %{_libdir}/librbd_tp.so.1 +%attr(755,root,root) %{_libdir}/librgw.so.*.*.* +%attr(755,root,root) %ghost %{_libdir}/librgw.so.2 %files devel %defattr(644,root,root,755) @@ -488,6 +526,7 @@ fi %attr(755,root,root) %{_libdir}/libradosstriper.so %attr(755,root,root) %{_libdir}/librbd.so %attr(755,root,root) %{_libdir}/librbd_tp.so +%attr(755,root,root) %{_libdir}/librgw.so %{_libdir}/libcephfs.la %{_libdir}/libos_tp.la %{_libdir}/libosd_tp.la @@ -496,6 +535,7 @@ fi %{_libdir}/libradosstriper.la %{_libdir}/librbd.la %{_libdir}/librbd_tp.la +%{_libdir}/librgw.la %{_includedir}/cephfs %{_includedir}/rados %{_includedir}/radosstriper @@ -511,14 +551,24 @@ fi %{_libdir}/libradosstriper.a %{_libdir}/librbd.a %{_libdir}/librbd_tp.a +%{_libdir}/librgw.a %files -n python-ceph %defattr(644,root,root,755) +%attr(755,root,root) %{py_sitedir}/cephfs.so +%attr(755,root,root) %{py_sitedir}/rados.so +%attr(755,root,root) %{py_sitedir}/rbd.so +%{py_sitedir}/ceph_detect_init +%{py_sitedir}/ceph_disk +%{py_sitedir}/ceph_detect_init-1.0.1-py*.egg-info +%{py_sitedir}/ceph_disk-1.0.0-py*.egg-info +%{py_sitedir}/cephfs-0-py*.egg-info +%{py_sitedir}/rados-0-py*.egg-info +%{py_sitedir}/rbd-0-py*.egg-info %{py_sitescriptdir}/ceph_argparse.py[co] +%{py_sitescriptdir}/ceph_daemon.py[co] %{py_sitescriptdir}/ceph_rest_api.py[co] -%{py_sitescriptdir}/cephfs.py[co] -%{py_sitescriptdir}/rados.py[co] -%{py_sitescriptdir}/rbd.py[co] +%{py_sitescriptdir}/ceph_volume_client.py[co] %if %{with java} %files -n java-cephfs @@ -538,13 +588,13 @@ fi %defattr(644,root,root,755) %attr(755,root,root) %{_bindir}/radosgw %attr(755,root,root) %{_bindir}/radosgw-admin +%attr(755,root,root) %{_bindir}/radosgw-object-expirer +%attr(755,root,root) %{_bindir}/radosgw-token +%{systemdunitdir}/ceph-radosgw.target +%{systemdunitdir}/ceph-radosgw@.service %{_sysconfdir}/bash_completion.d/radosgw-admin %files resource-agents %defattr(644,root,root,755) %dir %{_prefix}/lib/ocf/resource.d/ceph -%attr(755,root,root) %{_prefix}/lib/ocf/resource.d/ceph/ceph -%attr(755,root,root) %{_prefix}/lib/ocf/resource.d/ceph/mds -%attr(755,root,root) %{_prefix}/lib/ocf/resource.d/ceph/mon -%attr(755,root,root) %{_prefix}/lib/ocf/resource.d/ceph/osd %attr(755,root,root) %{_prefix}/lib/ocf/resource.d/ceph/rbd diff --git a/ceph.target b/ceph.target deleted file mode 100644 index 60734ba..0000000 --- a/ceph.target +++ /dev/null @@ -1,4 +0,0 @@ -[Unit] -Description=ceph target allowing to start/stop all ceph*@.service instances at once -[Install] -WantedBy=multi-user.target diff --git a/cxx.patch b/cxx.patch deleted file mode 100644 index af7ecfd..0000000 --- a/cxx.patch +++ /dev/null @@ -1,390 +0,0 @@ -diff -ur ceph-0.94.10/src/client/SyntheticClient.cc ceph-0.94.10-cxx/src/client/SyntheticClient.cc ---- ceph-0.94.10/src/client/SyntheticClient.cc 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/client/SyntheticClient.cc 2017-04-29 12:25:26.633497617 +0200 -@@ -601,7 +601,7 @@ - int size = iargs.front(); iargs.pop_front(); - int inflight = iargs.front(); iargs.pop_front(); - if (run_me()) { -- dout(2) << "createobjects " << cout << " of " << size << " bytes" -+ dout(2) << "createobjects " << cout.rdbuf() << " of " << size << " bytes" - << ", " << inflight << " in flight" << dendl; - create_objects(count, size, inflight); - } -@@ -617,7 +617,7 @@ - int rskew = iargs.front(); iargs.pop_front(); - int wskew = iargs.front(); iargs.pop_front(); - if (run_me()) { -- dout(2) << "objectrw " << cout << " " << size << " " << wrpc -+ dout(2) << "objectrw " << cout.rdbuf() << " " << size << " " << wrpc - << " " << overlap << " " << rskew << " " << wskew << dendl; - object_rw(count, size, wrpc, overlap, rskew, wskew); - } -diff -ur ceph-0.94.10/src/common/admin_socket.cc ceph-0.94.10-cxx/src/common/admin_socket.cc ---- ceph-0.94.10/src/common/admin_socket.cc 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/common/admin_socket.cc 2017-04-29 09:57:25.062251956 +0200 -@@ -352,7 +352,7 @@ - stringstream errss; - cmdvec.push_back(cmd); - if (!cmdmap_from_json(cmdvec, &cmdmap, errss)) { -- ldout(m_cct, 0) << "AdminSocket: " << errss << dendl; -+ ldout(m_cct, 0) << "AdminSocket: " << errss.rdbuf() << dendl; - return false; - } - cmd_getval(m_cct, cmdmap, "format", format); -diff -ur ceph-0.94.10/src/common/ceph_json.h ceph-0.94.10-cxx/src/common/ceph_json.h ---- ceph-0.94.10/src/common/ceph_json.h 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/common/ceph_json.h 2017-04-29 11:13:38.925899980 +0200 -@@ -198,7 +198,7 @@ - JSONObj *o = *iter; - JSONDecoder::decode_json("key", key, o); - JSONDecoder::decode_json("val", val, o); -- m.insert(make_pair(key, val)); -+ m.insert(make_pair(key, val)); - } - } - -diff -ur ceph-0.94.10/src/common/cmdparse.cc ceph-0.94.10-cxx/src/common/cmdparse.cc ---- ceph-0.94.10/src/common/cmdparse.cc 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/common/cmdparse.cc 2017-04-29 09:58:13.362841243 +0200 -@@ -224,7 +224,7 @@ - BackTrace bt(1); - ostringstream oss; - bt.print(oss); -- lderr(cct) << oss << dendl; -+ lderr(cct) << oss.rdbuf() << dendl; - if (status == 0) - free((char *)typestr); - } -diff -ur ceph-0.94.10/src/common/LogClient.h ceph-0.94.10-cxx/src/common/LogClient.h ---- ceph-0.94.10/src/common/LogClient.h 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/common/LogClient.h 2017-04-29 09:55:08.930587122 +0200 -@@ -137,7 +137,7 @@ - } - bool must_log_to_monitors() { return log_to_monitors; } - -- typedef shared_ptr Ref; -+ typedef std::shared_ptr Ref; - - /** - * update config values from parsed k/v map for each config option -diff -ur ceph-0.94.10/src/mds/CInode.cc ceph-0.94.10-cxx/src/mds/CInode.cc ---- ceph-0.94.10/src/mds/CInode.cc 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/mds/CInode.cc 2017-04-29 10:44:49.563391124 +0200 -@@ -3791,7 +3791,7 @@ - f->dump_int("read_ret_val", backtrace.ondisk_read_retval); - f->dump_stream("ondisk_value") << backtrace.ondisk_value; - f->dump_stream("memoryvalue") << backtrace.memory_value; -- f->dump_stream("error_str") << backtrace.error_str; -+ f->dump_stream("error_str") << backtrace.error_str.rdbuf(); - } - f->close_section(); // backtrace - f->open_object_section("raw_rstats"); -@@ -3801,7 +3801,7 @@ - f->dump_int("read_ret_val", raw_rstats.ondisk_read_retval); - f->dump_stream("ondisk_value") << raw_rstats.ondisk_value; - f->dump_stream("memory_value") << raw_rstats.memory_value; -- f->dump_stream("error_str") << raw_rstats.error_str; -+ f->dump_stream("error_str") << raw_rstats.error_str.rdbuf(); - } - f->close_section(); // raw_rstats - // dump failure return code -diff -ur ceph-0.94.10/src/mds/mdstypes.h ceph-0.94.10-cxx/src/mds/mdstypes.h ---- ceph-0.94.10/src/mds/mdstypes.h 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/mds/mdstypes.h 2017-04-29 11:15:44.723963614 +0200 -@@ -71,7 +71,7 @@ - #define MDS_TRAVERSE_DISCOVERXLOCK 3 // succeeds on (foreign?) null, xlocked dentries. - - --BOOST_STRONG_TYPEDEF(int32_t, mds_rank_t) -+typedef int32_t mds_rank_t; - BOOST_STRONG_TYPEDEF(uint64_t, mds_gid_t) - extern const mds_gid_t MDS_GID_NONE; - extern const mds_rank_t MDS_RANK_NONE; -diff -ur ceph-0.94.10/src/mon/OSDMonitor.cc ceph-0.94.10-cxx/src/mon/OSDMonitor.cc ---- ceph-0.94.10/src/mon/OSDMonitor.cc 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/mon/OSDMonitor.cc 2017-04-29 10:17:06.705748922 +0200 -@@ -4401,7 +4401,7 @@ - if (err == 0) { - k = erasure_code->get_data_chunk_count(); - } else { -- ss << __func__ << " get_erasure_code failed: " << tmp; -+ ss << __func__ << " get_erasure_code failed: " << tmp.rdbuf(); - return err;; - } - -diff -ur ceph-0.94.10/src/msg/simple/Pipe.cc ceph-0.94.10-cxx/src/msg/simple/Pipe.cc ---- ceph-0.94.10/src/msg/simple/Pipe.cc 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/msg/simple/Pipe.cc 2017-04-29 10:05:09.937087135 +0200 -@@ -181,7 +181,7 @@ - - void Pipe::DelayedDelivery::discard() - { -- lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::discard" << dendl; -+ lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout).rdbuf() << "DelayedDelivery::discard" << dendl; - Mutex::Locker l(delay_lock); - while (!delay_queue.empty()) { - Message *m = delay_queue.front().second; -@@ -193,7 +193,7 @@ - - void Pipe::DelayedDelivery::flush() - { -- lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::flush" << dendl; -+ lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout).rdbuf() << "DelayedDelivery::flush" << dendl; - Mutex::Locker l(delay_lock); - flush_count = delay_queue.size(); - delay_cond.Signal(); -@@ -202,11 +202,11 @@ - void *Pipe::DelayedDelivery::entry() - { - Mutex::Locker locker(delay_lock); -- lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::entry start" << dendl; -+ lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout).rdbuf() << "DelayedDelivery::entry start" << dendl; - - while (!stop_delayed_delivery) { - if (delay_queue.empty()) { -- lgeneric_subdout(pipe->msgr->cct, ms, 30) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::entry sleeping on delay_cond because delay queue is empty" << dendl; -+ lgeneric_subdout(pipe->msgr->cct, ms, 30) << pipe->_pipe_prefix(_dout).rdbuf() << "DelayedDelivery::entry sleeping on delay_cond because delay queue is empty" << dendl; - delay_cond.Wait(delay_lock); - continue; - } -@@ -216,11 +216,11 @@ - if (!flush_count && - (release > ceph_clock_now(pipe->msgr->cct) && - (delay_msg_type.empty() || m->get_type_name() == delay_msg_type))) { -- lgeneric_subdout(pipe->msgr->cct, ms, 10) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::entry sleeping on delay_cond until " << release << dendl; -+ lgeneric_subdout(pipe->msgr->cct, ms, 10) << pipe->_pipe_prefix(_dout).rdbuf() << "DelayedDelivery::entry sleeping on delay_cond until " << release << dendl; - delay_cond.WaitUntil(delay_lock, release); - continue; - } -- lgeneric_subdout(pipe->msgr->cct, ms, 10) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::entry dequeuing message " << m << " for delivery, past " << release << dendl; -+ lgeneric_subdout(pipe->msgr->cct, ms, 10) << pipe->_pipe_prefix(_dout).rdbuf() << "DelayedDelivery::entry dequeuing message " << m << " for delivery, past " << release << dendl; - delay_queue.pop_front(); - if (flush_count > 0) { - --flush_count; -@@ -245,7 +245,7 @@ - } - active_flush = false; - } -- lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout) << "DelayedDelivery::entry stop" << dendl; -+ lgeneric_subdout(pipe->msgr->cct, ms, 20) << pipe->_pipe_prefix(_dout).rdbuf() << "DelayedDelivery::entry stop" << dendl; - return NULL; - } - -diff -ur ceph-0.94.10/src/osd/PG.cc ceph-0.94.10-cxx/src/osd/PG.cc ---- ceph-0.94.10/src/osd/PG.cc 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/osd/PG.cc 2017-04-29 10:54:40.743267753 +0200 -@@ -3144,7 +3144,7 @@ - info_struct_v < 8 ? OSD::make_pg_log_oid(pg_id) : pgmeta_oid, - info, oss); - if (oss.str().length()) -- osd->clog->error() << oss; -+ osd->clog->error() << oss.rdbuf(); - - // log any weirdness - log_weirdness(); -diff -ur ceph-0.94.10/src/rgw/rgw_cache.cc ceph-0.94.10-cxx/src/rgw/rgw_cache.cc ---- ceph-0.94.10/src/rgw/rgw_cache.cc 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/rgw/rgw_cache.cc 2017-04-29 11:09:17.823000713 +0200 -@@ -105,7 +105,7 @@ - for (liter = cache_entry_list.begin(); liter != cache_entry_list.end(); ++liter) { - ObjectCacheEntry *entry = *liter; - -- entry->chained_entries.push_back(make_pair(chained_entry->cache, chained_entry->key)); -+ entry->chained_entries.push_back(make_pair(chained_entry->cache, chained_entry->key)); - } - - return true; -diff -ur ceph-0.94.10/src/test/librbd/test_ImageWatcher.cc ceph-0.94.10-cxx/src/test/librbd/test_ImageWatcher.cc ---- ceph-0.94.10/src/test/librbd/test_ImageWatcher.cc 2017-02-21 16:13:19.000000000 +0100 -+++ ceph-0.94.10-cxx/src/test/librbd/test_ImageWatcher.cc 2017-04-29 11:58:28.225636783 +0200 -@@ -383,8 +383,7 @@ - ASSERT_EQ(0, open_image(m_image_name, &ictx)); - - ASSERT_EQ(0, register_image_watch(*ictx)); -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_ACQUIRED_LOCK, bufferlist())); -+ m_notify_acks = {{NOTIFY_OP_ACQUIRED_LOCK, {}}}; - - { - RWLock::WLocker l(ictx->owner_lock); -@@ -474,8 +473,7 @@ - ASSERT_EQ(0, open_image(m_image_name, &ictx)); - - ASSERT_EQ(0, register_image_watch(*ictx)); -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_ACQUIRED_LOCK, bufferlist())); -+ m_notify_acks = {{NOTIFY_OP_ACQUIRED_LOCK, {}}}; - - { - RWLock::WLocker l(ictx->owner_lock); -@@ -528,8 +526,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_REQUEST_LOCK, create_response_message(0))); -+ m_notify_acks = {{NOTIFY_OP_REQUEST_LOCK, create_response_message(0)}}; - - { - RWLock::WLocker l(ictx->owner_lock); -@@ -549,9 +546,7 @@ - ASSERT_EQ(0, unlock_image()); - - m_notifies.clear(); -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_RELEASED_LOCK, bufferlist()))( -- std::make_pair(NOTIFY_OP_ACQUIRED_LOCK, bufferlist())); -+ m_notify_acks = {{NOTIFY_OP_RELEASED_LOCK, {}}, {NOTIFY_OP_ACQUIRED_LOCK, {}}}; - - bufferlist bl; - { -@@ -578,8 +573,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_REQUEST_LOCK, bufferlist())); -+ m_notify_acks = {{NOTIFY_OP_REQUEST_LOCK, {}}}; - - m_expected_aio_restarts = 1; - { -@@ -606,8 +600,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_REQUEST_LOCK, create_response_message(0))); -+ m_notify_acks = {{NOTIFY_OP_REQUEST_LOCK, create_response_message(0)}}; - - int orig_notify_timeout = ictx->cct->_conf->client_notify_timeout; - ictx->cct->_conf->set_val("client_notify_timeout", "0"); -@@ -645,8 +638,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_REQUEST_LOCK, create_response_message(0))); -+ m_notify_acks = {{NOTIFY_OP_REQUEST_LOCK, create_response_message(0)}}; - - m_expected_aio_restarts = 1; - { -@@ -662,8 +654,7 @@ - ASSERT_EQ(expected_notify_ops, m_notifies); - - m_notifies.clear(); -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_RELEASED_LOCK, bufferlist())); -+ m_notify_acks = {{NOTIFY_OP_RELEASED_LOCK, {}}}; - - bufferlist bl; - { -@@ -703,8 +694,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_REQUEST_LOCK, create_response_message(0))); -+ m_notify_acks = {{NOTIFY_OP_REQUEST_LOCK, create_response_message(0)}}; - - m_expected_aio_restarts = 1; - { -@@ -723,8 +713,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_SHARED, "manually 1234")); - - m_notifies.clear(); -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_RELEASED_LOCK, bufferlist())); -+ m_notify_acks = {{NOTIFY_OP_RELEASED_LOCK, {}}}; - - bufferlist bl; - { -@@ -744,8 +733,7 @@ - - ASSERT_EQ(0, register_image_watch(*ictx)); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_HEADER_UPDATE, bufferlist())); -+ m_notify_acks = {{NOTIFY_OP_HEADER_UPDATE, {}}}; - librbd::ImageWatcher::notify_header_update(m_ioctx, ictx->header_oid); - - ASSERT_TRUE(wait_for_notifies(*ictx)); -@@ -765,8 +753,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_FLATTEN, create_response_message(0))); -+ m_notify_acks = {{NOTIFY_OP_FLATTEN, create_response_message(0)}}; - - ProgressContext progress_context; - FlattenTask flatten_task(ictx, &progress_context); -@@ -800,8 +787,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_RESIZE, create_response_message(0))); -+ m_notify_acks = {{NOTIFY_OP_RESIZE, create_response_message(0)}}; - - ProgressContext progress_context; - ResizeTask resize_task(ictx, &progress_context); -@@ -835,8 +821,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_SNAP_CREATE, create_response_message(0))); -+ m_notify_acks = {{NOTIFY_OP_SNAP_CREATE, create_response_message(0)}}; - - RWLock::RLocker l(ictx->owner_lock); - ASSERT_EQ(0, ictx->image_watcher->notify_snap_create("snap")); -@@ -856,8 +841,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_SNAP_CREATE, create_response_message(-EEXIST))); -+ m_notify_acks = {{NOTIFY_OP_SNAP_CREATE, create_response_message(-EEXIST)}}; - - RWLock::RLocker l(ictx->owner_lock); - ASSERT_EQ(-EEXIST, ictx->image_watcher->notify_snap_create("snap")); -@@ -877,8 +861,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_FLATTEN, bufferlist())); -+ m_notify_acks = {{NOTIFY_OP_FLATTEN, {}}}; - - ProgressContext progress_context; - FlattenTask flatten_task(ictx, &progress_context); -@@ -898,8 +881,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_FLATTEN, create_response_message(-EIO))); -+ m_notify_acks = {{NOTIFY_OP_FLATTEN, create_response_message(-EIO)}}; - - ProgressContext progress_context; - FlattenTask flatten_task(ictx, &progress_context); -@@ -919,8 +901,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_FLATTEN, create_response_message(0))); -+ m_notify_acks = {{NOTIFY_OP_FLATTEN, create_response_message(0)}}; - - ProgressContext progress_context; - FlattenTask flatten_task(ictx, &progress_context); -@@ -960,8 +941,7 @@ - ASSERT_EQ(0, lock_image(*ictx, LOCK_EXCLUSIVE, - "auto " + stringify(m_watch_ctx->get_handle()))); - -- m_notify_acks = boost::assign::list_of( -- std::make_pair(NOTIFY_OP_FLATTEN, create_response_message(0))); -+ m_notify_acks = {{NOTIFY_OP_FLATTEN, create_response_message(0)}}; - - ProgressContext progress_context; - FlattenTask flatten_task(ictx, &progress_context); -- 2.43.0