Commit Graph

2721 Commits

Author SHA1 Message Date
Ilya Dryomov
8d57d55738
Merge pull request #50230 from idryomov/wip-58833
librbd: call apply_changes() after setting librados_thread_count

Reviewed-by: Mykola Golub <mgolub@suse.com>
Reviewed-by: Christopher Hoffman <choffman@redhat.com>
2023-02-27 14:15:31 +01:00
Ilya Dryomov
b21a379c5b librbd: call apply_changes() after setting librados_thread_count
Otherwise the setting doesn't take effect.  While at it, replace
home-grown stringify() with standard to_string().

Fixes: https://tracker.ceph.com/issues/58833
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2023-02-23 12:50:45 +01:00
Laura Flores
46d0cbf033
Merge pull request #49910 from myoungwon/fix-58587
qa/workunits/rados/test_dedup_tool.sh: reset dedup tier during tests
2023-02-20 14:24:03 -06:00
Ilya Dryomov
f4edd7728a
Merge pull request #49614 from isodude/wip-librbd-misalign-discard
librbd: Fix local rbd mirror journals growing forever

Reviewed-by: Mykola Golub <mgolub@suse.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2023-02-17 18:09:39 +01:00
Lucian Petrut
3fdad23e63 quincy: qa: update test_rbd_wnbd.py to report latency in seconds
At the moment, the latency results are reported in nanoseconds.
In order to improve readability, we'll convert it to seconds.

While at it, we'll fix the fio duration report, which we're
wrongfully dividing by 1000 twice.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-02-16 12:11:58 +00:00
Stefan Chivu
fa62b2add6 qa: Added latency to results table in test_rbd_wnbd.py
Added data regarding completion latency (ns) to the fio results
table, such as min, max, mean, stddev, etc.

Signed-off-by: Stefan Chivu <schivu@cloudbasesolutions.com>
2023-02-16 12:11:48 +00:00
Ilya Dryomov
fcfef0a19e qa/workunits/rbd-nbd: work around "rbd feature disable" hang
"rbd feature disable" appears to reliably hang if the corresponding
remote request is proxied to rbd-nbd (because rbd-nbd happens to own
the exclusive lock after a series of blkdiscard calls) [1].  Work
around it here by enabling journaling before the image is mapped
and disabling it after the image is unmapped.

Also, don't assert on the output of "rbd journal inspect --verbose"
having a certain number of entries.  This is racy: if the script gets
delayed after the last blkdiscard call for some reason, there may be
fewer entries present in the journal or none at all.

[1] https://tracker.ceph.com/issues/58740

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2023-02-16 13:05:05 +01:00
Ilya Dryomov
5cec2670be qa/suites/rbd: fix sporadic "rx-only direction" test failures
The existing

    xmlstarlet sel -t -v  '//mirror/peers/peer[1]/uuid')" = ""

test is bogus since a tx-only peer gets added after the remote
rbd-mirror daemon pings the local cluster.  It happened to pass most
of the time because xmlstarlet filter just failed on an empty peers
array, producing the wrongly expected empty string by accident.

Fixes: https://tracker.ceph.com/issues/58688
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2023-02-10 15:26:27 +01:00
Laura Flores
8b5ab2bc03
Merge pull request #49848 from ljflores/wip-tracker-58545
qa/workunits: give telemetry opt-in check more time
2023-02-02 09:36:20 -06:00
myoungwon oh
b2534d90ec qa/workunits/rados/test_dedup_tool.sh: reset dedup tier during tests
Dedup_tier option needs to be reset whenever every test begins,
because dedup_tier(dedup_chunk_pool) is deleted at the end of each
test---if not, this causes error in case dedup_tier's pool id is
changed.
This commit adds a set command to refresh newly added dedup_tier
pool id.

fixes: https://tracker.ceph.com/issues/58587

