Ronen Friedman [Sun, 29 Dec 2024 11:26:28 +0000 (05:26 -0600)]
qa/standalone/scrub: add build_pg_dicts()
a helper function that builds bash dictionaries:
pg to acting set, pg to primary & pg to pool.
Also added are two helper functions that make use of the dictionaries:
count_common_active() to count the number of common OSDs
in the acting set of two PGs, and find_disjoint_but_primary()
to find a PG that is disjoint from the first PG, apart from
possibly having the same primary OSD.
Ronen Friedman [Thu, 19 Dec 2024 16:02:08 +0000 (10:02 -0600)]
osd/scrub: abort reserving scrub if an operator-initiated scrub is
requested
Handling the case of receiving an operator command while the PG is
scrubbing, but
is waiting for replicas' reservations:
Now that the reservations are queued, the wait may be a very prolonged
one.
Usually - an operator direct scrub command has a priority high enough
to not require waiting for reservations. But in the current
implementation,
it would wait until the running scrub session terminates, and only then
will rerun at that high priority. This is not the intended behavior.
The solution is to abort the existing scrub session, and start the new
one.
Ronen Friedman [Thu, 26 Dec 2024 13:06:10 +0000 (07:06 -0600)]
osd/scrub: register for 'osd_max_scrubs' config changes
Since https://github.com/ceph/ceph/pull/55340, the
osd_max_scrubs (also) affects the parameters of the
async scrub reserver used by the replicas. Thus,
the code must notice and acknowledge changes to this config.
Ronen Friedman [Fri, 22 Nov 2024 18:00:50 +0000 (12:00 -0600)]
osd/scrub: show reservation status in 'pg dump' output
Whenever a PG is selected for scrubbing, and is waiting for
remote reservations, the 'pg dump' output will include the
following text (under the 'SCRUB_SCHEDULING' column):
Reserving. Waiting Ns for OSD.k (n/m)
Ilya Dryomov [Fri, 20 Dec 2024 10:16:58 +0000 (11:16 +0100)]
rbd: drop --pool option from "rbd group image {add,rm}"
It stopped working with removal of get_special_pool_group_names() in
commit 3e8624f157a1 ("rbd: add support for namespaces") over six years
ago. Given how much time has passed, stop accepting this option.
Ilya Dryomov [Tue, 17 Dec 2024 15:06:17 +0000 (16:06 +0100)]
rbd: handle --{group,image}-namespace in "rbd group image {add,rm}"
Currently only passing the namespace as part of the group or image spec
works. If --group-namespace or --image-namespace options are used, the
namespace isn't picked up.
Laura Flores [Tue, 17 Dec 2024 23:18:11 +0000 (17:18 -0600)]
PendingReleaseNotes: add note about tracker #69012
We merged a fix for v19.2.1 that helps alleviate
the worst of this problem (https://tracker.ceph.com/issues/68657),
but it still comes up on occasion. This release note addresses the
remaining issues tracked in https://tracker.ceph.com/issues/69012.
Zac Dover [Thu, 19 Dec 2024 13:19:22 +0000 (23:19 +1000)]
doc/radosgw: edit uadk-accel.rst
Edit the sections of doc/radosgw/uadk-accel.rst that concern the
automatic and manual building of UADK.
This is one in a series of uadk-accel.rst-related changes that includes
the following PRs:
https://github.com/ceph/ceph/pull/60953
https://github.com/ceph/ceph/pull/61128
Oshrey Avraham [Wed, 18 Dec 2024 14:23:40 +0000 (16:23 +0200)]
rgw/notifications: Add tests for RGWPSListTopicsOp::execute()
Tests:
Add comprehensive test cases to verify the behavior of `RGWPSListTopicsOp::execute()` under various scenarios:
Migration case: Validate correct handling when `support_all_zones` is enabled, with v1 in a new state after migration and v2 topics present.
v2 notification case: Ensure proper retrieval when v2 notifications are supported.
v1 notification case: Verify fallback behavior when v2 notifications are unavailable.
Enhancements:
Update `delete_all_topics` to handle v1 responses with the `result` key.
Inject an object map with all possible inconsistencies before
flattening to ensure that something similar to commit 40af4f87b64f
("librbd: flatten operation should use object map") doesn't reappear
in a different form.
Ilya Dryomov [Wed, 27 Nov 2024 10:11:16 +0000 (11:11 +0100)]
librbd: avoid data corruption on flatten when object map is inconsistent
By making flatten skip copyup in case the object is marked
OBJECT_EXISTS or OBJECT_EXISTS_CLEAN, commit 40af4f87b64f ("librbd:
flatten operation should use object map") introduced a critical
regression. If the object map becomes inconsistent (e.g. because
flatten gets interrupted by killing "rbd flatten" process or a client
running on the clone crashes after updating the object map but before
writing to the image), the following attempt to flatten would corrupt
the clone if the copyup is actually still needed.
By design, it's impossible to tell whether the object is "known to
exist" based on the object map -- only telling whether the object is
"known to NOT exist" is possible (i.e. only OBJECT_NONEXISTENT state
is reliable). Negating OBJECT_NONEXISTENT tells that the object "may
exist", not that the object is "known to exist". This is reflected in
the name of object_may_exist() helper that was introduced together with
the object map implementation. Something like object_may_not_exist()
simply can't be constructed given the rest of librbd.
This effectively reverts commits 4c86bccf07b8 ("librbd: add
object_may_not_exist helper") and 40af4f87b64f ("librbd: flatten
operation should use object map").
NVMeoFMultipleNamespacesOfRBDImage alerts the user if a RBD image
is used for multiple namespaces. This is important alerts for cases
where namespaces are created on same image for different gateway group.
Zac Dover [Wed, 18 Dec 2024 09:25:00 +0000 (19:25 +1000)]
doc/radosgw: edit uadk-accel.rst
Incorporate Anthony D'Atri's suggested changes from
https://github.com/ceph/ceph/pull/60953 into doc/radosgw/uadk-accel.rst.
Two questions from that PR remain unclear to me: one is about whether
IOMMU should be disabled for performance on AMD EPYC systems, and the
other is about UADK. The note about UADK will be rewritten in improved
English in a near-future PR and any remaining technical questions that
involve it can be discussed in that PR.
A bogus change introduced as part of PR#54363 (commit fbb7d73) changed multiple 'scrub' commands to 'scheduled-scrub'.
In this one instance - that was wrong.
Aashish Sharma [Fri, 6 Dec 2024 09:57:25 +0000 (15:27 +0530)]
mgr/dashboard: Fix Latency chart data units in rgw overview page
Issue: The Latency chart in the rgw overview page shows incorrect data
unit as the unit that we are passing as an input to the dashboard-area
chart component is `ms` whereas the data that we get from the metrics is
in seconds. Due to this if we pass a value like 0.725s to
the dashboard chart component it will show the value in the chart as
0.725ms whereas it should be 725ms.
Fix: Pass the value in ms as expected to the dashboard area chart
component
Casey Bodley [Mon, 16 Dec 2024 22:10:04 +0000 (17:10 -0500)]
rgw/posix: std::ignore return value of write()
/ceph/src/rgw/driver/posix/notify.h: In member function 'void file::listing::Inotify::signal_shutdown()':
/ceph/src/rgw/driver/posix/notify.h:215:19: error: ignoring return value of 'ssize_t write(int, const void*, size_t)' declared with attribute 'warn_unused_result' [-Werror=unused-result]
215 | (void) write(efd, &msg, sizeof(uint64_t));
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
cephadm/nvmeof: support per-node gateway addresses
Added gateway and discovery address maps to the service specification.
These maps store per-node service addresses. The address is first searched
in the map, then in the spec address configuration. If neither is defined,
the host IP is used as a fallback.
Signed-off-by: Alexander Indenbaum <aindenba@redhat.com>
Naman Munet [Fri, 22 Nov 2024 09:57:44 +0000 (15:27 +0530)]
mgr/dashboard: Administration > Configuration > Some of the config options are not updatable at runtime
Fixes: https://tracker.ceph.com/issues/68976
Fixes Includes:
1) by-passing 'can_update_at_runtime' flag for 'rgw' related configurations as the same can be updated at runtime via CLI.
Also implemented a warning popup for user to make force edit to rgw related configurations.
2) when navigated to Administration >> Configuration, modified configuration will be seen as we see in cli "ceph config dump",
instead of configuration with filter level:basic
Matan Breizman [Mon, 25 Nov 2024 12:02:39 +0000 (12:02 +0000)]
crimson: switch to SeaStore as default objectstore
* Introduce crimson_osd_objectstore with SeaStore as deafult. The global
osd_objectstore which is used by both Classic and Crimson is defaulted
to BlueStore.