]> git.apps.os.sepia.ceph.com Git - ceph.git/log
ceph.git
19 months agotest/librbd: Add workaround for a journaling deadlock that this test exposes 54377/head
Joshua Baergen [Wed, 29 Nov 2023 15:47:01 +0000 (08:47 -0700)]
test/librbd: Add workaround for a journaling deadlock that this test exposes

Signed-off-by: Joshua Baergen <jbaergen@digitalocean.com>
19 months agolibrbd: Append one journal event per image request
Joshua Baergen [Thu, 9 Nov 2023 16:43:22 +0000 (09:43 -0700)]
librbd: Append one journal event per image request

In the case where an image request is split across multiple object
extents and journaling is enabled, multiple journal events are appended.
Prior to this change, all object requests would wait for the last
journal event to complete, since journal events complete in order and
thus the last one completing implies that all prior journal events were
safe at that point.

The issue with this is that there's nothing stopping that last journal
event from being cleaned up before all object requests have stopped
referring to it. Thus, it's entirely possible for the following sequence
to occur:
1. An image request gets split into two image extents and two object
   requests. Journal events are appended (one per image extent).
2. The first object request gets delayed due to an overlap, but the
   second object request gets submitted and starts waiting on the last
   journal event (which also causes a C_CommitIOEvent to be instantiated
   against that journal event).
3. Journaling completes, and the C_CommitIOEvent fires. The
   C_CommitIOEvent covers the entire range of data that was journaled in
   this event, and so the event is cleaned up.
4. The first object request from above is allowed to make progress; it
   tries to wait for the journal event that was just cleaned up which
   causes the assert in wait_event() to fire.

As far as I can tell, this is only possible on the discard path today,
and only recently. Up until 21a26a752843295ff946d1543c2f5f9fac764593
(librbd: Fix local rbd mirror journals growing forever), m_image_extents
always contained a single extent for all I/O types; this commit changed
the discard path so that if discard granularity changed the discard
request, m_image_extents would be repopulated, and if the request
happened to cross objects then there would be multiple m_image_extents.

It appears that the intent here was that there should be one journal
event per image request and the pending_extents kept track of what had
completed thus far. This commit restores that 1:1 relationship.

Fixes: https://tracker.ceph.com/issues/63422
Signed-off-by: Joshua Baergen <jbaergen@digitalocean.com>
19 months agolibrbd: Change append_io_events() to take Extents
Joshua Baergen [Thu, 9 Nov 2023 16:43:21 +0000 (09:43 -0700)]
librbd: Change append_io_events() to take Extents

An upcoming commits will use this to change how multi-extent image
requests are appended to the journal.

Signed-off-by: Joshua Baergen <jbaergen@digitalocean.com>
19 months agolibrbd: Eliminate unused m_synchronous from AbstractImageWriteRequest
Joshua Baergen [Thu, 9 Nov 2023 16:43:20 +0000 (09:43 -0700)]
librbd: Eliminate unused m_synchronous from AbstractImageWriteRequest

This has been unused since its introduction years ago and so isn't worth
keeping.

Signed-off-by: Joshua Baergen <jbaergen@digitalocean.com>
19 months agotest/librbd: Add a stress test that reproduces a crash during discard journaling
Joshua Baergen [Thu, 9 Nov 2023 16:43:19 +0000 (09:43 -0700)]
test/librbd: Add a stress test that reproduces a crash during discard journaling

See the comments in DiscardWithPruneWriteOverlap for details.

Signed-off-by: Joshua Baergen <jbaergen@digitalocean.com>
19 months agoMerge pull request #54774 from sinashan/main
zdover23 [Mon, 4 Dec 2023 19:41:46 +0000 (20:41 +0100)]
Merge pull request #54774 from sinashan/main

doc: Fixes two typos and grammatical errors. Signed-off-by: Sina Ahma…

Reviewed-by: Zac Dover <zac.dover@proton.me>
19 months agodoc: Fixes two typos and grammatical errors. Signed-off-by: Sina Ahmadi <sinatak1373... 54774/head
sinashan [Mon, 4 Dec 2023 19:02:54 +0000 (14:02 -0500)]
doc: Fixes two typos and grammatical errors. Signed-off-by: Sina Ahmadi <sinatak1373@live.com>

19 months agoMerge pull request #54205 from VallariAg/wip-nvmeof-test
Ilya Dryomov [Mon, 4 Dec 2023 17:14:38 +0000 (18:14 +0100)]
Merge pull request #54205 from VallariAg/wip-nvmeof-test

