Commit Graph

529 Commits

Author SHA1 Message Date
Ali Maredia
414bdd4cc5 rgw: add conditional backtrace logging after "WARNING: blocking librados call"
Signed-off-by: Ali Maredia <amaredia@redhat.com>
2023-01-24 14:04:01 -05:00
J. Eric Ivancich
aba9bb728d rgw: allow Arrow Flight to be built and linked into ceph components
Arrow Flight integration is triggered by defining
WITH_RADOSGW_ARROW_FLIGHT=ON with the cmake invocation.

For now this assumes that grpc-plugins is installed on the system and
won't be built internally.

Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
2022-12-15 12:49:35 -05:00
Radoslaw Zarzynski
bf46d3736d
Merge pull request #47458 from rzarzynski/wip-all-kickoff-r
kickoff v18 reef

Reviewed-by: Ilya Dryomov <idryomov@redhat.com>
Reviewed-by: Neha Ojha <nojha@redhat.com>
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
Reviewed-by: Guillaume Abrioux <gabrioux@redhat.com>
Reviewed-by: Anthony D'Atri <anthonyeleven@users.noreply.github.com>
Reviewed-by: Adam King <adking@redhat.com>
Reviewed-by: Laura Flores <lflores@redhat.com>
2022-10-04 22:39:19 +02:00
Lucian Petrut
9921c8a355
Merge pull request #48148 from ktdreyer/win-remove-curl
win32: remove libcurl
2022-09-23 10:43:44 +03:00
Casey Bodley
54caaf757f cmake: bump project version to 18.0.0 for reef
Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 9319d56319)
2022-09-20 14:26:59 +00:00
Ken Dreyer
bacbfccb20 win32: remove libcurl
The Windows client does not use libcurl for anything. Remove it to
simplify the build process.

Note, if we ever add libcurl back on Windows, we should disable unused
protocols to harden the build:

  --disable-ftp --disable-ldap --disable-ldaps --disable-rtsp \
  --disable-dict --disable-telnet --disable-tftp --disable-pop3 \
  --disable-imap --disable-smb --disable-smtp --disable-gopher \
  --disable-mqtt --disable-manual --disable-ntlm

Signed-off-by: Ken Dreyer <kdreyer@redhat.com>
2022-09-16 14:30:39 -04:00
Zuhair AlSader
7efceddac8
rgw: add DAOS SAL implementation
To build with DAOS backend, use -DWITH_RADOSGW_DAOS=YES cmake
option. `daos-devel` rpm should be installed beforehand.

To connect to DAOS pool, add the following configuration
parameters to ceph.conf:
```
    [client]
            ...
            rgw backend store = daos
            daos pool = tank
```

A pool could be created using the following command:
```
    dmg pool create --size=<size> <pool_name>
```

To install `daos-devel` do:
```
    sudo wget -O /etc/yum.repos.d/daos-packages.repo https://packages.daos.io/v2.0/EL8/packages/x86_64/daos_packages.repo
    sudo rpm --import https://packages.daos.io/RPM-GPG-KEY
    sudo yum install -y epel-release daos-server daos-client daos-devel
```

Co-authored-by: Walter Warniaha <walter.warniaha@seagate.com>

Signed-off-by: Zuhair AlSader <zuhair.alsader@seagate.com>
2022-09-07 12:19:41 -04:00
Kefu Chai
2e9f5ae081
Merge pull request #47829 from tchaikov/wip-cmake-CMP0135
cmake: set CMP0135 policy 

Reviewed-by: Casey Bodley <cbodley@redhat.com>
2022-08-31 17:51:44 +08:00
Kefu Chai
8103d11bd8 cmake: set CMP0135 policy
so the `DOWNLOAD_EXTRACT_TIMESTAMP` property of
`ExternalProject_Add()` command is set by default on CMake v3.24 and up.
it helps to set the a more accurate timestamp for the downloaded
content, hence the targets depending on the extracted content can be
rebuilt if the URL changes.

see also https://cmake.org/cmake/help/latest/policy/CMP0135.html

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2022-08-27 09:56:47 +08:00
Kefu Chai
591e0c6195 cmake: use a loop for setting new policies
we were using a for loop for this purpose, but the for loop was unrolled
when we bumped up the required cmake version.