Signed-off-by: Myoungwon Oh <myoungwon.oh@samsung.com>
2023-01-30 11:10:15 +09:00
Casey Bodley
2007452b8d qa/workunits/rgw: run-s3tests.sh uses tox
Signed-off-by: Casey Bodley <cbodley@redhat.com>
2023-01-25 23:23:37 -05:00
Laura Flores
65fb727b25
Merge pull request #49314 from SUSE/wip-tserong-qa-crash-chown
qa/workunits/rados/test_crash: chown crash files to ceph user
2023-01-25 17:23:09 -06:00
Venky Shankar
90a43d1cfb
Merge pull request #49796 from batrick/first-damage-big-dir
tools/cephfs/first-damage: fix iteration of big dirfrags

Reviewed-by: Venky Shankar <vshankar@redhat.com>
2023-01-24 10:22:57 +05:30
Laura Flores
833dffa680 qa/workunits: give telemetry opt-in check more time
Previously, we only allotted 2 seconds for the telemetry
opt-in status to disappear. However, it sometimes takes longer
than this for the ceph status to update.

Here, we give the status up to 60 seconds to update.

Fixes: https://tracker.ceph.com/issues/58545
Signed-off-by: Laura Flores <lflores@redhat.com>
2023-01-23 16:51:25 -06:00
Josef Johansson
21a26a7528 librbd: Fix local rbd mirror journals growing forever
This commit fixes commit 7ca1bab90f by pushing properly aligned
discards back to m_image_extents, if corrected.

If discards are misaligned (off 0, len 4608, gran=4096), they are
corrected properly, but only in object_extents and not in
m_image_extents.

When journal_append_event is triggered it will only append from
m_image_extents and does not now about the alignment fixes. In
commit_io_events_extent it will log a message and return without
completing the io since the larger misaligned area was sent to the journal.
This will in turn break rbd journal mirroring since the local client will wait
indefinately on the commit to be completed, which it never does.

This does not effect rbd-mirror in any way, which may be confusing and
dangerous since it's only rbd-mirror that updates ceph health, and not
the local client.

Setting `rbd_skip_partial_discard = false` under client will restore the
pre 7ca1bab behaviour and thus not trigger the bug with journals growing.
This will set `rbd_discard_granularity_bytes = 0` internally. This
setting is only changed during startup of a client.

Fixes: 7ca1bab90f
Fixes: https://tracker.ceph.com/issues/57396
Signed-off-by: Josef Johansson <josef@oderland.se>
2023-01-20 11:59:16 +01:00
Patrick Donnelly
b1a6479c32
tools/cephfs/first-damage: fix iteration of big dirfrags
We have to iterate in chunks otherwise the get_omap_vals API returns
partial results even if the max count is large.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2023-01-19 13:04:50 -05:00
Ilya Dryomov
562a2ad03a
Merge pull request #48848 from stefan-chivu/rbd-wnbd-live-resize
rbd: live resize support for rbd-wnbd

Reviewed-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2023-01-19 17:29:36 +01:00
Lucian Petrut
2b014e159f qa: add windows run-tests.ps1
We have a few Python rbd-wnbd tests that are invoked explicitly
by the ceph-build scripts [1].

There are a few issues with that:

* it's a separate repo that has to be updated whenever we add new
  tests
* new tests that reside in the ceph repo will not be executed by
  the PR check
* some tests may be missing in case of older branches

For this reason, we're adding a new script as part of the Ceph
repo that will take care of invoking the Windows rbd-wnbd tests.

The ceph-build script has already been updated accordingly [2].

[1] https://github.com/ceph/ceph-build/blob/main/scripts/ceph-windows/run_tests#L73-L80
[2] https://github.com/ceph/ceph-build/pull/2094

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
Co-Authored-By: Ionut Balutoiu <ibalutoiu@cloudbasesolutions.com>
2023-01-18 15:32:50 +02:00
Lucian Petrut
0bf85c7be7 qa: add test_rbd_wnbd resize test
We're adding a test for the newly introduced live resize feature.
It will simply extend/shrink the image, wait for the new size to
be picked up and then run FIO tests to validate the resized image.