qa: add rbd/nvmeof integration test

Reviewed-by: Zack Cerza <zack@redhat.com>
Reviewed-by: Aviv Caro <Aviv.Caro@ibm.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
19 months agoqa: add rbd/nvmeof test 54205/head
Vallari Agrawal [Thu, 26 Oct 2023 07:55:44 +0000 (13:25 +0530)]
qa: add rbd/nvmeof test

A basic test for ceph-nvmeof[1] where
nvmeof initiator is created.
It requires use of a new task "nvmeof_gateway_cfg"
under cephadm which shares config information
between two remote hosts.

[1] https://github.com/ceph/ceph-nvmeof/

Signed-off-by: Vallari Agrawal <val.agl002@gmail.com>
19 months agoMerge pull request #54441 from phlogistonjohn/jjm-cephadm-breakup v19.0.0
Adam King [Mon, 4 Dec 2023 12:32:52 +0000 (07:32 -0500)]
Merge pull request #54441 from phlogistonjohn/jjm-cephadm-breakup

cephadm: break various daemon type classes out to smaller files in cephadmlib

Reviewed-by: Adam King <adking@redhat.com>
19 months agoMerge pull request #54679 from Suyashd999/add-rgw
Adam King [Mon, 4 Dec 2023 12:26:13 +0000 (07:26 -0500)]
Merge pull request #54679 from Suyashd999/add-rgw

src/cephadm: Added rgw for listing in Daemons

Reviewed-by: Adam King <adking@redhat.com>
19 months agoMerge pull request #54076 from rhcs-dashboard/subvolume-snapshot
Nizamudeen A [Mon, 4 Dec 2023 08:42:51 +0000 (14:12 +0530)]
Merge pull request #54076 from rhcs-dashboard/subvolume-snapshot

mgr/dashboard: cephfs subvolume list snapshots

Reviewed-by: Pedro Gonzalez Gomez <pegonzal@redhat.com>
Reviewed-by: Ankush Behl <cloudbehl@gmail.com>
Reviewed-by: ivoalmeida <NOT@FOUND>
19 months agoMerge pull request #54758 from zdover23/wip-doc-2023-12-03-rados-stretch-mode-repair...
Anthony D'Atri [Sun, 3 Dec 2023 14:40:46 +0000 (09:40 -0500)]
Merge pull request #54758 from zdover23/wip-doc-2023-12-03-rados-stretch-mode-repair-of-54689

doc/rados: repair stretch-mode.rst

19 months agodoc/rados: repair stretch-mode.rst 54758/head
Zac Dover [Sun, 3 Dec 2023 12:17:46 +0000 (13:17 +0100)]
doc/rados: repair stretch-mode.rst

Remove a section of doc/rados/operations/stretch-mode.rst that I wrongly
re-included after its removal. The request for this (re)-removal is
here: https://github.com/ceph/ceph/pull/54689#discussion_r1413007655.

Signed-off-by: Zac Dover <zac.dover@proton.me>
19 months agoMerge pull request #54437 from Matan-B/wip-matanb-crimson-osdmap-trimming
Matan Breizman [Sun, 3 Dec 2023 08:06:33 +0000 (10:06 +0200)]
Merge pull request #54437 from Matan-B/wip-matanb-crimson-osdmap-trimming

crimson/osd: introduce osdmap trimming

Reviewed-by: Samuel Just <sjust@redhat.com>
19 months agoMerge pull request #53712 from ronen-fr/wip-rf-move-1
Ronen Friedman [Sun, 3 Dec 2023 07:51:41 +0000 (09:51 +0200)]
Merge pull request #53712 from ronen-fr/wip-rf-move-1

osd: fix a missing 'noexcept' on a move ctor

Reviewed-by: Samuel Just <sjust@redhat.com>
19 months agoMerge pull request #54482 from ronen-fr/wip-rf-repl-hp
Ronen Friedman [Sun, 3 Dec 2023 07:45:18 +0000 (09:45 +0200)]
Merge pull request #54482 from ronen-fr/wip-rf-repl-hp

osd/scrub: decouple being reserved from handling scrub requests

Reviewed-by: Samuel Just <sjust@redhat.com>
19 months agoMerge pull request #54689 from PC-Admin/update-stretch-mode-docs
zdover23 [Sun, 3 Dec 2023 05:56:59 +0000 (06:56 +0100)]
Merge pull request #54689 from PC-Admin/update-stretch-mode-docs