this change paves the road to setting "CMP0135" to "NEW". this policy
is a new one introduced by CMake v3.24.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2022-08-27 09:49:27 +08:00
Mark Kogan
692b99d1cf build: fix WITH_BOOST_VALGRIND config value was set after the fact
https://tracker.ceph.com/issues/56500

Signed-off-by: Mark Kogan <mkogan@redhat.com>
2022-08-18 14:45:20 +03:00
Kefu Chai
9ff4b5a1a3
Merge pull request #46989 from petrutlucian94/boost_shared_mutex
common: use boost::shared_mutex on Windows

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Kefu Chai <tchaikov@gmail.com>
2022-08-06 11:00:27 +08:00
Lucian Petrut
35b67b2558 common: use boost::shared_mutex on Windows
The winpthreads shared mutex implementation causes deadlocks on
Windows [1][2]. Specifically, async RBD IO calls are hanging. This
also prevents the images from being unmounted.

For this reason, we're switching to boost::shared_mutex when using
MinGW.

[1] https://github.com/cloudbase/wnbd/issues/63#issuecomment-1161547102
[2] https://github.com/msys2/MINGW-packages/issues/3319
Trace: https://pastebin.com/raw/i3jpTyS3

Fixes: https://tracker.ceph.com/issues/56480
Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2022-07-27 11:50:42 +00:00
Nizamudeen A
42fd81f1bd
Merge pull request #46945 from rhcs-dashboard/rbd-e2e
mgr/dashboard: rbd-mirroring e2e tests

Reviewed-by: Aashish Sharma <aasharma@redhat.com>
Reviewed-by: Avan Thakkar <athakkar@redhat.com>
Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
Reviewed-by: Deepika Upadhyay <dupadhya@redhat.com>
2022-07-26 19:51:06 +05:30
Deepika Upadhyay
93e5d787ef cmake: add rbd-mirror executable to run-make-check
Signed-off-by: Deepika Upadhyay <dupadhya@redhat.com>
(cherry picked from commit e2b46020317e4d4e37c281a6b1817711e0826a37)
2022-07-26 13:50:29 +05:30
Kefu Chai
606ec517f7
Merge pull request #46554 from adamemerson/wip-up-the-boost
build: Bump Boost version to 1.79

Reviewed-by: Kefu Chai <tchaikov@gmail.com>
2022-07-26 07:39:10 +08:00
Adam C. Emerson
947ac23979 build: Bump Boost version to 1.79
Also remove bind_allocator, as Boost.Asio now provides this function.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2022-07-22 11:04:43 -04:00
Kefu Chai
e56e85b891 cmake: use CMAKE_<LANG>_COMPILER_LAUNCHER for configuring ccache
ccache only works for c and c++, so instead of using the universal
`RULE_LAUNCH_COMPILE` use `CMAKE_<LANG>_COMPILER_LAUNCHER` instead,
so ccache is only configured for c and c++ compilation. this is a better
solution for integrating ccache into our building system.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2022-06-25 22:44:24 +08:00
Yuri Weinstein
cac4b1256d
Merge pull request #45750 from m-ildefons/boost-b2-jobs
cmake: configure boost build with concurrent jobs

Reviewed-by: Kefu Chai <kchai@redhat.com>
2022-06-15 13:25:56 -07:00
Moritz Röhrich
e8ddf7cfdc
cmake: configure boost build with concurrent jobs
When building boost, try to schedule multiple build jobs in parallel. If
provided with `-DBOOST_J=<n>`, the given number of jobst is going to be
used.

Signed-off-by: Moritz Röhrich <moritz.rohrich@suse.com>
2022-05-31 10:09:24 +02:00
Omri Zeneva
644c99826d cmake: set WITH_JAEGER=ON by default
Signed-off-by: Omri Zeneva <ozeneva@redhat.com>
2022-05-17 04:38:00 -04:00
Kefu Chai
417774f60b
Merge pull request #46142 from tchaikov/wip-cmake-fuse
cmake: mark FUSE REQUIRED if WITH_FUSE

Reviewed-by: Venky Shankar <vshankar@redhat.com>
2022-05-13 20:58:14 +08:00
Kefu Chai
6e102a4de8 cmake: mark FUSE REQUIRED if WITH_FUSE
in src/CMakeLists.txt, if "WITH_FUSE" is true, we always link ceph-fuse
against FUSE::FUSE no matter what FUSE_FOUND is.

