]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/log
ceph-ci.git
2 years agoqa/suites/rbd: install qemu-utils in addition to qemu-block-extra on Ubuntu
Ilya Dryomov [Tue, 11 Apr 2023 20:43:58 +0000 (22:43 +0200)]
qa/suites/rbd: install qemu-utils in addition to qemu-block-extra on Ubuntu

qemu-utils is usually pre-installed but, due to what appears to be
a Ubuntu packaging bug, it's not upgraded when qemu-block-extra is
installed:

  The following NEW packages will be installed:
    qemu-block-extra
  The following packages will be upgraded:
    qemu-system-common qemu-system-data qemu-system-gui qemu-system-x86

However, the version of the block driver must match exactly the version
of the qemu-img tool, so the above leads to:

  $ qemu-img convert -f qcow2 -O raw /home/ubuntu/cephtest/qemu/base.client.0.0.qcow2 rbd:rbd/client.0.0
  Failed to initialize module: /usr/lib/x86_64-linux-gnu/qemu/block-rbd.so
  Note: only modules from the same build can be loaded.
  qemu: module block-block-rbd not found, do you want to install qemu-block-extra package?
  qemu-img: Unknown protocol 'rbd'

Fixes: https://tracker.ceph.com/issues/59431
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit c529fdd63a5aae2c598078df05fe9bbef40042dc)

2 years agolibrbd: avoid generating ESHUTDOWN in ManagedLock
Ilya Dryomov [Tue, 28 Mar 2023 18:03:05 +0000 (20:03 +0200)]
librbd: avoid generating ESHUTDOWN in ManagedLock

EBLOCKLISTED has a very special meaning but happens to be an alias for
ESHUTDOWN.  If the client gets blocklisted, we always want to propagate
EBLOCKLISTED error code since it's generated by the OSD.

For ManagedLock use case of indicating that an operation on the lock
raced with lock shut down, meaning that a higher level request can just
be restarted, ERESTART should do.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 76856d90e0e0d73276c06a724091197301f982e9)

2 years agolibrbd: fix recursive locking on owner_lock in ImageDispatch
Ilya Dryomov [Tue, 28 Mar 2023 17:52:42 +0000 (19:52 +0200)]
librbd: fix recursive locking on owner_lock in ImageDispatch

needs_exclusive_lock() calls acquire_lock() with owner_lock held.
If lock acquisiton races with lock shut down, ManagedLock completes
ImageDispatch context directly and dispatch is retried immediately on
the same thread (due to DISPATCH_RESULT_RESTART).  This results in
recursion into needs_exclusive_lock() and, barring locking issues, can
lead to unbounded stack growth if lock shut down takes its time.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 1d943f8c47b3510e47d40701e9acd213706754e5)

2 years agotest/librados_test_stub: drop watches only after actually blocklisting
Ilya Dryomov [Tue, 4 Apr 2023 15:21:16 +0000 (17:21 +0200)]
test/librados_test_stub: drop watches only after actually blocklisting

Eliminate a race where a client is able to submit an operation after
WatchCtx2::handle_error() is invoked on its watch due to blocklisting.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit a14498eff645e9e154e4d1a3cc436453b8401d89)

2 years agotest/librados_test_stub: raise a watch error on blocklisting
Ilya Dryomov [Thu, 30 Mar 2023 16:22:24 +0000 (18:22 +0200)]
test/librados_test_stub: raise a watch error on blocklisting

Simulate getting MWatchNotify CEPH_WATCH_EVENT_DISCONNECT message after
the client is blocklisted.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 0dfe87d3b6ed52cee6f6660b42af42a8dd7708bb)

2 years agolibrbd: Propagate EBLOCKLIST in send_acquire_lock
Christopher Hoffman [Tue, 21 Mar 2023 16:15:04 +0000 (16:15 +0000)]
librbd: Propagate EBLOCKLIST in send_acquire_lock

During send_acquire_lock, there's a case where
there's no watcher handle present and lock request is delayed.
If the client is blocklisted, the delayed request will not
continue and the call that requested lock will never complete.

The lock process will now propagate -EBLOCKLIST, to callback
instead of indefinitely delaying.

Fixes: https://tracker.ceph.com/issues/59115
Signed-off-by: Christopher Hoffman <choffman@redhat.com>
(cherry picked from commit 6a0aeadc31ab1942c42c6e466183148f1d3752be)

2 years agoPendingReleaseNotes: add a note for rbd-mirror daemon perf counters
Ilya Dryomov [Thu, 6 Apr 2023 10:32:11 +0000 (12:32 +0200)]
PendingReleaseNotes: add a note for rbd-mirror daemon perf counters

This was missed in commit 1a1477b9fd7f ("rbd-mirror: add and rename
perf counters for journal and snapshot mirroring").

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit e89f5815134fbeea4fa4894082c71a4ebd249794)

2 years agolibrbd: clear Image::list_watchers() list before populating it
Ilya Dryomov [Thu, 30 Mar 2023 11:58:20 +0000 (13:58 +0200)]
librbd: clear Image::list_watchers() list before populating it

The "append to the passed list" behavior is confusing and not what the
corresponding C API (rbd_watchers_list) or other similar C++ APIs (e.g.
list_lockers) do.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit e11097bc4cf82b997ad1e8e21a8cd9400767f40d)

2 years agolibrbd: fix wrong attribute for rbd_quiesce_complete api
Dongsheng Yang [Wed, 15 Mar 2023 06:54:39 +0000 (06:54 +0000)]
librbd: fix wrong attribute for rbd_quiesce_complete api