doc/rados: Update stretch mode docs.

Reviewed-by: Zac Dover <zac.dover@gmail.com>
19 months agodoc/rados: update "stretch mode" 54689/head
PC-Admin [Tue, 28 Nov 2023 09:45:52 +0000 (17:45 +0800)]
doc/rados: update "stretch mode"

Update stretch mode docs, min_size and max_size are no longer defined in
the CRUSH map and the example rule given will fail to compile.

Specify that the tiebreaker data centre cannot be defined in CRUSH as
this produces an error.

Signed-off-by: Michael Collins <perthserverplus@gmail.com>
19 months agoosd: fix a missing 'noexcept' on a move ctor 53712/head
Ronen Friedman [Thu, 28 Sep 2023 12:04:06 +0000 (07:04 -0500)]
osd: fix a missing 'noexcept' on a move ctor

as a non-default, non-noexcept move ctor is ignored by
stl containers.

See clang-tidy's performance-noexcept-move-constructor

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
19 months agoMerge pull request #54752 from zdover23/wip-doc-2023-12-02-radosgw-multisite-formatting
zdover23 [Sat, 2 Dec 2023 06:22:12 +0000 (07:22 +0100)]
Merge pull request #54752 from zdover23/wip-doc-2023-12-02-radosgw-multisite-formatting

doc/radosgw: fix formatting

Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
19 months agodoc/radosgw: fix formatting 54752/head
Zac Dover [Sat, 2 Dec 2023 05:38:28 +0000 (06:38 +0100)]
doc/radosgw: fix formatting

Repair the formatting of a string that had a string inside backticks
that itself was inside double asterisks. The presence of the asterisks
around the entire string caused the backticks to appear in the rendered
documentation.

Signed-off-by: Zac Dover <zac.dover@proton.me>
19 months agoMerge pull request #54526 from cbodley/wip-rgw-acl-cleanup
Casey Bodley [Fri, 1 Dec 2023 16:46:33 +0000 (16:46 +0000)]
Merge pull request #54526 from cbodley/wip-rgw-acl-cleanup

rgw/acl: clean up RGWAccessControlPolicy and friends

Reviewed-by: Yuval Lifshitz <ylifshit@redhat.com>
19 months agoMerge pull request #54488 from cbodley/wip-versioned-variant
Casey Bodley [Fri, 1 Dec 2023 16:02:20 +0000 (16:02 +0000)]
Merge pull request #54488 from cbodley/wip-versioned-variant

common: add versioned encodings for std::variant

Reviewed-by: Adam C. Emerson <aemerson@redhat.com>
19 months agotests/scrub: deactivate osd-scrub-dump stand-alone test 54482/head
Ronen Friedman [Fri, 1 Dec 2023 14:48:49 +0000 (08:48 -0600)]
tests/scrub: deactivate osd-scrub-dump stand-alone test

as the scrub reservation changes had made it obsolete.
Note - it is not an issue of fixing the test, but rather
that the tested functionality is no longer there.

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
19 months agocommon: add generate_test_instances() for std::variant 54488/head
Casey Bodley [Tue, 14 Nov 2023 19:43:25 +0000 (14:43 -0500)]
common: add generate_test_instances() for std::variant

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agocommon: add versioned encodings for std::variant
Casey Bodley [Tue, 14 Nov 2023 01:05:47 +0000 (20:05 -0500)]
common: add versioned encodings for std::variant

adds two encoding strategies for `std::variant<>` under the namespaces
`ceph::versioned_variant` and `ceph::converted_variant`

these versioned encodings allow the variant to be extended with new
types, provided that they're always added to the end without changing
or removing existing types. because of this requirement, no default
encoding is provided for `std::variant`. callers must opt in to one
namespace or the other

the `converted_variant` encoding requires the variant's first type T
to use versioned encoding, and guarantees that the variant's encoding
is backward-compatible with T's

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agomgr/dashboard: fs snapshots e2e 54076/head
Nizamudeen A [Fri, 27 Oct 2023 08:15:44 +0000 (13:45 +0530)]
mgr/dashboard: fs snapshots e2e

Fixes: https://tracker.ceph.com/issues/63237
Signed-off-by: Nizamudeen A <nia@redhat.com>
19 months agomgr/dashboard: cephfs subvolume list snapshots
Nizamudeen A [Wed, 18 Oct 2023 17:46:09 +0000 (23:16 +0530)]
mgr/dashboard: cephfs subvolume list snapshots