While at it, we're fixing two unrelated linter warnings:

  E275 missing whitespace after keyword

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-01-16 10:12:12 +02:00
Venky Shankar
6243f33d0b
Merge pull request #49664 from batrick/first-damage-repair-nosnap
tools/cephfs/first-damage: repair specific first=CEPH_NOSNAP damage

Reviewed-by: Venky Shankar <vshankar@redhat.com>
2023-01-10 09:59:51 +05:30
Patrick Donnelly
2ade9390c6
tools/cephfs/first-damage: repair specific first=CEPH_NOSNAP damage
first==CEPH_NOSNAP is never valid. Apparently somehow the MDS may set
this in some code path yet to be discovered, even without snapshots.

Note, we probably should not necessarily automate this fix via the MDS
because we do not know if this dentry (visible in HEAD) should also be
visible before NEXT_SNAP.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
2023-01-07 15:49:46 -05:00
Lucian Petrut
788dd5e7fb qa: test_rbd_wnbd.py - disable PS progress bar
This test uses certain PS commands that attempt to display
a progress bar. However, this can cause issues when invoked
remotely (e.g. by the jenkins job).

For this reason, we're defining a helper (ps_execute) that runs
PS commands, disabling the progress bars and enabling the non
interactive mode.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-01-05 11:41:48 +02:00
Lucian Petrut
65544da400 qa: retry test_rbd_wnbd.py fs operations
Certain FS related operations can fail, especially under load
(e.g. initializing partitions, volume formatting, etc).

For this reason, we're going to introduce some retries.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2023-01-04 07:08:39 +02:00
Lucian Petrut
b52e07cbf3 qa: add some retries to test_rbd_wnbd.py
The following operations may fail right after a block device
is attached:

* retrieving the disk number (can return -1)
* opening the disk
* setting the disk online or writable

For this reason, we'll need to add some retries. For convenience,
we're moving the existing retry logic to a separate decorator.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2022-12-23 19:38:23 +02:00
Lucian Petrut
540a089995 qa: fix test_rbd_wnbd.py, properly retrieving the drive letter
Instead of trying to use the first partiton which may be reserved
by Windows, we'll fetch the first non-empty drive letter from
the disk that we've just mounted.

While at it, we're ensuring that the drive letter is actually a
letter and not a null character, which the Powershell command
returns in case of empty drive letters.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2022-12-23 17:55:25 +02:00
Ilya Dryomov
00332ccbfa
Merge pull request #48929 from petrutlucian94/rbd_py_test
qa: fix test_rbd_wnbd.py

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2022-12-21 11:42:57 +01:00
Lucian Petrut
14c603a7c5 qa: add fs tests to test_rbd_wnbd.py
The Windows rbd-wnbd python test performs various IO operations
against raw disks.

However, it can be useful to test overlaying filesystems as well.
For this reason, we're adding the following tests:

* RbdFsTest
* RbdFsFioTest
* RbdFsStampFioTest

To simplify the implementation, those tests reuse the existing
ones along with a mixin class (RbdFsTestMixin).

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2022-12-16 12:20:02 +02:00
Lucian Petrut
d9decba6ba qa: test_rbd_wnbd.py improvements
We'll make the following improvements to the Windows rbd-wnbd
Python test:

* expose fio write validation, defaulting to crc32c
* change the default fio operation to "rw"
* enable the disk and clear the "rw" flag only if required by the
  test and if "--skip-enabling-disk" is not set (useful with custom
  SAN policies). This operation can take a significant amount of
  time under heavy load.
* print fio read and write results separately instead of
  aggregating them, useful when running rw tests

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2022-12-16 12:15:06 +02:00
Venky Shankar
b2cd0fe8f6 Merge PR #49021 into main
* refs/pull/49021/head:
	qa: switch to https protocol for repos' server