When we use rbd_quiesce_complete api, we got an error:
/usr/bin/ld: undefined reference to `rbd_quiesce_complete'

Then we found the problem is the symbol of rbd_quiesce_complete
in librbd.so is LOCAL. After some investigation, we found
the attribute of rbd_quiesce_complete api is CEPH_RADOS_API
rather than expected CEPH_RBD_API.

Fixes: https://tracker.ceph.com/issues/59208
Signed-off-by: Dongsheng Yang <dongsheng.yang.linux@gmail.com>
(cherry picked from commit 51a2b707a3074e000b310fc20901d5038b15ea0c)

2 years agorbd: improve log msgs when failing to enable mirroring on image
Prasanna Kumar Kalever [Thu, 2 Mar 2023 10:29:19 +0000 (15:59 +0530)]
rbd: improve log msgs when failing to enable mirroring on image

Attempting to enable mirroring on an an image within a namespace bails
out without any useful msg.

$ rbd mirror image enable mi_pool/ns_0/big snapshot
2021-11-17T08:33:21.321+0000 7f4b36f9c2c0 -1 librbd::api::Mirror:
  image_enable: cannot enable mirroring in the current pool mirroring mode

Fixes: https://tracker.ceph.com/issues/58895
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
(cherry picked from commit 828a0dea2d40ba0c1aa0a9d4b211f0fabc854350)

2 years agoMerge pull request #50869 from rhcs-dashboard/wip-59323-reef
Nizamudeen A [Wed, 5 Apr 2023 17:41:26 +0000 (23:11 +0530)]
Merge pull request #50869 from rhcs-dashboard/wip-59323-reef

reef: mgr/dashboard: fix displaying mirror image progress

Reviewed-by: Pegonzal <NOT@FOUND>
Reviewed-by: Nizamudeen A <nia@redhat.com>
2 years agoMerge pull request #50864 from zdover23/wip-doc-2023-04-05-backport-50855-to-reef
Anthony D'Atri [Wed, 5 Apr 2023 13:25:12 +0000 (09:25 -0400)]
Merge pull request #50864 from zdover23/wip-doc-2023-04-05-backport-50855-to-reef

reef: doc/rados/ops: edit monitoring-osd-pg.rst (1 of x)

2 years agomgr/dashboard: fix displaying mirror image progress
Pere Diaz Bou [Mon, 3 Apr 2023 15:22:35 +0000 (17:22 +0200)]
mgr/dashboard: fix displaying mirror image progress

Signed-off-by: Pere Diaz Bou <pere-altea@hotmail.com>
(cherry picked from commit 80960387fbb6d49c3681f4c9e249c441a891462a)

2 years agodoc/rados/ops: edit monitoring-osd-pg.rst (1 of x)
Zac Dover [Tue, 4 Apr 2023 03:29:15 +0000 (13:29 +1000)]
doc/rados/ops: edit monitoring-osd-pg.rst (1 of x)

Line-edit doc/rados/operations/monitoring-osd-pg.rst (1 of x).

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 bd213c244e8a387c98358ac41f4802e102e89c63)

2 years agoMerge pull request #50852 from zdover23/wip-doc-2023-04-04-backport-50851-to-reef
Anthony D'Atri [Mon, 3 Apr 2023 22:22:03 +0000 (18:22 -0400)]
Merge pull request #50852 from zdover23/wip-doc-2023-04-04-backport-50851-to-reef

reef: doc/rados/ops: add ceph-medic documentation

2 years agodoc/rados/ops: add ceph-medic documentation
Zac Dover [Mon, 3 Apr 2023 20:57:27 +0000 (06:57 +1000)]
doc/rados/ops: add ceph-medic documentation

Add a link to the ceph-medic documentation to
doc/rados/operations/monitoring.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit b2a409da26b508e5a51e3becbce16b7ecaffcc1d)

2 years agoMerge pull request #50758 from ceph/wip-yuriw-fix-upgrades-reef
Yuri Weinstein [Mon, 3 Apr 2023 18:30:33 +0000 (11:30 -0700)]
Merge pull request #50758 from ceph/wip-yuriw-fix-upgrades-reef

qa/upgrade: consistently use the tip of the branch as the start version

Reviewed-by: Ilya Dryomov <idryomov@redhat.com>
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Reviewed-by: Neha Ojha <nojha@redhat.com>
Reviewed-by: Laura Flores <lflores@redhat.com>
2 years agoqa/upgrade: consistently use the tip of the branch as the start version
Yuri Weinstein [Wed, 29 Mar 2023 21:18:00 +0000 (14:18 -0700)]
qa/upgrade: consistently use the tip of the branch as the start version

Also corrected line to use `image: quay.ceph.io/ceph-ci/ceph:*`
In order to make sure that latest versions of ceph is used as initial install

Fixes: https://tracker.ceph.com/issues/58914
Signed-off-by: Yuri Weinstein <yweinste@redhat.com>
2 years agoMerge pull request #50830 from zdover23/wip-doc-2023-04-02-backport-50818-to-reef
Anthony D'Atri [Sun, 2 Apr 2023 12:59:19 +0000 (08:59 -0400)]
Merge pull request #50830 from zdover23/wip-doc-2023-04-02-backport-50818-to-reef

reef: doc/cephfs: Improve fs-volumes.rst

2 years agodoc/cephfs: Improve fs-volumes.rst
Anthony D'Atri [Fri, 31 Mar 2023 13:37:52 +0000 (09:37 -0400)]
doc/cephfs: Improve fs-volumes.rst

Signed-off-by: Anthony D'Atri <anthonyeleven@users.noreply.github.com>
(cherry picked from commit c8e1f3ac3db513004fbfbb0049757ddc2bca291a)

2 years agoMerge pull request #50481 from ljflores/wip-tracker-58050-reef
Yuri Weinstein [Fri, 31 Mar 2023 22:43:02 +0000 (15:43 -0700)]
Merge pull request #50481 from ljflores/wip-tracker-58050-reef

reef: mgr/telemetry: make sure histograms are formatted in `all` commands

Reviewed-by: Yaarit Hatuka <yaarithatuka@gmail.com>
2 years agoMerge pull request #50475 from rzarzynski/wip-aclamk-harmonize-bluefs-log-reef
Yuri Weinstein [Fri, 31 Mar 2023 22:41:46 +0000 (15:41 -0700)]
Merge pull request #50475 from rzarzynski/wip-aclamk-harmonize-bluefs-log-reef

reef: os/bluestore: BlueFS: harmonize log read and writes modes

Reviewed-by: Igor Fedotov <ifedotov@suse.com>
Reviewed-by: Adam Kupczyk <akupczyk@redhat.com>
2 years agoMerge pull request #50822 from zdover23/wip-doc-2023-04-01-backport-50670-to-reef
Anthony D'Atri [Fri, 31 Mar 2023 20:04:37 +0000 (16:04 -0400)]
Merge pull request #50822 from zdover23/wip-doc-2023-04-01-backport-50670-to-reef

reef: doc/rados: edit ops/monitoring.rst (1 of 3)

2 years agodoc/rados: edit ops/monitoring.rst (1 of 3)
Zac Dover [Sat, 25 Mar 2023 18:51:50 +0000 (04:51 +1000)]
doc/rados: edit ops/monitoring.rst (1 of 3)

Line-edit the first third of doc/rados/operations/monitoring.rst.

https://tracker.ceph.com/issues/58485

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit bc5f404a7876f887d0c7a2dedee5391f66ab0505)

2 years agoMerge pull request #50799 from zdover23/wip-doc-2023-03-31-backport-45354-to-reef
Anthony D'Atri [Fri, 31 Mar 2023 13:57:47 +0000 (09:57 -0400)]
Merge pull request #50799 from zdover23/wip-doc-2023-03-31-backport-45354-to-reef

reef: doc/msgr2: update dual stack status

2 years agoMerge pull request #50802 from zdover23/wip-doc-2023-03-31-backport-50554-to-reef
Anthony D'Atri [Fri, 31 Mar 2023 13:53:49 +0000 (09:53 -0400)]
Merge pull request #50802 from zdover23/wip-doc-2023-03-31-backport-50554-to-reef

reef: doc/rados: line-edit pg-repair.rst

2 years agodoc/rados: line-edit pg-repair.rst
Zac Dover [Thu, 16 Mar 2023 02:27:44 +0000 (12:27 +1000)]
doc/rados: line-edit pg-repair.rst

Line edit pg-repair.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit b7c19dac2dfdcbc50515e83d952fb25070496c1c)

2 years agodoc/msgr2: update dual stack status
Dan van der Ster [Fri, 11 Mar 2022 14:15:20 +0000 (15:15 +0100)]
doc/msgr2: update dual stack status

Signed-off-by: Dan van der Ster <daniel.vanderster@cern.ch>
(cherry picked from commit c7eaeb4dff1fca967046bcd9b53548eabd18012e)

2 years agoMerge pull request #50796 from zdover23/wip-doc-2023-03-31-backport-50674-to-reef
Anthony D'Atri [Thu, 30 Mar 2023 23:56:30 +0000 (19:56 -0400)]
Merge pull request #50796 from zdover23/wip-doc-2023-03-31-backport-50674-to-reef

reef: doc/rados/ops: edit health-checks.rst (1 of x)

2 years agodoc/rados/ops: edit health-checks.rst (1 of x)
Zac Dover [Sat, 25 Mar 2023 20:02:19 +0000 (06:02 +1000)]
doc/rados/ops: edit health-checks.rst (1 of x)

Edit docs/rados/operations/health-checks.rst (1 of x).

https://tracker.ceph.com/issues/58485

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit cb1e20f879edb82ae619693a4f1f5e88fd0593dd)

2 years agoMerge pull request #50769 from zdover23/wip-doc-2023-03-30-backport-50742-to-reef
zdover23 [Thu, 30 Mar 2023 07:16:12 +0000 (17:16 +1000)]
Merge pull request #50769 from zdover23/wip-doc-2023-03-30-backport-50742-to-reef

reef: doc/start: update "notify us" section

Reviewed-by: Cole Mitchell <cole.mitchell@gmail.com>
2 years agoMerge pull request #50787 from zdover23/wip-doc-2023-03-30-backport-50764-to-reef
zdover23 [Thu, 30 Mar 2023 07:15:11 +0000 (17:15 +1000)]
Merge pull request #50787 from zdover23/wip-doc-2023-03-30-backport-50764-to-reef

reef: doc/start: format procedure in documenting-ceph

Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
2 years agoMerge pull request #50609 from rhcs-dashboard/wip-59094-reef
Nizamudeen A [Thu, 30 Mar 2023 06:43:43 +0000 (12:13 +0530)]
Merge pull request #50609 from rhcs-dashboard/wip-59094-reef

reef: mgr/dashboard: add button toggle to switch between landing pages

Reviewed-by: Pegonzal <NOT@FOUND>
Reviewed-by: Avan Thakkar <athakkar@redhat.com>
2 years agodoc/start: format procedure in documenting-ceph
Zac Dover [Thu, 30 Mar 2023 00:54:52 +0000 (10:54 +1000)]
doc/start: format procedure in documenting-ceph

Organize three steps in a procedure into one step with three sub-steps.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 6f3cd78f6116f3e19a8f6c5e0ebda816067a334e)

2 years agoMerge pull request #50604 from neesingh-rh/wip-59912-reef
Venky Shankar [Thu, 30 Mar 2023 02:45:14 +0000 (08:15 +0530)]
Merge pull request #50604 from neesingh-rh/wip-59912-reef

reef: cephfs-top: Handle METRIC_TYPE_NONE fields for sorting

Reviewed-by: Venky Shankar <vshankar@redhat.com>
2 years agodoc/start: update "notify us" section
Zac Dover [Wed, 29 Mar 2023 13:47:38 +0000 (23:47 +1000)]
doc/start: update "notify us" section

Rewrite the "Notify Us" section in doc/start/documenting-ceph.rst so
that it is written in English sentences.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 613ece24777c4b222054fe9a6d82ba51949c45ea)

2 years agoMerge pull request #50761 from zdover23/wip-doc-2023-03-30-backport-50744-to-reef
Anthony D'Atri [Wed, 29 Mar 2023 22:31:32 +0000 (18:31 -0400)]
Merge pull request #50761 from zdover23/wip-doc-2023-03-30-backport-50744-to-reef

reef: doc/rados: add link to ops/health-checks.rst

2 years agodoc/rados: add link to ops/health-checks.rst
Zac Dover [Wed, 29 Mar 2023 14:25:23 +0000 (00:25 +1000)]
doc/rados: add link to ops/health-checks.rst

Add an internal navigation link to
doc/rados/operations/health-checks.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit f2f968f65bd1f1a6975fd340c66703cea335dcf6)
(cherry picked from commit 1ddc2b410258449e5d89a415a0494da2b8a79060)

2 years agoMerge pull request #50751 from zdover23/wip-doc-2023-03-30-backport-50750-to-reef
Anthony D'Atri [Wed, 29 Mar 2023 19:33:23 +0000 (15:33 -0400)]
Merge pull request #50751 from zdover23/wip-doc-2023-03-30-backport-50750-to-reef

reef: doc/rados/operations: Fix typo in erasure-code.rst

2 years agodoc/rados/operations: Fix typo in erasure-code.rst
SAINITHIN.ARTHAM [Wed, 29 Mar 2023 18:16:32 +0000 (23:46 +0530)]
doc/rados/operations: Fix typo in erasure-code.rst

Signed-off-by: Sainithin Artham <sai.artham.19cse@bmu.edu.in>
(cherry picked from commit 3269fea2a209928137e55db16328c581988c048a)

2 years agoMerge pull request #50739 from zdover23/wip-doc-2023-03-29-backport-50723-to-reef
Anthony D'Atri [Wed, 29 Mar 2023 14:16:26 +0000 (10:16 -0400)]
Merge pull request #50739 from zdover23/wip-doc-2023-03-29-backport-50723-to-reef

reef: doc/start: documenting-ceph - add squash procedure

2 years agodoc/start: documenting-ceph - add squash procedure
Zac Dover [Tue, 28 Mar 2023 09:29:40 +0000 (19:29 +1000)]
doc/start: documenting-ceph - add squash procedure

Add a procedure to doc/start/documenting-ceph.rst that explains how to
perform an interactive rebase to squash commits.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 71ee225d7b8bf54bd190a8b1f2422c6837601f16)

2 years agoMerge pull request #50701 from zdover23/wip-doc-2023-03-28-backport-50697-to-reef
Anthony D'Atri [Tue, 28 Mar 2023 02:45:03 +0000 (22:45 -0400)]
Merge pull request #50701 from zdover23/wip-doc-2023-03-28-backport-50697-to-reef

reef: doc/glossary: add "Scrubbing"

2 years agodoc/glossary: add "Scrubbing"
Zac Dover [Mon, 27 Mar 2023 20:48:32 +0000 (06:48 +1000)]
doc/glossary: add "Scrubbing"

Add "Scrubbing" to the glossary.

Co-authored-by: Anthony D'Atri <anthony.datri@gmail.com>
Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 4a66819da48cee430ca74830e1a6f63685b6b240)

2 years agoMerge pull request #50484 from cbodley/wip-58932-reef
Yuri Weinstein [Mon, 27 Mar 2023 19:51:00 +0000 (12:51 -0700)]
Merge pull request #50484 from cbodley/wip-58932-reef

reef: rgw/admin: 'bucket stats' displays non-empty time

Reviewed-by: Daniel Gryniewicz <dang@redhat.com>
2 years agoMerge pull request #50688 from weirdwiz/wip-59175-reef
Ilya Dryomov [Mon, 27 Mar 2023 16:41:54 +0000 (18:41 +0200)]
Merge pull request #50688 from weirdwiz/wip-59175-reef

reef: rbd-mirror: switch to labeled perf counters

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2 years agorbd-mirror: add and rename perf counters for journal and snapshot mirroring
Divyansh Kamboj [Fri, 17 Mar 2023 09:19:14 +0000 (14:49 +0530)]
rbd-mirror: add and rename perf counters for journal and snapshot mirroring

This commit renames the existing snapshot and journal based performance
counters in the rbd-mirror daemon to better reflect their purpose.
Additionally, new perf counters have been added to provide more detailed
information about the synchronization of snapshots between the source
and destination clusters.

This commit also switches to use labels instead of having the image spec
in the name of the counter.

Signed-off-by: Divyansh Kamboj <dkamboj@redhat.com>
(cherry picked from commit 1a1477b9fd7f3fcf7eb66c8a768476bea1322d1d)

2 years agoMerge pull request #50677 from zdover23/wip-doc-2023-03-27-backport-50675-to-reef
Anthony D'Atri [Sun, 26 Mar 2023 19:33:04 +0000 (15:33 -0400)]
Merge pull request #50677 from zdover23/wip-doc-2023-03-27-backport-50675-to-reef

reef: doc/rados: clean up ops/bluestore-migration.rst

2 years agodoc/rados: clean up ops/bluestore-migration.rst
Zac Dover [Sun, 26 Mar 2023 15:03:58 +0000 (01:03 +1000)]
doc/rados: clean up ops/bluestore-migration.rst

Clean up internal links, fix the numbering of a procedure, and implement
Anthony D'Atri's suggestions in
https://github.com/ceph/ceph/pull/50487 and
https://github.com/ceph/ceph/pull/50488.

https://tracker.ceph.com/issues/58485

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit b28be76d0f9a5d78943fe3c583a234d0b50356f1)

2 years agoMerge pull request #50656 from petrutlucian94/wip-59161-reef
Ilya Dryomov [Sun, 26 Mar 2023 19:00:26 +0000 (21:00 +0200)]
Merge pull request #50656 from petrutlucian94/wip-59161-reef

reef: rbd-wnbd: optionally handle wnbd adapter restart events

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2 years agoMerge pull request #50671 from zdover23/wip-doc-2023-03-26-backport-50654-to-reef
colemitchell [Sat, 25 Mar 2023 19:56:08 +0000 (15:56 -0400)]
Merge pull request #50671 from zdover23/wip-doc-2023-03-26-backport-50654-to-reef

reef: doc/glossary: add "User"

Reviewed-by: Cole Mitchell <cole.mitchell.ceph@gmail.com>
2 years agodoc/glossary: add "User"
Zac Dover [Fri, 24 Mar 2023 10:56:51 +0000 (20:56 +1000)]
doc/glossary: add "User"

Add "User" to glossary.rst.

Co-authored-by: Anthony D'Atri <anthony.datri@gmail.com>
Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit fd6bfaf3fe6337511dd7ab344c2936f22a5d43bf)

2 years agoMerge pull request #50661 from zdover23/wip-doc-2023-03-25-backport-50660-to-reef
Anthony D'Atri [Fri, 24 Mar 2023 18:52:38 +0000 (14:52 -0400)]
Merge pull request #50661 from zdover23/wip-doc-2023-03-25-backport-50660-to-reef

reef: doc/operations: fix prompt in bluestore-migration

2 years agodoc/operations: fix prompt in bluestore-migration
Zac Dover [Fri, 24 Mar 2023 17:47:10 +0000 (03:47 +1000)]
doc/operations: fix prompt in bluestore-migration

Fix a single prompt in bluestore-migration.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 5e54641aec134188c8001e212ea66c1a15d5945c)

2 years agoMerge pull request #50629 from mkogan1/wip-59126-reef
Yuri Weinstein [Fri, 24 Mar 2023 16:40:43 +0000 (09:40 -0700)]
Merge pull request #50629 from mkogan1/wip-59126-reef

reef: rgw : fix python script using s3cmd with error code 403

Reviewed-by: Casey Bodley <cbodley@redhat.com>
2 years agoMerge pull request #50603 from mkogan1/wip-59004-reef
Yuri Weinstein [Fri, 24 Mar 2023 16:40:13 +0000 (09:40 -0700)]
Merge pull request #50603 from mkogan1/wip-59004-reef

reef: qa: d3n: fix test failure when "inline_data": false

Reviewed-by: Casey Bodley <cbodley@redhat.com>
2 years agoMerge pull request #50577 from cbodley/wip-qa-reef-ubuntu22
Yuri Weinstein [Fri, 24 Mar 2023 16:39:40 +0000 (09:39 -0700)]
Merge pull request #50577 from cbodley/wip-qa-reef-ubuntu22

reef: qa/distros: add ubuntu 22 as supported distro

Reviewed-by: Ilya Dryomov <idryomov@redhat.com>
2 years agoMerge pull request #50509 from ivancich/wip-59055-reef
Yuri Weinstein [Fri, 24 Mar 2023 16:38:30 +0000 (09:38 -0700)]
Merge pull request #50509 from ivancich/wip-59055-reef

reef: rgw: experimental support for restoring a lost bucket index

Reviewed-by: Shilpa Jagannath <smanjara@redhat.com>
2 years agorbd-wnbd: consistently use negative error codes in rbd-wnbd
Lucian Petrut [Thu, 23 Mar 2023 08:24:01 +0000 (08:24 +0000)]
rbd-wnbd: consistently use negative error codes in rbd-wnbd

The rbd-wnbd iterators return positive errors, which is why
in certain cases we may end up with both positive and negative
error codes.

This change ensures that we'll consistently use negative
error codes.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
(cherry picked from commit 98a7aff741eb95bcc98df625d6558d726711a5fb)

2 years agocommon, rbd-wnbd: bump Windows log level
Lucian Petrut [Wed, 7 Dec 2022 13:18:48 +0000 (15:18 +0200)]
common, rbd-wnbd: bump Windows log level

We're increasing the log level for certain Windows operational log
messages.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
(cherry picked from commit 3d8afc00215146fbc0226c2c6ccc7cb5dd3a2bb5)

2 years agorbd-wnbd: optionally handle wnbd adapter restart events
Lucian Petrut [Wed, 16 Nov 2022 11:24:34 +0000 (13:24 +0200)]
rbd-wnbd: optionally handle wnbd adapter restart events

The WNBD adapter may be reset in certain situations (e.g. driver
upgrade, MS WHQL tests, etc).

We're going to monitor the WNBD adapter using WMI[1] events, restarting
the rbd-wnbd disk mappings whenever necessary. Adapter monitoring can be
enabled by passing the --adapter-monitoring-enabled flag to the service.

This feature is optional for the following reasons:

* it's mainly used during development / driver certification
* we had to use a relatively small polling interval, which might imply
  additional resource usage. WMI quotas also have to be considered.

While at it, we're updating two lambdas that are submitted to thread pools,
avoiding default reference capturing and explicitly specifying the variables
that get copied.

[1] https://learn.microsoft.com/en-us/windows/win32/wmisdk/wmi-start-page

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
(cherry picked from commit 0c25ca656430b4d5280ab7d033495ad8ce4e776c)

2 years agocommon: add win32/wstring.h
Lucian Petrut [Wed, 16 Nov 2022 08:50:14 +0000 (10:50 +0200)]
common: add win32/wstring.h

Windows APIs heavily use wchar. ceph-dokan and rbd-wnbd
have some duplicated helpers that convert wstrings to/from
utf8 strings.

To avoid duplication and allow reusing those helpers, we're moving
them to common/win32/wstring.h.

We're using the "win32" subfolder because it's unlikely that this
will ever be used on other platforms.

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
(cherry picked from commit a47caa156a4e667d6b9ff7236cc9148ba37ea772)

2 years agoMerge pull request #50640 from zdover23/wip-doc-2023-03-23-backport-50634-to-reef
Anthony D'Atri [Thu, 23 Mar 2023 13:19:37 +0000 (09:19 -0400)]
Merge pull request #50640 from zdover23/wip-doc-2023-03-23-backport-50634-to-reef

reef: doc/rados: edit user-management.rst (1 of x)

2 years agodoc/rados: edit user-management.rst (1 of x)
Zac Dover [Thu, 23 Mar 2023 02:21:06 +0000 (12:21 +1000)]
doc/rados: edit user-management.rst (1 of x)

Edit doc/rados/operations/user-management.rst. (1 of x)

Co-authored-by: Anthony D'Atri <anthony.datri@gmail.com>
Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 3f90958909815a287279eccb22193ba5d67cfc1d)

2 years agorgw : fix python script using s3cmd with error code 403 w/https
Mark Kogan [Tue, 21 Mar 2023 16:30:12 +0000 (18:30 +0200)]
rgw : fix python script using s3cmd with error code 403 w/https

Fixes: https://tracker.ceph.com/issues/54104
Signed-off-by: Mark Kogan <mkogan@redhat.com>
(cherry picked from commit 2cb94411801201b53789b3b9b509abccb63c4b1f)

2 years agorgw : fix python script using s3cmd with error code 403
cao.leilc [Mon, 12 Dec 2022 01:50:20 +0000 (09:50 +0800)]
rgw : fix python script using s3cmd with error code 403

Fixes: https://tracker.ceph.com/issues/54104
Signed-off-by: caolei <cao.leilc@inspur.com>
(cherry picked from commit a10baddb82b6febfb1765ccb3d3c2d007b1f2aee)

2 years agoMerge pull request #50618 from zdover23/wip-doc-2023-03-22-backport-50606-to-reef
Anthony D'Atri [Wed, 22 Mar 2023 03:34:03 +0000 (23:34 -0400)]
Merge pull request #50618 from zdover23/wip-doc-2023-03-22-backport-50606-to-reef

reef: doc/rados: line-edit erasure-code.rst

2 years agodoc/rados: line-edit erasure-code.rst
Zac Dover [Tue, 21 Mar 2023 12:27:15 +0000 (22:27 +1000)]
doc/rados: line-edit erasure-code.rst

Line-edit doc/rados/operations/erasure-code.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 2ff9965e02756636f8d33fd96b7c909f2fca7414)

2 years agomgr/dashboard: add button toggle to switch between new and old landing page
Pedro Gonzalez Gomez [Tue, 14 Feb 2023 10:21:57 +0000 (11:21 +0100)]
mgr/dashboard: add button toggle to switch between new and old landing page

Signed-off-by: Pedro Gonzalez Gomez <pegonzal@redhat.com>
(cherry picked from commit 21dc93ae11db02bc8e0a2175f21fa7dd5e423b00)

2 years agoMerge pull request #50572 from petrutlucian94/wip-59098-reef
Ilya Dryomov [Tue, 21 Mar 2023 13:19:40 +0000 (14:19 +0100)]
Merge pull request #50572 from petrutlucian94/wip-59098-reef

reef: common: avoid redefining clock type on Windows

Reviewed-by: Ilya Dryomov <idryomov@gmail.com>
2 years agocephfs-top: Handle `METRIC_TYPE_NONE` fields for sorting
Neeraj Pratap Singh [Tue, 21 Feb 2023 10:10:13 +0000 (15:40 +0530)]
cephfs-top: Handle `METRIC_TYPE_NONE` fields for sorting

Currently, the sort feature in cephfs-top isn't applicable
to the fields which are of type `METRIC_TYPE_NONE` , named as
'ofiles', 'oicaps' and 'oinodes'. This commit will make the
cephfs-top sort feature to support the above mentioned fields too.
From this commit onwards, all the current fields displayed in
cephfs-top can be used for sorting.

Fixes: https://tracker.ceph.com/issues/58814
Signed-off-by: Neeraj Pratap Singh <neesingh@redhat.com>
(cherry picked from commit 4626cb5fb1141c38acd4b114ad4562bd14fa7aad)

2 years agoreef: qa: d3n: fix test failure when "inline_data": false
Mark Kogan [Mon, 6 Feb 2023 12:05:51 +0000 (14:05 +0200)]
reef: qa: d3n: fix test failure when "inline_data": false

backport tracker: https://tracker.ceph.com/issues/59004
backport of https://github.com/ceph/ceph/pull/50003
parent tracker: https://tracker.ceph.com/issues/58552

Fixes: https://tracker.ceph.com/issues/58552
Signed-off-by: Mark Kogan <mkogan@redhat.com>
(cherry picked from commit f474c7fdbe937a07451ecef246e43e3f46b7010d)

2 years agoMerge pull request #50589 from zdover23/wip-doc-2023-03-20-backport-50488-to-reef
Anthony D'Atri [Mon, 20 Mar 2023 04:47:29 +0000 (00:47 -0400)]
Merge pull request #50589 from zdover23/wip-doc-2023-03-20-backport-50488-to-reef

reef: doc/rados: edit operations/bs-migration (2 of x)

2 years agoMerge pull request #50586 from zdover23/wip-doc-2023-03-20-backport-50487-to-reef
Anthony D'Atri [Mon, 20 Mar 2023 04:45:18 +0000 (00:45 -0400)]
Merge pull request #50586 from zdover23/wip-doc-2023-03-20-backport-50487-to-reef

reef: doc/rados: edit operations/bs-migration (1 of x)

2 years agodoc/rados: edit operations/bs-migration (2 of x)
Zac Dover [Sun, 12 Mar 2023 01:17:03 +0000 (11:17 +1000)]
doc/rados: edit operations/bs-migration (2 of x)

Disambiguate and improve the English language in
doc/rados/operations/bluestore-migration.rst up to but not including the
section called "Whole Host Replacement".

Co-authored-by: Cole Mitchell <cole.mitchell.ceph@gmail.com>
Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit ca803a24c64059023733e21d755edb9c6c973ecf)

2 years agodoc/rados: edit operations/bs-migration (1 of x)
Zac Dover [Sun, 12 Mar 2023 01:17:03 +0000 (11:17 +1000)]
doc/rados: edit operations/bs-migration (1 of x)

Disambiguate and improve the English language in
doc/rados/operations/bluestore-migration.rst up to but not including the
section called "Whole Host Replacement".

Co-authored-by: Cole Mitchell <cole.mitchell.ceph@gmail.com>
Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit 96166b463b1f8800e59f80faebfba1208248725e)

2 years agoMerge pull request #50581 from zdover23/wip-doc-2023-03-19-backport-50579-to-reef
Anthony D'Atri [Sun, 19 Mar 2023 12:35:00 +0000 (08:35 -0400)]
Merge pull request #50581 from zdover23/wip-doc-2023-03-19-backport-50579-to-reef

reef: doc/rados: line edit mon-lookup-dns top matter

2 years agodoc/rados: line edit mon-lookup-dns top matter
Zac Dover [Sat, 18 Mar 2023 05:27:54 +0000 (15:27 +1000)]
doc/rados: line edit mon-lookup-dns top matter

Improve the syntax of the top matter of
doc/rados/operations/mon-lookup-dns.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit ed5919964bd914c118f556baf3c517e5e35df277)

2 years agoqa/workunits/rbd: use bionic version of qemu-iotests for jammy
Ilya Dryomov [Wed, 15 Mar 2023 16:12:36 +0000 (17:12 +0100)]
qa/workunits/rbd: use bionic version of qemu-iotests for jammy

Same as in commit 2de2146c300c ("qa/workunits/rbd: use bionic version
of qemu-iotests for focal").

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 3b1610997a3f36c7ab4a7721cd266ec0f14bc107)

2 years agoqa/distros/supported-random: update ubuntu_latest.yaml and add ubuntu_20.04.yaml
Casey Bodley [Wed, 8 Mar 2023 15:34:56 +0000 (10:34 -0500)]
qa/distros/supported-random: update ubuntu_latest.yaml and add ubuntu_20.04.yaml

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 62e520cbad7a2beff130a4459abcb0fb7d762da0)

2 years agoqa/distros/supported: update ubuntu_latest.yaml and add ubuntu_20.04.yaml
Casey Bodley [Wed, 8 Mar 2023 15:31:42 +0000 (10:31 -0500)]
qa/distros/supported: update ubuntu_latest.yaml and add ubuntu_20.04.yaml

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 929172bd718bdc45f796ad52c64dd42c1bc70a9a)

2 years agoqa/distros/all: add ubuntu_latest.yaml symlink to ubuntu_22.04.yaml
Casey Bodley [Wed, 8 Mar 2023 15:28:28 +0000 (10:28 -0500)]
qa/distros/all: add ubuntu_latest.yaml symlink to ubuntu_22.04.yaml

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 31846942edd4f10c5250fdedcf69c18d535e43f2)

2 years agoMerge pull request #50565 from zdover23/wip-doc-2023-03-17-backport-50563-to-reef
zdover23 [Fri, 17 Mar 2023 14:24:56 +0000 (00:24 +1000)]
Merge pull request #50565 from zdover23/wip-doc-2023-03-17-backport-50563-to-reef

reef: doc/rados: line-edit upmap.rst

Reviewed-by: Cole Mitchell <cole.mitchell.ceph@gmail.com>
2 years agocommon: avoid redefining clock type on Windows
Lucian Petrut [Thu, 16 Mar 2023 14:25:50 +0000 (14:25 +0000)]
common: avoid redefining clock type on Windows

mingw >= 8.0.1 defines CLOCK_REALTIME_COARSE, so we'll avoid
overriding it if already set.

Clock precision [1]:

mingw < 8.0.1:
  * CLOCK_REALTIME: ~10-55ms (GetSystemTimeAsFileTime)
mingw >= 8.0.1:
  * CLOCK_REALTIME: <1us (GetSystemTimePreciseAsFileTime)
  * CLOCK_REALTIME_COARSE: ~10-55ms (GetSystemTimeAsFileTime)

* CLOCK_MONOTONIC: <1us if TSC is usable, ~10-55ms otherwise
                   (QueryPerformanceCounter)

[1] https://github.com/mirror/mingw-w64/commit/dcd990ed423381cf35702df9495d44f1979ebe50

Signed-off-by: Lucian Petrut <lpetrut@cloudbasesolutions.com>
(cherry picked from commit 489fd858479a79de75f6327d5cca40c289b53f35)

2 years agodoc/rados: line-edit upmap.rst
Zac Dover [Thu, 16 Mar 2023 17:41:08 +0000 (03:41 +1000)]
doc/rados: line-edit upmap.rst

Edit all of doc/rados/upmap.rst.

Signed-off-by: Zac Dover <zac.dover@proton.me>
(cherry picked from commit a4a681846499c8d0041a6632e7e31fa83e22ed0e)

2 years agoMerge pull request #50541 from rhcs-dashboard/wip-59072-reef
Nizamudeen A [Thu, 16 Mar 2023 06:28:45 +0000 (11:58 +0530)]
Merge pull request #50541 from rhcs-dashboard/wip-59072-reef

reef: mgr/dashboard: fix prometheus api issues on landing page v3

Reviewed-by: Pegonzal <NOT@FOUND>
2 years agoMerge pull request #50532 from zdover23/wip-doc-2023-03-15-backport-50390-to-reef
zdover23 [Thu, 16 Mar 2023 01:30:32 +0000 (11:30 +1000)]
Merge pull request #50532 from zdover23/wip-doc-2023-03-15-backport-50390-to-reef

reef: doc/crimson: add SeaStore when using vstart.

Reviewed-by: Cole Mitchell <cole.mitchell.ceph@gmail.com>
2 years agomgr/dashboard: improve the logic on the alert viewer
Nizamudeen A [Wed, 22 Feb 2023 16:52:56 +0000 (22:22 +0530)]
mgr/dashboard: improve the logic on the alert viewer

only fetch the alerts when you toggle the alert viewer. don't fetch it
every 5 second cause its going to cause a heavy toll on the api.

Fixes: https://tracker.ceph.com/issues/58867
Signed-off-by: Nizamudeen A <nia@redhat.com>
(cherry picked from commit 6cb0679aaf28b5f128ca3cae5f962cac50d084af)

2 years agomgr/dashboard: fix prometheus api error on landing page v3
Nizamudeen A [Wed, 22 Feb 2023 07:33:34 +0000 (13:03 +0530)]
mgr/dashboard: fix prometheus api error on landing page v3

When no prometheus is configured in the cluster, it gives out error
while polling to the prometheus endpoint. so a proper check needs to be
added there.

Also some improvements to the exisiting behaviour

Fixes: https://tracker.ceph.com/issues/58867
Signed-off-by: Nizamudeen A <nia@redhat.com>
(cherry picked from commit 2d80e57dd4a60cbf52074d982ba3ebd4471a14ca)

2 years agoMerge pull request #50525 from epuertat/wip-59050-reef
Ernesto Puerta [Tue, 14 Mar 2023 20:17:18 +0000 (21:17 +0100)]
Merge pull request #50525 from epuertat/wip-59050-reef

reef: mgr/dashboard: force TLS 1.3

Reviewed-by: Pere Diaz Bou <pdiazbou@redhat.com>
2 years agodoc/crimson: add SeaStore when using vstart.
Rongqi Sun [Mon, 6 Mar 2023 06:01:51 +0000 (14:01 +0800)]
doc/crimson: add SeaStore when using vstart.

Signed-off-by: Rongqi Sun <sunrongqi@huawei.com>
(cherry picked from commit 055bb2bd5364e66c6e7f87760b9c409f2b8c7935)

2 years agomgr/dashboard: force TLS 1.3
Ernesto Puerta [Mon, 13 Mar 2023 10:03:37 +0000 (11:03 +0100)]
mgr/dashboard: force TLS 1.3

Fixes: https://tracker.ceph.com/issues/58942
Signed-off-by: Ernesto Puerta <epuertat@redhat.com>
(cherry picked from commit cd8946631b222dfff1727083d75dfe2dd825d1a4)

2 years agoMerge pull request #50460 from rhcs-dashboard/custom-image-kcli-bootstrap-reef
Nizamudeen A [Tue, 14 Mar 2023 07:07:47 +0000 (12:37 +0530)]
Merge pull request #50460 from rhcs-dashboard/custom-image-kcli-bootstrap-reef

reef: mgr/dashboard: custom image for kcli bootstrap script

Reviewed-by: Pegonzal <NOT@FOUND>
2 years agoMerge pull request #50517 from zdover23/wip-doc-2023-03-14-backport-50500-to-reef
Anthony D'Atri [Tue, 14 Mar 2023 02:26:17 +0000 (22:26 -0400)]
Merge pull request #50517 from zdover23/wip-doc-2023-03-14-backport-50500-to-reef

reef: doc/dev/release-checklist: add another step for ceph-build

2 years agodoc/dev/release-checklist: add another step for ceph-build
Josh Durgin [Mon, 13 Mar 2023 14:45:07 +0000 (07:45 -0700)]
doc/dev/release-checklist: add another step for ceph-build

Signed-off-by: Josh Durgin <jdurgin@redhat.com>
(cherry picked from commit 4fcad7161fa094af210229b6f15cded63781080e)

2 years agoMerge pull request #50464 from ljflores/wip-tracker-58496-reef-backport
Laura Flores [Mon, 13 Mar 2023 20:16:33 +0000 (15:16 -0500)]
Merge pull request #50464 from ljflores/wip-tracker-58496-reef-backport

reef: osd/scrub: only call publish_stats_to_osd() where allowed and needed

2 years agorgw: add rgw-restore-bucket-index
J. Eric Ivancich [Wed, 8 Mar 2023 21:51:17 +0000 (16:51 -0500)]
rgw: add rgw-restore-bucket-index

Adds an experimental script that allows a bucket index of a
non-versioned bucket to be restored by applying `radosgw-admin object
reindex ...` to all objects in the specified bucket. The objects in
the bucket are determined by scanning the data pool for head objects
containing the bucket's marker.

Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
(cherry picked from commit 6ea11b1305c77f9141f2dd8093ac56b579f250be)

2 years agoMerge pull request #50424 from ljflores/wip-tracker-58925-reef
Laura Flores [Mon, 13 Mar 2023 20:16:08 +0000 (15:16 -0500)]
Merge pull request #50424 from ljflores/wip-tracker-58925-reef

reef: qa: suppress memory leak in rocksdb

2 years agorgw: add an "object reindex" subcommand to radosgw-admin
J. Eric Ivancich [Thu, 2 Mar 2023 04:41:12 +0000 (23:41 -0500)]
rgw: add an "object reindex" subcommand to radosgw-admin

This subcommand will take a bucket and an object (or a list of objects
in a file) and add those objects to the bucket's index. It does so by
preparing the bucket index entry update and then allowing the
so-called "dir suggest" mechansim, which is triggered by listing the
bucket, to completing the bucket index entry. This mechanism is
triggered by listing the bucket.  Using this mechanism has the
advantage of doing this lazily that both allows the reindex operation
to run more quickly and distributes the workload over time.

This subcommand can help restore lost bucket index entries.

Signed-off-by: J. Eric Ivancich <ivancich@redhat.com>
(cherry picked from commit be0583c3082b9f924fcdbe4c81d540ad08bcca24)

2 years agorgw/sysobj: read() can query size/mtime
Casey Bodley [Tue, 7 Mar 2023 22:28:54 +0000 (17:28 -0500)]
rgw/sysobj: read() can query size/mtime

rgw_get_system_obj() stopped calling stat() before read() in
90aec61298fc378e1733bc76f0d3f95ce8ec135a, which left the optional
'real_time *pmtime' argument uninitialized

when requested, read() will add a stat op to initialize size/mtime

Signed-off-by: Casey Bodley <cbodley@redhat.com>
(cherry picked from commit 20ab42758c8ba0cef867752be3b215064d44a6f2)