Added a tab for displaying the subvolume snapshots
- this tab will show an info alert when there are no subvolumes present
- if the subvolume is present, then it'll be auto-selected by default

Implemented a filter to search the groups and subvolumes by its name.
Also added a scrollbar when there are too many items in the nav list

Modified the REST APIs to fetch only the names of the resources and
fetch the info when an API call is requesting for it.

Added unit tests

Fixes: https://tracker.ceph.com/issues/63237
Signed-off-by: Nizamudeen A <nia@redhat.com>
19 months agoMerge pull request #54648 from rhcs-dashboard/fs-rename-fix
Nizamudeen A [Fri, 1 Dec 2023 12:51:49 +0000 (18:21 +0530)]
Merge pull request #54648 from rhcs-dashboard/fs-rename-fix

mgr/dashboard: fs rename only when fs is offline

Reviewed-by: Pedro Gonzalez Gomez <pegonzal@redhat.com>
Reviewed-by: Ankush Behl <cloudbehl@gmail.com>
Reviewed-by: ivoalmeida <NOT@FOUND>
19 months agoMerge pull request #54731 from zdover23/wip-doc-2023-11-30-rados-tshooting-log-and...
zdover23 [Fri, 1 Dec 2023 10:43:24 +0000 (11:43 +0100)]
Merge pull request #54731 from zdover23/wip-doc-2023-11-30-rados-tshooting-log-and-debug-note

doc/rados: improve formatting of log-and-debug.rst

Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
19 months agoMerge pull request #54730 from zdover23/wip-doc-2023-11-30-glossary-monitor-store
zdover23 [Fri, 1 Dec 2023 09:44:41 +0000 (10:44 +0100)]
Merge pull request #54730 from zdover23/wip-doc-2023-11-30-glossary-monitor-store

doc/glossary.rst: add "Monitor Store"

Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
19 months agodoc/rados: improve formatting of log-and-debug.rst 54731/head
Zac Dover [Thu, 30 Nov 2023 08:16:38 +0000 (09:16 +0100)]
doc/rados: improve formatting of log-and-debug.rst

Improve the arrangment of information in the section "Ceph Subsystems"
in doc/rados/troubleshooting/log-and-debug.rst.

Co-authored-by: Anthony D'Atri <anthony.datri@gmail.com>
Signed-off-by: Zac Dover <zac.dover@proton.me>
19 months agoMerge pull request #54724 from ajarr/wip-63673
Ilya Dryomov [Fri, 1 Dec 2023 09:33:10 +0000 (10:33 +0100)]
Merge pull request #54724 from ajarr/wip-63673

qa/workunits/rbd/cli_generic.sh: narrow race window

... when checking that rbd_support module command fails after blocklisting the module's client.

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
19 months agomgr/dashboard: generalized code-block component 54648/head
Nizamudeen A [Thu, 30 Nov 2023 09:04:41 +0000 (14:34 +0530)]
mgr/dashboard: generalized code-block component

Fixes: https://tracker.ceph.com/issues/63608
Signed-off-by: Nizamudeen A <nia@redhat.com>
19 months agocephadm: black format daemons/tracing.py 54441/head
John Mulligan [Thu, 9 Nov 2023 18:59:07 +0000 (13:59 -0500)]
cephadm: black format daemons/tracing.py

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: black format daemons/snmp.py
John Mulligan [Thu, 9 Nov 2023 18:58:53 +0000 (13:58 -0500)]
cephadm: black format daemons/snmp.py

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: black format daemons/nvmeof.py
John Mulligan [Thu, 9 Nov 2023 18:58:41 +0000 (13:58 -0500)]
cephadm: black format daemons/nvmeof.py

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: black format daemons/nfs.py
John Mulligan [Thu, 9 Nov 2023 18:58:30 +0000 (13:58 -0500)]
cephadm: black format daemons/nfs.py

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: black format daemons/monitoring.py
John Mulligan [Thu, 9 Nov 2023 18:58:17 +0000 (13:58 -0500)]
cephadm: black format daemons/monitoring.py

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: black format daemons/iscsi.py
John Mulligan [Thu, 9 Nov 2023 18:58:03 +0000 (13:58 -0500)]
cephadm: black format daemons/iscsi.py

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: black format daemons/ingress.py
John Mulligan [Thu, 9 Nov 2023 18:57:49 +0000 (13:57 -0500)]
cephadm: black format daemons/ingress.py

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: black format daemons/custom.py
John Mulligan [Thu, 9 Nov 2023 18:57:34 +0000 (13:57 -0500)]
cephadm: black format daemons/custom.py

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: black format daemons/ceph.py
John Mulligan [Thu, 9 Nov 2023 18:57:15 +0000 (13:57 -0500)]
cephadm: black format daemons/ceph.py

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: convert all deploy tests to use funkypatch fixture
John Mulligan [Thu, 9 Nov 2023 19:26:35 +0000 (14:26 -0500)]
cephadm: convert all deploy tests to use funkypatch fixture