Reviewed-by: Rishabh Dave <ridave@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Dhairya Parmar <dparmar@redhat.com>
2022-12-15 16:51:23 +05:30
Venky Shankar
e6684fa2b3 Merge PR #45312 into main
* refs/pull/45312/head:
	qa: new snapshot test for snapshot naming limits
	mds: limit the snapshot names to 240 characters

Reviewed-by: Xiubo Li <xiubli@redhat.com>
Reviewed-by: Jeff Layton <jlayton@redhat.com>
Reviewed-by: Jos Collin <jcollin@redhat.com>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Kotresh Hiremath Ravishankar <khiremat@redhat.com>
2022-12-12 19:42:55 +05:30
Xiubo Li
89177d6598 qa: switch to https protocol for repos' server
Since the git:// is not reachable any more and have switch to
https://.

The git archive does not support the https protocol, so we couldn't
user the git archive to retrieve the tar ball any more, will split
this into 3 steps:

1, clone the whole ceph repo
2, checkout the commit/tag/branch
3, then change directory to qa/workunits/.

Signed-off-by: Xiubo Li <xiubli@redhat.com>
2022-12-12 21:05:57 +08:00
Tim Serong
93c0456159 qa/workunits/rados/test_crash: chown crash files to ceph user
Fixes: https://tracker.ceph.com/issues/58098
Signed-off-by: Tim Serong <tserong@suse.com>
2022-12-08 12:02:40 +11:00
Laura Flores
4f693d8a57
Merge pull request #48943 from yaarith/fix-telemetry-ident
qa/workunits: identify ceph test clusters
2022-12-07 16:40:03 -06:00
Venky Shankar
e5558ce1a2
Merge pull request #48628 from lxbsz/kclient_fscrypt
qa: cephfs add fscrypt test suite support for kclient

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Rishabh Dave <ridave@redhat.com>
2022-12-06 11:06:58 +05:30
Ilya Dryomov
8780f602a9
Merge pull request #48618 from idryomov/rbd-clone-encryption-part2
librbd: add encryption format support for clones (part 2/2)

Reviewed-by: Mykola Golub <mgolub@suse.com>
Acked-by: Or Ozeri <oro@il.ibm.com>
2022-12-05 17:47:19 +01:00
Ilya Dryomov
8d5d478532 qa/workunits/rbd: add encryption-aware resize test
Note that we are hitting https://tracker.ceph.com/issues/58160 here
because by the time we get to "rbd resize" RAW_DEV mapping owns the
lock (due to a write to /dev/mapper/cryptsetupdev being last).