to avoid the FTBFS when FUSE is not found when building ceph-fuse, we'd
better fail early by marking FUSE a must have.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2022-05-04 19:23:16 +08:00
Kefu Chai
677e134606 cmake: restructure allocator related code
before this change, the ALLOCATOR cmake option are handled at two
difference places: one to handle ALLOCATOR option, another to add
compilation options based on ALLOCATOR. after this change:

* the ALLOCATOR option is handled in a single place
* dedup the branches handling different ALLOCATORS into a single
  condition: (NOT ALLOCATOR STREQUAL "libc")
* add_compile_options() calls are consolidated into a single one

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2022-05-02 11:54:08 +08:00
Kefu Chai
8e7f49c256
Merge pull request #45978 from tchaikov/wip-cmake-python3-exact
cmake/modules: use exact version of python3 when finding cython

Reviewed-by: Casey Bodley <cbodley@redhat.com>
2022-04-22 07:10:02 +08:00
Kefu Chai
ea4ae6d2f1 cmake/modules: use exact version of python3 when finding cython
* CMakeLists.txt:
    always pass "EXACT" to find_package(Python3).
    because per cmake document, "EXACT" only takes effect when
    <Package>_FIND_VERSION_COUNT is greater than 1, where <Package>
    is "Python3". see also cmake/modules/FindPython/Support.cmake
* cmake/modules/AddCephTest.cmake:
    drop redundant find_package(Python3) calls. since Python3 is
    a mandatory requirement for building Ceph, we only need a
    single call of find_package(Python3..) in the top of the source
    tree. the only possible case to repeat it is to ensure that we
    have the correct version of Python3 used in following CMake
    script. but there is no need to repeat it if we just want to
    ensure that we have a python3 interpretor in place.
* cmake/modules/Distutils.cmake:
    always pass "EXACT" to find_package(Python3).
    we should always pass EXACT to find_package() when finding python3,
    this is a follow-up of e2babdfae8

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2022-04-21 06:52:18 +08:00
Kefu Chai
c51b3c3a17 cmake: try to find dml only if PMEM is enabled
as the feature dependent on DML library requires PMEM backend.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2022-04-21 06:28:09 +08:00
Ziye Yang
86cb8c75c3 Add the support to use DML library for PMEM device.
The purpose of this patch is to add the initial support to
offload memory/pmem operations by sync usage through hardware path
in DML library.