During the refactor of various daemon type classes some of the tests had
been converted to funkypatch in order to deal with imports occuring over
multiple files. However, this conversion was done piece by piece in
order to make clear what was changing. This left the functions in this
file inconsistent. Change all the remaining function to use funkypatch
for consistency.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: sort imports import daemons/__init__.py
John Mulligan [Thu, 9 Nov 2023 18:49:03 +0000 (13:49 -0500)]
cephadm: sort imports import daemons/__init__.py

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: move ceph classes to a new file
John Mulligan [Thu, 9 Nov 2023 18:46:45 +0000 (13:46 -0500)]
cephadm: move ceph classes to a new file

Move the ceph classes (Ceph, OSD, CephExporter) along with a few heavily
linked functions to a new ceph.py file under the daemons dir.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: move snmp class to a new file
John Mulligan [Thu, 9 Nov 2023 18:11:21 +0000 (13:11 -0500)]
cephadm: move snmp class to a new file

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: move monitoring class to a new file
John Mulligan [Thu, 9 Nov 2023 18:02:20 +0000 (13:02 -0500)]
cephadm: move monitoring class to a new file

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: move nfs class to a new file
John Mulligan [Thu, 9 Nov 2023 14:57:56 +0000 (09:57 -0500)]
cephadm: move nfs class to a new file

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: move iscsi class to a new file
John Mulligan [Thu, 9 Nov 2023 00:42:27 +0000 (19:42 -0500)]
cephadm: move iscsi class to a new file

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: move nvmeof class to a new file
John Mulligan [Thu, 9 Nov 2023 00:34:58 +0000 (19:34 -0500)]
cephadm: move nvmeof class to a new file

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: move haproxy and keepalived classes to a new file
John Mulligan [Thu, 9 Nov 2023 00:23:20 +0000 (19:23 -0500)]
cephadm: move haproxy and keepalived classes to a new file

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: move tracing class to a new file
John Mulligan [Wed, 8 Nov 2023 21:04:15 +0000 (16:04 -0500)]
cephadm: move tracing class to a new file

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: move custom container class to a new file
John Mulligan [Wed, 8 Nov 2023 20:58:36 +0000 (15:58 -0500)]
cephadm: move custom container class to a new file

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: start a cephadmlib.daemons package
John Mulligan [Wed, 8 Nov 2023 20:45:13 +0000 (15:45 -0500)]
cephadm: start a cephadmlib.daemons package

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephamd: update tests to use should_log_to_journald from context_getters
John Mulligan [Thu, 9 Nov 2023 18:46:04 +0000 (13:46 -0500)]
cephamd: update tests to use should_log_to_journald from context_getters

Update tests to import should_log_to_journald from context_getters - the
module that actually defines that function. This makes later refactoring
easier.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: update tests to import dict_get* functions from proper module
John Mulligan [Thu, 9 Nov 2023 14:57:24 +0000 (09:57 -0500)]
cephadm: update tests to import dict_get* functions from proper module

Update the test that import dict_get and dict_get_join to use the
context_getters module - the module that actually defines the functions.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: use funkypatch for setting up common patches in deploy tests
John Mulligan [Thu, 9 Nov 2023 00:21:10 +0000 (19:21 -0500)]
cephadm: use funkypatch for setting up common patches in deploy tests

Add a shim function and convert to the use of the FunkyPatcher class in
the test_deploy.py test functions. Use a shim as to not have to change
all the tests (yet).

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: create deployment_utils module
John Mulligan [Sun, 5 Nov 2023 21:03:53 +0000 (16:03 -0500)]
cephadm: create deployment_utils module

Create a deployment_utils module for deployment related functions that
don't have a better home.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: convert test_mon_crush_location to use funkypatch fixture
John Mulligan [Wed, 8 Nov 2023 19:31:12 +0000 (14:31 -0500)]
cephadm: convert test_mon_crush_location to use funkypatch fixture