While at it, resurrect the ability to easily run this script on
vstart clusters -- see commit f737c2855a ("qa/workunits/rbd: make
luks-encryption test work on vstart cluster").

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2022-12-04 18:24:10 +01:00
Ilya Dryomov
a27ee2bdf8 rbd, rbd-nbd: make --encryption-format optional
If no --encryption-format specified at all, default to "luks" for each
specified --encryption-passphrase-file.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2022-12-04 18:19:19 +01:00
Ilya Dryomov
e62e3b6613 rbd, rbd-nbd: accept "luks", "luks1" and "luks2" formats
Since RBD_ENCRYPTION_FORMAT_LUKS1, RBD_ENCRYPTION_FORMAT_LUKS2
and RBD_ENCRYPTION_FORMAT_LUKS aren't treated the same when loading
encryption anymore, "luks1" and "luks2" formats need to be accepted
in addition to "luks" format.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2022-12-04 18:19:19 +01:00
Ilya Dryomov
d642f7804b rbd, rbd-nbd: don't strip trailing newline in passphrase files
One of the stated goals is compatibility with standard LUKS tools,
in particular being able to load encryption on images formatted with
cryptsetup.  cryptsetup doesn't do this and this really interferes
with randomly generated (binary) passphrases.

While at it, open passphrase files as binary -- it communicates the
intent if nothing else on POSIX.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2022-12-04 18:19:19 +01:00
Ilya Dryomov
8f712733af qa: rbd_groups.sh: change interpreter to bash
Commit e0da2a4e8c ("qa/workunits/rbd: Add test to list snapshots of
consistency group") added bash-specific syntax.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2022-12-04 13:20:44 +01:00
Ilya Dryomov
9ca2ec704e
Merge pull request #48549 from pkalever/snap-list
cls/rbd: update last_read in group::snap_list

Reviewed-by: Mykola Golub <mgolub@suse.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2022-12-02 13:18:08 +01:00
Xiubo Li
2a8cc0902e qa: cephfs add filesystem encryption test support
This will allow us to create a encrypted test directory to do the
I/O test.

More coplex fscrypt tests we will use the xfstest-dev later.

Fixes: https://tracker.ceph.com/issues/58133
Signed-off-by: Xiubo Li <xiubli@redhat.com>
2022-12-01 16:33:10 +08:00
Xiubo Li
4c97a9e469 qa: switch to https protocol for ffsb and xfstests-dev repos
Since the git protocol is not reachable any more, just switch it
to https.

Fixes: https://tracker.ceph.com/issues/58133
Signed-off-by: Xiubo Li <xiubli@redhat.com>
2022-12-01 16:33:10 +08:00
Ilya Dryomov
af6ed506f2
Merge pull request #48680 from pkalever/snap-id
rbd: add --snap-id option to "rbd device map" to allow mapping arbitrary snapshots

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2022-11-27 14:10:31 +01:00
Ilya Dryomov
4a7150cd36 qa/workunits/rbd-nbd: clear DEV after detach tests
Otherwise we attempt to unmap it in cleanup(), needlessly.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2022-11-26 13:27:33 +01:00
Ilya Dryomov
5a425927ed mgr/rbd_support: avoid wedging the task queue if pool is removed
rados.ObjectNotFound exception handler was referencing ioctx variable
which is assigned only if the pool exists and rados.open_ioctx() call
succeeds.  This lead to a fatal error

  mgr[rbd_support] Failed to locate pool mypool
  mgr[rbd_support] execute_task: [errno 2] error opening pool 'b'mypool''
  mgr[rbd_support] Fatal runtime error: local variable 'ioctx' referenced before assignment

and wedged the task queue.  No other commands were processed until
ceph-mgr daemon restart.

Fixes: https://tracker.ceph.com/issues/52932
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
2022-11-23 23:11:42 +01:00
Lucian Petrut
5bab166663 qa: fix test_rbd_wnbd.py
The rbd-wnbd Python test now fails as the wnbd driver changed
the bus type from "virtual" to "SAS" in order to accommodate
Microsoft Failover Cluster.

SAS is considered a shared bus, so with the default SAN policy
(offlineShared), the disks will be offline/read-only by
default[1][2].

That being considered, we're updating the test to set the rw disk
flag before attempting any write operations.

[1] https://learn.microsoft.com/en-us/windows-hardware/customize/desktop/unattend/microsoft-windows-partitionmanager-sanpolicy
[2] https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/san

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
2022-11-23 12:59:30 +02:00
Yaarit Hatuka
0b45218830 qa/workunits: identify ceph test clusters
When testing telemetry, we identify clusters with
organization = 'ceph-qa'.

Signed-off-by: Yaarit Hatuka <yaarit@redhat.com>
2022-11-18 15:42:32 +00:00
Laura Flores
bf30531f01 qa/workunits/rados: specify redirect in curl command
This workunit currently grabs files in html form, since
there is a redirect that occurs. If we specify `-L` in the
curl command, it handles redirects and graps the files
appropriately.

Fixes: https://tracker.ceph.com/issues/58046
Signed-off-by: Laura Flores <lflores@redhat.com>
2022-11-18 00:31:59 +00:00
Prasanna Kumar Kalever
92480e6561 qa/workunits/rbd: added tests for --snap-id
Fixes: https://tracker.ceph.com/issues/57902
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
2022-11-10 19:28:30 +05:30