Ilya Dryomov [Fri, 16 Jun 2023 12:01:52 +0000 (14:01 +0200)]
qa/workunits/rbd: make continuous export-diff test actually work
The current version is pretty useless:
- "rbd bench" writes the same byte (0xff) over and over again, so
almost all checksumming is in vain
- snapshots are taken in a steady state (i.e. not under I/O), so no
race conditions can get exposed
- even with these caveats, it's not wired up into the suite
Redo this workunit to be a reliable reproducer for the issue fixed
in the previous commit and wire it up for both krbd and rbd-nbd.
Ilya Dryomov [Tue, 13 Jun 2023 11:36:02 +0000 (13:36 +0200)]
librbd: stop passing IOContext to image dispatch write methods
This is a major footgun since any value passed e.g. at the API layer
may be stale by the time we get to object dispatch. All callers are
passing the IOContext returned by get_data_io_context() for their
ImageCtx anyway, highlighting that the parameter is fictitious.
Only the read method can meaningfully take IOContext.
Ilya Dryomov [Mon, 12 Jun 2023 19:45:03 +0000 (21:45 +0200)]
librbd: use an up-to-date snap context when owning the exclusive lock
By effectively moving capturing of the snap context to the API layer,
commit 1d0a3b17f590 ("librbd: pass IOContext to image-extent IO
dispatch methods") introduced a nasty regression. The snap context can
be captured only after exclusive lock is safely held for the duration
of dealing with the image request and even then must be refreshed if
a snapshot creation request is accepted from a peer. This is needed to
ensure correctness of the object map in general and fast-diff states in
particular (OBJECT_EXISTS vs OBJECT_EXISTS_CLEAN) and object deltas
computed based off of them. Otherwise the object map that is forked
for the snapshot isn't guaranteed to accurately reflect the contents of
the snapshot when the snapshot is taken under I/O (as in disabling the
object map may lead to different results being returned for reads).
The regression affects mainly differential backup and snapshot-based
mirroring use cases with object-map and/or fast-diff enabled: since
some object deltas may be incomplete, the destination image may get
corrupted.
This commit represents a reasonable minimal fix: IOContext passed
through to ImageDispatch is effected only for reads and just gets
ignored for writes. The next commit cleans up further by undoing the
passing of IOContext through the image dispatch layers for writes.
Zac Dover [Mon, 12 Jun 2023 11:32:14 +0000 (21:32 +1000)]
doc/rados: add math markup to placement-groups.rst
Add some math markup to some of the mathematical expressions in
doc/rados/operations/placement-groups.rst.
This change has advantages as well as disadvantages. On the one hand,
the mathematical expressions look nicer and are easier to read. On the
other hand, the rendered mathematical expressions are not searchable as
a part of the text, which makes CTRL+F searches useless in finding them.
This PR is offered as an RFC on the matter of whether mathematical
expressions should be rendered with the :math: extension.
Nizamudeen A [Wed, 7 Jun 2023 08:17:56 +0000 (13:47 +0530)]
mgr/dashboard: add popover to cluster status card
Previous dashboard has a popover for the status when there are some
warnings in the Cluster Health. Introducing the same behaviour on the
new landing page
Laura Flores [Mon, 5 Jun 2023 20:23:42 +0000 (15:23 -0500)]
qa/suites/rados: remove rook coverage from the rados suite
The rook team relies on a daily CI system to validate
rook changes. It doesn't seem that the teuthology tests
are maintained, so it makes sense to remove them from the
rados suite.
By removing this symlink, rook test coverage will remain
in the orch suite, and coverage will only be removed from the
rados suite.
Workaround for: https://tracker.ceph.com/issues/58585 Signed-off-by: Laura Flores <lflores@redhat.com>
(cherry picked from commit c26674ef4c6cbbdd94c54cafbd66e98704f044d7)
Zac Dover [Mon, 5 Jun 2023 02:13:28 +0000 (12:13 +1000)]
doc/rados: edit pools.rst (2 of x)
Edit doc/operations/rados/pools.rst.
There remains confusion in this part of the document regarding pg_num
and pgp_num. pg_num and pgp_num are not explained with sufficient
clarity. A future commit will clear up this confusion. There is also
some potential confusion between on the one hand the strings "pg-num"
and "pgp-num" and on the other hand "pg_num" and "pgp_num". The strings
with the hyphens are used in dummy commands, and the strings with the
underscores are used as key names. I think it possible that this could
confuse a reader, but I am open to discussion on the matter.
https://tracker.ceph.com/issues/58485
Co-authored-by: Anthony D'Atri <anthony.datri@gmail.com> Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit fe9a4d2567dbf0ebfc633ed2a0ceb7d86c70f525)
luo rixin [Thu, 25 May 2023 02:39:38 +0000 (10:39 +0800)]
crimson/osd/ops_executer: fix double apply_stats() when writing
As double apply_stats() when writing, the write related metrics such as
the object number and space utilization are doubled. Therefore, just do once in
ops executing process.
Fixes: https://tracker.ceph.com/issues/61227 Signed-off-by: luo rixin <luorixin@huawei.com>
(cherry picked from commit 1dd18476f09130cd0eefaa7e9c35d476631709d2)
John Mulligan [Mon, 19 Sep 2022 17:46:48 +0000 (13:46 -0400)]
doc: update the cephadm download instructions
Starting with reef, cephadm is a compiled (zipapp) python application.
The cephadm script has been renamed and thus the old curl-based
download instructions will no loner work. While cephadm still has
no dependencies outside the Python stdlib, this will be changed in
future versions so it is no longer appropriate to just download the
source file of cephadm and run it either.
This change updates the `Install cephadm` section of the doc to explain
how to acquire a "compiled" version of cephadm as well as:
* moving and tweaking the note that the two installation methods are
distinct
* adding a new note linking to instructions on building cephadm
* moving the distribution-specific installations before the curl-based
installation to subtly hint that we prefer you to get it using
packages if you can
* Noting cephadm's minimal required python verision and how to run it
with a particular python version.
Note from Zac Dover, June 1, 2023: Note: This commit is a cherry-pick of d11cf0e, which was introduced by John Mulligan in #48180. This is one of
three commits introduced in that PR, and this cherry-pick cleans up
omissions I (Zac Dover) inadvertently introduced while attempting to
rectify the merge conflicts in #51843. This should be the final
main-branch-targeting commit that cleans up PR#51483.
Ilya Dryomov [Sat, 27 May 2023 10:28:40 +0000 (12:28 +0200)]
osd/OSDCap: allow rbd.metadata_list method under rbd-read-only profile
This was missed in commit acc447d5de7b ("osd/OSDCap: rbd profile
permits use of rbd.metadata_list cls method") which adjusted only
"profile rbd" OSD cap. Listing image metadata is an essential part
of opening the image and "profile rbd-read-only" OSD cap must allow
it too.
While at it, constrain the existing grant for rbd profile from "any
object in the pool" to just "rbd_info object in the global namespace of
the pool" as this is where pool-level image metadata actually lives.
John Mulligan [Mon, 22 May 2023 18:20:19 +0000 (14:20 -0400)]
doc: add instructions for compiling cephadm
Now that cephadm is based on zipapp, add a short section to the
developer docs explaining how to build cephadm yourself.
Note: This commit is a cherry-pick of 9ad38033cc5c7f177cb8fe3bae696682687e0346, which was introduced by John
Mulligan in #48180. This is one of three commits introduced in that PR,
and this cherry-pick cleans up omissions I (Zac Dover) inadvertently
introduced while attempting to rectify the merge conflicts in #51843. I
expect that one more cherry-picked commit (specifically, d11cf0e82aab8d4cef9d423e5d463a373eaf383a, which cannot be merged easily
until d7921e88d69b4bc355da9c0327cc33e59e7d7abb has been merged into
main, for reasons that are too
Rick-and-Morty-there-should-never-be-more-than-one-dot to go into here)
will follow this one.
John Mulligan [Wed, 24 May 2023 17:42:26 +0000 (13:42 -0400)]
doc: make instructions to get an updated cephadm common
As discussed in person and over the ceph orch weekly, we want all users
to use a recent supported version of cephadm. Previously, the
instructions only had those downloading cephadm with curl using the
"add-repo" and "install" commands to get a up-to-date cephadm build.
According to ADK we've seen cases of users get "old" distro packages
in the past. Change the instructions so that the "update cephadm" steps
are common after acquiring a "bootstrap copy" of cephadm.
Note: This commit is a cherry-pick of d7921e88d69b4bc355da9c0327cc33e59e7d7abb, which was introduced by John
Mulligan in https://github.com/ceph/ceph/pull/48180. This is one of
three commits introduced in that PR, and this cherry-pick cleans up
omissions I (Zac Dover) inadvertently introduced while attempting to
rectify the merge conflicts in https://github.com/ceph/ceph/pull/51843.
I expect that two more cherry-picked commits will follow this one.