The test_mon_crush_location test always seems to have me tinkering
with it during refactoring. Re-do the fixtures to use funkpatch instead
of mock.patch and normal monkeypatch. This looks nicer (IMO) and should
avoid having to frequently mess with it when moving functions during future
refactoring.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: update test to use funkypatch fixture
John Mulligan [Sun, 20 Aug 2023 17:50:31 +0000 (13:50 -0400)]
cephadm: update test to use funkypatch fixture

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: add a new funkypatch fixture based on mock.patch and pytest
John Mulligan [Sun, 20 Aug 2023 17:50:00 +0000 (13:50 -0400)]
cephadm: add a new funkypatch fixture based on mock.patch and pytest

This fixture acts like a combination of mock.patch and pytest's
monkeypatch fixture. It has the additional feature of automatically
finding and patching the same object imported in other modules.  If you
have 'from x import y', where y is a function or class, in both a.py and
b.py it will patch both instances (so long as both a and b are already
imported).
This behavior is useful for cephadm because of the heavy use of the
`from x import y` idiom and how cephadm is being actively refactored.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agocephadm: add a make_run_dir function
John Mulligan [Sun, 5 Nov 2023 21:03:34 +0000 (16:03 -0500)]
cephadm: add a make_run_dir function

This function is roughly the same as make_var_run only it doesn't rely
on shelling out to the install command. Eventually, it will be used
to replace make_var_run in certain locations.

Signed-off-by: John Mulligan <jmulligan@redhat.com>
19 months agorgw/acl: remove virtual destructor of ACLGranteeType 54526/head
Casey Bodley [Tue, 28 Nov 2023 13:51:41 +0000 (08:51 -0500)]
rgw/acl: remove virtual destructor of ACLGranteeType

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl: ACLGrant uses variant for grantee types
Casey Bodley [Sat, 18 Nov 2023 16:27:50 +0000 (11:27 -0500)]
rgw/acl: ACLGrant uses variant for grantee types

use of `ACLGrant::get_id()` was awkward because most grantee types
returned nothing, but emails were returned as `struct rgw_user`. change
the internal representation into a variant, and expose getters for each
grantee type so callers can handle each type specifically. the encoded
format of `ACLGrant` remains unchanged

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl: req_state stores ACLs by value instead of unique_ptr
Casey Bodley [Sat, 18 Nov 2023 15:22:20 +0000 (10:22 -0500)]
rgw/acl: req_state stores ACLs by value instead of unique_ptr

we no longer rely on polymorphism for the s3/swift variants of
`RGWAccessControlPolicy`, so `req_state` can store `bucket_acl`,
`object_acl` and `user_acl` by value

most functions now take these acls by const- or mutable reference
instead of pointers since they won't be nullptr

some code paths won't initialize some of these bucket/object/user acl
variables, and we rely on `RGWAccessControlPolicy::verify_permissions()`
to return false for those because we won't match an empty owner or
array of grants

in only one case, `verify_user_permissions()` has to return true when
`user_acl` is uninitialized, because S3 doesn't have user acls so
uninitialized user acls should not deny access

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/s3: parse_policy() as free function
Casey Bodley [Sat, 18 Nov 2023 02:29:25 +0000 (21:29 -0500)]
rgw/acl/s3: parse_policy() as free function

s3 acl parsing classes no longer inherit from the acl classes
themselves, and are all encapsulated in rgw_acl_s3.cc behind a single
rgw::s3::parse_policy() function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/s3: write_policy_xml() as free function
Casey Bodley [Fri, 17 Nov 2023 20:31:17 +0000 (15:31 -0500)]
rgw/acl/s3: write_policy_xml() as free function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/s3: create_policy_from_headers() as free function
Casey Bodley [Thu, 16 Nov 2023 21:38:31 +0000 (16:38 -0500)]
rgw/acl/s3: create_policy_from_headers() as free function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/s3: create_canned_acl() as free function
Casey Bodley [Thu, 16 Nov 2023 20:13:25 +0000 (15:13 -0500)]
rgw/acl/s3: create_canned_acl() as free function

adds canned acls to base class RGWAccessControlPolicy

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl: use create_default() instead of empty canned acls
Casey Bodley [Thu, 16 Nov 2023 20:11:33 +0000 (15:11 -0500)]
rgw/acl: use create_default() instead of empty canned acls