Signed-off-by: Ziye Yang <ziye.yang@intel.com>
2022-04-19 14:51:12 +08:00
Ilya Dryomov
226e614c95 cmake: resurrect mutex debugging in all Debug builds
Commit 403f1ec288 ("cmake: make "WITH_CEPH_DEBUG_MUTEX" depend on
CMAKE_BUILD_TYPE") made WITH_CEPH_DEBUG_MUTEX depend on build type
being set to Debug, in CMakeLists.txt.  However, if CMAKE_BUILD_TYPE
isn't specified by the user, we may still set it to Debug later, in
src/CMakeLists.txt, and in that case WITH_CEPH_DEBUG_MUTEX doesn't
get enabled.  The result is that

  $ do_cmake.sh -DCMAKE_BUILD_TYPE=Debug ...

debug builds have mutex debugging enabled, while

  $ do_cmake.sh ...

builds, which are supposed to be the same, don't.  Jenkins builders
don't pass -DCMAKE_BUILD_TYPE=Debug so that commit effectively turned
off all ceph_mutex_is_locked* asserts in "make check".

Fixes: https://tracker.ceph.com/issues/55318
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2022-04-13 15:42:21 +02:00
Casey Bodley
90662cad56 cmake: WITH_SYSTEM_UTF8PROC defaults to OFF
change the default value of WITH_SYSTEM_UTF8PROC from ON to OFF, so that
centos/rhel users can build with the default cmake configuration. no other
WITH_SYSTEM_* variable in ceph defaults to ON, so this is consistent
with other bundled libraries like boost and rocksdb

unfortunately, this also means that users that do have system packages
must opt-in to using them with -DWITH_SYSTEM_UTF8PROC=ON

both deb and rpm builds dependended on the previous default value, so
their logic was negated to match the new default

Fixes: https://tracker.ceph.com/issues/55114

Signed-off-by: Casey Bodley <cbodley@redhat.com>
2022-03-29 17:49:18 -04:00
Casey
ed60aeed0b cmake: add WITH_SYSTEM_ARROW to skip submodule build
relies on a hack to find the installed ParquetConfig.cmake

Signed-off-by: Casey <cbodley@redhat.com>
2022-03-14 10:19:02 -04:00
Casey Bodley
b10364dc21 cmake: add submodule for utf8proc at v2.2.0
adds utf8proc submodule, needed by the arrow submodule in centos. add a
WITH_SYSTEM_UTF8PROC option that controls whether or not utf8proc is
built from submodule

non-system utf8proc is built as a static library to avoid conflicts with
system-provided libraries

ceph.spec.in sets WITH_SYSTEM_UTF8PROC=OFF until it's available in
centos

Signed-off-by: Casey Bodley <cbodley@redhat.com>
2022-03-14 10:19:02 -04:00
Casey Bodley
2ca6d75521 cmake: add submodule for Apache Arrow at v6.0.1
adds an arrow submodule. when WITH_RADOSGW_SELECT_PARQUET is enabled,
the submodule is built as an external project and rgw links against its
imported Arrow::Parquet target

Signed-off-by: Casey Bodley <cbodley@redhat.com>
2022-03-14 10:19:02 -04:00
Casey Bodley
12555ea6e5 cmake/rgw: remove detection for curl_multi_wait
Signed-off-by: Casey Bodley <cbodley@redhat.com>
2022-03-01 13:27:42 -05:00
Miaomiao Liu
9a9001a08f compressor: fix compilation issues about QATzip
Signed-off-by: Miaomiao Liu <miaomiao.liu@intel.com>
Signed-off-by: Hualong Feng <hualong.feng@intel.com>
2022-02-18 17:45:30 +08:00
Miaomiao Liu
082dcf0a58 cmake: replace BuildQatDrv.cmake with FindQatDrv.cmake
because QAT driver with version v1.7.l.4.14.0 or higher cannot be dowmloaded
directly by URL, FindQatDrv.cmake can find the locally installed QAT package and libraries

Signed-off-by: Miaomiao Liu <miaomiao.liu@intel.com>
Signed-off-by: Hualong Feng <hualong.feng@intel.com>
2022-02-08 14:06:07 +08:00
Arthur Outhenin-Chalandre
98236e3a1d
mgr/dashboard: monitoring: refactor into ceph-mixin
Mixin is a way to bundle dashboards, prometheus rules and alerts into
jsonnet package. Shifting to mixin will allow easier integration with
monitoring automation that some users may use.

This commit moves `/monitoring/grafana/dashboards` and
`/monitoring/prometheus` to `/monitoring/ceph-mixin`. Prometheus alerts
was also converted to Jsonnet using an automated way (from yaml to json
to jsonnet). This commit minimises any change made to the generated files
and should not change neithers the dashboards nor the Prometheus alerts.

In the future some configuration will also be added to jsonnet to add
more functionalities to the dashboards or alerts (i.e.: multi cluster).

Fixes: https://tracker.ceph.com/issues/53374
Signed-off-by: Arthur Outhenin-Chalandre <arthur.outhenin-chalandre@cern.ch>
2022-02-03 13:08:20 +01:00
Andriy Tkachuk
bf24c479b9 rgw: add CORTX Motr SAL implementation
To build with Motr backend, use -DWITH_RADOSGW_MOTR=YES cmake
option. cortx-motr-devel rpm should be installed beforehand.

To connect to Motr cluster, add the following configuration
parameters to ceph.conf:

    [client]
            ...
            rgw backend store = motr
            motr profile fid  = 0x7000000000000001:0x4f
            motr ha endpoint  = inet:tcp:10.0.0.1@2001
    ...
    [client.rgw.8000]
            ...
            motr my endpoint  = inet:tcp:10.0.0.1@5001
            motr my fid       = 0x7200000000000001:0x29

The correct values for the Motr connection parameters can be
taken from `hctl status` cmd output after Motr cluster is
bootstrapped. In the example above, the values were taken from
the following output:

    Profile:
        0x7000000000000001:0x4f
    Services:
        centos8n1
        [started] hax       0x7200000000000001:0x6  inet:tcp:10.0.0.1@5001
        ...
        [unknown] m0_client 0x7200000000000001:0x29 inet:tcp:10.0.0.1@5001

Motr pkgs for the build/run can be taken from
https://github.com/Seagate/cortx-motr/releases/tag/2.0.0-rgw.

Co-authored-by: Sining Wu <sining.wu@seagate.com>

Signed-off-by: Andriy Tkachuk <andriy.tkachuk@seagate.com>
2022-01-27 10:45:25 +00:00
Casey Bodley
077e234b74 cmake: disable parquet by default
Signed-off-by: Casey Bodley <cbodley@redhat.com>
2022-01-14 14:50:47 -05:00
Samuel Just
fa08f32a53
Merge pull request #44410 from tchaikov/wip-cmake-cleanup
cmake: detect linux/blk/zoned support

Reviewed-by: Samuel Just <sjust@redhat.com>
2022-01-10 13:36:09 -08:00
Kefu Chai
76c35c6dd9 cmake: detect linux/blk/zoned support
* add find_package() support for detecting the existence of
  linux/blkzoned.h before using it.
* link against Linux::ZNS for adding the compilation definition of
  HAVE_ZNS instead of including it in the global config.h
* move the CMake option closer to where it is used for
  better readability. as this option takes effect only if
  crimson is compiled.
* make WITH_ZNS an option which depends on the value of
  CMAKE_SYSTEM_NAME. it is hidden and off if CMAKE_SYSTEM_NAME
  is not "Linux".

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2021-12-25 16:13:47 +08:00
Kefu Chai
997715e259 cmake: use new CMP0127 policy
CMP0127 is a new policy introduced by CMake 3.22. without specifying
the policy, we'd have following warning when configuring the building
system using CMake 3.22:

CMake Warning (dev) at /usr/share/cmake-3.22/Modules/CMakeDependentOption.cmake:84 (message):
  Policy CMP0127 is not set: cmake_dependent_option() supports full Condition
  Syntax.  Run "cmake --help-policy CMP0127" for policy details.  Use the
  cmake_policy command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt:255 (CMAKE_DEPENDENT_OPTION)
This warning is for project developers.  Use -Wno-dev to suppress it.

Signed-off-by: Kefu Chai <tchaikov@gmail.com>
2021-12-19 15:02:10 +08:00
Samuel Just
7d5e7cfcfc
Merge pull request #44197 from josephsawaya/zns-segment-manager
crimson/os/seastore: add ZNSSegmentManager

Reviewed-by: Samuel Just <sjust@redhat.com>
2021-12-15 18:30:08 -08:00
Joseph Sawaya
84b040ba7d crimson/os/seastore: add ZNSSegmentManager
This commit adds the ZNSSegmentManager, so SeaStore can
interface with ZNS devices using the linux/blkzoned
library.

Signed-off-by: Joseph Sawaya <jsawaya@redhat.com>
2021-12-14 20:27:59 +00:00
Yuri Weinstein
ebb64e4a3d
Merge pull request #43612 from adamemerson/wip-unleveling
build: Remove LevelDB support

Reviewed-by: Kefu Chai <kchai@redhat.com>
2021-12-10 15:33:05 -08:00
Adam C. Emerson
447564e4db build: Remove LevelDB support
Whereas new LevelDB packages are build with -fno-rtti and break our
attempts to compile against them,

and whereas LevelDB has been deprecated for some time, with the Ceph
team expending great effort to migrating OSDs off of it,

let it be therefore removed.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2021-11-01 12:42:17 -04:00
Sebastian Wagner
b830c555d2 monitoring/prometheus: Add cmake integration
Signed-off-by: Sebastian Wagner <sewagner@redhat.com>
2021-10-22 13:37:31 +13:00
Soumya Koduri
963e8c05b7 rgw/dbstore: Fix DBstore build conflicts
Fixing build conflicts with latest sal multipart/writer changes.
Also enable WITH_RADOSGW_DBSTORE option by default.

Signed-off-by: Soumya Koduri <skoduri@redhat.com>
2021-08-05 14:27:19 +05:30
Kefu Chai
065ff536a1 cmake: disable kvs rados cls by default
libcls_kvs was introduced back in
73d016fdb3, but we don't have an internal
user so far. to reduce the build time. let's disable the build of it by
default.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2021-08-04 10:21:10 +08:00
Ilya Dryomov
8248fbe2e4
Merge pull request #42570 from tchaikov/wip-libcryptsetup
librbd/crypto/luks: require libcryptsetup v2.0.5

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2021-08-02 21:35:16 +02:00