create_default() adds the same default acl, without the relation to s3
canned acls

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/swift: remove RGWAccessControlPolicy subclasses
Casey Bodley [Thu, 16 Nov 2023 19:05:36 +0000 (14:05 -0500)]
rgw/acl/swift: remove RGWAccessControlPolicy subclasses

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/swift: format_account_acl() as free function
Casey Bodley [Thu, 16 Nov 2023 18:59:57 +0000 (13:59 -0500)]
rgw/acl/swift: format_account_acl() as free function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/swift: create_account_policy() as free function
Casey Bodley [Thu, 16 Nov 2023 18:59:18 +0000 (13:59 -0500)]
rgw/acl/swift: create_account_policy() as free function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/swift: add_grants() as static free function
Casey Bodley [Thu, 16 Nov 2023 18:43:19 +0000 (13:43 -0500)]
rgw/acl/swift: add_grants() as static free function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/swift: add_grants() uses user_to_grant() helper
Casey Bodley [Thu, 16 Nov 2023 18:42:21 +0000 (13:42 -0500)]
rgw/acl/swift: add_grants() uses user_to_grant() helper

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/swift: format_container_acls() as free function
Casey Bodley [Thu, 16 Nov 2023 18:33:30 +0000 (13:33 -0500)]
rgw/acl/swift: format_container_acls() as free function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/swift: merge_policy() as free function
Casey Bodley [Thu, 16 Nov 2023 18:25:36 +0000 (13:25 -0500)]
rgw/acl/swift: merge_policy() as free function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/swift: create_container_policy() as free function
Casey Bodley [Thu, 16 Nov 2023 18:08:45 +0000 (13:08 -0500)]
rgw/acl/swift: create_container_policy() as free function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/swift: parse_grant() as static function
Casey Bodley [Thu, 16 Nov 2023 18:00:25 +0000 (13:00 -0500)]
rgw/acl/swift: parse_grant() as static function

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl/swift: parse acl header with ceph::split()
Casey Bodley [Thu, 16 Nov 2023 17:44:21 +0000 (12:44 -0500)]
rgw/acl/swift: parse acl header with ceph::split()

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl: add_grant() takes const ref
Casey Bodley [Thu, 16 Nov 2023 15:46:35 +0000 (10:46 -0500)]
rgw/acl: add_grant() takes const ref

that also required fixing some const-correctness issues

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl: remove CephContext members
Casey Bodley [Thu, 16 Nov 2023 02:07:59 +0000 (21:07 -0500)]
rgw/acl: remove CephContext members

remove the CephContext member variables and pass in
DoutPrefixProvider for logging where it's necessary

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw: remove unused policy_bl_to_stream()
Casey Bodley [Thu, 16 Nov 2023 02:01:27 +0000 (21:01 -0500)]
rgw: remove unused policy_bl_to_stream()

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl: remove unused virtual compare_group_name()
Casey Bodley [Thu, 16 Nov 2023 01:17:54 +0000 (20:17 -0500)]
rgw/acl: remove unused virtual compare_group_name()

that was the only virtual function, so remove virtual destructors too

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw: ACLOwner as raw struct
Casey Bodley [Mon, 13 Nov 2023 18:14:13 +0000 (13:14 -0500)]
rgw: ACLOwner as raw struct

this was a class with two protected members, but with a getter/setter
for each. this 'encapsulation' only added unnecessary boilerplate

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw: reorder rgw_user members for default operator<=>
Casey Bodley [Sat, 18 Nov 2023 16:43:58 +0000 (11:43 -0500)]
rgw: reorder rgw_user members for default operator<=>

the default operator<=> does a memberwise comparison the same that
rgw_user::compare() did, except that it compared `ns` before `id`

reorder the rgw_user members so that the default operator<=> can
replace compare() and the related comparison operators

replaces uses of rgw_user::compare() with operator== and !=

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agorgw/acl: remove empty base class ACLGrantee
Casey Bodley [Fri, 3 Nov 2023 20:08:28 +0000 (16:08 -0400)]
rgw/acl: remove empty base class ACLGrantee

an unnecessary base class of ACLGrantee_S3 which is just for s3
xml parsing

Signed-off-by: Casey Bodley <cbodley@redhat.com>
19 months agoMerge pull request #54304 from cyx1231st/wip-crimson-make-crosscore-send-ordered
Matan Breizman [Thu, 30 Nov 2023 12:39:31 +0000 (14:39 +0200)]
Merge pull request #54304 from cyx1231st/wip-crimson-make-crosscore-send-ordered

crimson/osd: support to send messages concurrently with exclusive phases

Reviewed-by: Samuel Just <sjust@redhat.com>
Reviewed-by: chunmei-liu <chunmei.liu@intel.com>
19 months agoMerge pull request #54697 from yuvalif/wip-yuval-63314
Yuval Lifshitz [Thu, 30 Nov 2023 12:23:28 +0000 (14:23 +0200)]
Merge pull request #54697 from yuvalif/wip-yuval-63314

rgw/kafka/amqp: fix race conditionn in async completion handlers

reviewed-by: cbodley

19 months agoosd/scrub: handling unexpected scrub requests
Ronen Friedman [Thu, 30 Nov 2023 06:35:29 +0000 (00:35 -0600)]
osd/scrub: handling unexpected scrub requests

if arriving while still handling a previous chunk request,
the handling of of the previous chunk request will be aborted.
No response is sent. The scrubber resets, then handles the new request.

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
19 months agoosd/scrub: separate counters for primary vs. replica scrubs
Ronen Friedman [Mon, 20 Nov 2023 13:31:31 +0000 (07:31 -0600)]
osd/scrub: separate counters for primary vs. replica scrubs

The OSD limits the number of concurrent scrubs performed on its PGs.
This limit is now enforced separately for primary and replica scrubs.

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
19 months agoosd/scrub: skip reserving replicas for high-priority scrubs
Ronen Friedman [Tue, 14 Nov 2023 12:01:08 +0000 (06:01 -0600)]
osd/scrub: skip reserving replicas for high-priority scrubs

(The primary side of the required changes)

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
19 months agoosd/scrub: decouple being reserved from handling scrub requests
Ronen Friedman [Mon, 13 Nov 2023 07:09:45 +0000 (01:09 -0600)]
osd/scrub: decouple being reserved from handling scrub requests

For a replica, following this change:

* 'ReplicaActive' captures the state of the scrubber when
  acting as a replica, from peering to interval change;

* "being reserved" is just a flag maintained by ReplicaActive, and
  is no longer a prerequisite for handling scrub requests.

* each scrub request is now associated with its own 'token' value.

and the following minor simplification:

* the 'should we wait for pushes' decision is now part of the
  code executed on the transition from ReplicaIdle into ReplicaActiveOp.
  StartReplicaNoWait can now be discarded.

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
19 months agoMerge pull request #54305 from rhcs-dashboard/add-tags
Nizamudeen A [Thu, 30 Nov 2023 09:07:29 +0000 (14:37 +0530)]
Merge pull request #54305 from rhcs-dashboard/add-tags

mgr/dashboard: add tags to edit bucket

Reviewed-by: Avan Thakkar <athakkar@redhat.com>
Reviewed-by: Ankush Behl <cloudbehl@gmail.com>
Reviewed-by: Nizamudeen A <nia@redhat.com>
19 months agoMerge pull request #54355 from nobuto-m/info-rbd-stats-pools
Nizamudeen A [Thu, 30 Nov 2023 08:08:54 +0000 (13:38 +0530)]
Merge pull request #54355 from nobuto-m/info-rbd-stats-pools

mgr/dashboard: info on why RBD graphs are empty

Reviewed-by: Ankush Behl <cloudbehl@gmail.com>
Reviewed-by: Nizamudeen A <nia@redhat.com>
19 months agodoc/glossary.rst: add "Monitor Store" 54730/head
Zac Dover [Thu, 30 Nov 2023 07:08:00 +0000 (08:08 +0100)]
doc/glossary.rst: add "Monitor Store"

Add the term "Monitor Store" to the glossary.

Signed-off-by: Zac Dover <zac.dover@proton.me>
19 months agoMerge PR #53431 into main
Venky Shankar [Thu, 30 Nov 2023 05:58:10 +0000 (11:28 +0530)]
Merge PR #53431 into main

* refs/pull/53431/head:
qa: add test cases to verify error reporting works as expected
mgr: fix some doc strings in object_format.py
mgr/tests: test returning error status works as expected
mgr: make object_format's Responder class capable of responding err status
mgr/nfs: report proper errno with err status

Reviewed-by: John Mulligan <jmulligan@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
19 months agoMerge pull request #54631 from rishabh-d-dave/mgr-vol-tests
Rishabh Dave [Thu, 30 Nov 2023 05:17:42 +0000 (10:47 +0530)]
Merge pull request #54631 from rishabh-d-dave/mgr-vol-tests

qa/cephfs: improvements for name generators in test_volumes.py

Reviewed-by: Venky Shankar <vshankar@redhat.com>