]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/log
ceph.git
2 weeks agoqa: test_rados_tool - change check on osd dump command to use json 66459/head
Jon Bailey [Tue, 26 May 2026 12:31:47 +0000 (13:31 +0100)]
qa: test_rados_tool - change check on osd dump command to use json

Previously the test_rados_tool.sh test was dependant on flag ordering. This mean if you added a new flag after full_quota (such as split_reads or ec_optimizations), this could break the teuthology test if we try to test with these flags on. We prevent this by changing this condition to use json to ensure we are no longer depend on the order of the flags which the default command line output gives.

This also adds a check to ensure the pool name matches what we are working on, to ensure we don't get false-positives if we happened to have other pools.

Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
2 weeks agoosd: Using objects_read_local instead of objects_read_sync
Callum James [Tue, 21 Apr 2026 10:08:16 +0000 (11:08 +0100)]
osd: Using objects_read_local instead of objects_read_sync

Signed-off-by: Callum James <callum.james@ibm.com>
2 weeks agodocs: Update design document
Alex Ainscow [Thu, 5 Feb 2026 13:08:10 +0000 (13:08 +0000)]
docs: Update design document

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
Signed-off-by: Callum James <callum.james@ibm.com>
2 weeks ago*: Update PendingReleaseNotes for new parameter
Alex Ainscow [Thu, 5 Feb 2026 13:07:51 +0000 (13:07 +0000)]
*: Update PendingReleaseNotes for new parameter

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
Signed-off-by: Callum James <callum.james@ibm.com>
2 weeks agotest/librbd: Fix infinite recursion in MockTestMemRadosClient::do_mon_command
Alex Ainscow [Thu, 16 Apr 2026 09:28:29 +0000 (10:28 +0100)]
test/librbd: Fix infinite recursion in MockTestMemRadosClient::do_mon_command

The do_mon_command() method was calling the mocked mon_command() which
has a default action that calls do_mon_command(), creating an infinite
recursion that caused a segmentation fault due to stack overflow.

Fixed by calling TestRadosClient::mon_command() (the base class
implementation) instead of the mocked version.

This resolves the segfault in unittest_librbd when running the
run-rbd-unit-tests.sh script.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agotest: modify osd types tests to include the new pool parameters so they are tested
Jon Bailey [Wed, 4 Mar 2026 13:45:57 +0000 (13:45 +0000)]
test: modify osd types tests to include the new pool parameters so they are tested

Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
2 weeks agotest: Parameterize librados tests and add more split op tests.
Alex Ainscow [Thu, 5 Feb 2026 14:51:46 +0000 (14:51 +0000)]
test: Parameterize librados tests and add more split op tests.

Previously the librados tests were each restricted to a particular
configuration. Here we parameterize to execute against multiple
configurations of pool and fix the necessary create/clean up work.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
2 weeks agoosdc/SplitOp: Fix reference_sub_read initialization bug
Alex Ainscow [Wed, 22 Apr 2026 09:46:43 +0000 (10:46 +0100)]
osdc/SplitOp: Fix reference_sub_read initialization bug

Fixed a bug where reference_sub_read was set to -1 when non-read operations
were processed before read operations, causing crashes when accessing
sub_reads[reference_sub_read].

Changes:
1. Added init_reference_sub_read() virtual method to initialize reference_sub_read
   early, after _calc_target() populates the acting set but before processing
   any operations.

2. ECSplitOp::init_reference_sub_read(): Sets reference_sub_read to the acting
   index of the primary shard by performing a reverse lookup.

3. ReplicaSplitOp::init_reference_sub_read(): Counts valid OSDs and picks a
   random acting index for load balancing.

4. Simplified init_read() in both classes by removing duplicate logic that
   previously set reference_sub_read during read processing.

5. Added safety check in SplitOp::init() to ensure the reference_sub_read
   entry exists in sub_reads before accessing it for non-read operations.

The fix ensures reference_sub_read is always set before any operations are
processed, preventing the crash that occurred when STAT, GETXATTR, or other
non-read operations appeared before READ operations in the operation list.

Tested with split_op_cxx.cc test suite: 33/35 tests pass (2 test expectation
issues unrelated to the core bug fix).

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agotest/osd: Add balanced read flags to io_sequence exerciser
Matty Williams [Mon, 20 Oct 2025 15:46:43 +0000 (16:46 +0100)]
test/osd: Add balanced read flags to io_sequence exerciser

Added optional "-b"/"balanced" flag to the end of read/read2/read3 operations in interactive mode, to make them balanced reads.
Balanced read percentage is not used in interactive mode.

Add command line argument to specify percentage of read ops that should use the balanced reads flag. Default is 100%.

Signed-off-by: Matty Williams <Matty.Williams@ibm.com>
Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
2 weeks agoerasure-code/consistency: Extend get shard/osd to specify namespace.
Alex Ainscow [Thu, 5 Feb 2026 13:12:47 +0000 (13:12 +0000)]
erasure-code/consistency: Extend get shard/osd to specify namespace.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agoosdc: Refactor SplitOp
Alex Ainscow [Thu, 5 Feb 2026 14:45:04 +0000 (14:45 +0000)]
osdc: Refactor SplitOp

There are large number of changes in this commit which were found through
development and testing of split ops.

I have split out all the objecter updates carefully, but since the split op
code is not currently used in production, I have not documented every change
and made significant refactors/rearrangements.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agoosdc: Implement cancel mechanism for split ops.
Alex Ainscow [Thu, 5 Feb 2026 14:04:30 +0000 (14:04 +0000)]
osdc: Implement cancel mechanism for split ops.

When an op that has been split is canceled or timed out, all the
sub ops need to be canceled.

This commit adds a mechanism to map the original op to the sub reads.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agoosdc: Do not recalculate target for split ops.
Alex Ainscow [Thu, 5 Feb 2026 14:00:38 +0000 (14:00 +0000)]
osdc: Do not recalculate target for split ops.

SplitOp calculates the target and set the necessary target OSD itself. This
means that calc_target is not required again on first submit of the sub
read ops.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agoosdc: Split the Objecter handle reply into more utilities
Alex Ainscow [Thu, 5 Feb 2026 14:38:21 +0000 (14:38 +0000)]
osdc: Split the Objecter handle reply into more utilities

This was one big monolithic function which handled the entire reply message.

SplitOps needs to re-use parts of this function. The previous split ops
commit dealt with one split, but this adds another.

Also rename the functions to have a better name.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agoosdc: Extend op_post_submit to cope with successful Ops and move SplitOp decision...
Alex Ainscow [Thu, 5 Feb 2026 13:34:58 +0000 (13:34 +0000)]
osdc: Extend op_post_submit to cope with successful Ops and move SplitOp decision point.

The locking situation in Objecter is complex. When ops are completed whether with success or otherwise, some locks are held. For split ops, this is particularly complex, since multiple sessions are involved in the completion.

To avoid all these deadlock issues, splitOps choose to schedule a completion task using asio::post, which can then take the appropriate locks before completing the IO, without risk of deadlock.

Usage of this will be added in a refactor of SplitOps.

In addition, previously split ops was being calculated immediately as soon as the op was submitted.  Here we move the submit down to below the throttling and timeout code.  This way we throttle/timeout the original op.

Handling the timeout (op_cancel) will be handled in a later commit.

As part of this commit we also introduce a SplitOp session. This allows us to keep track of the parent ops while the child ops have been submitted and redrive the correct op(s) when necessary.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
2 weeks agoosdc: Add split_op statistic
Alex Ainscow [Thu, 5 Feb 2026 13:30:36 +0000 (13:30 +0000)]
osdc: Add split_op statistic

This statistic counts the number of OPs which have been submitted using the
split op mechanism.  It allows a user to check how useful this is and
performance/development to check that this mechanism is being used in
any given application.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agoosdc: Add config option to specify split-replica-read threshold
Alex Ainscow [Thu, 5 Feb 2026 13:24:29 +0000 (13:24 +0000)]
osdc: Add config option to specify split-replica-read threshold

SplitOps will add support to split replica reads. This allows the user to
specify the threshold at which they are split.

The default is currently set at 256k.  This is set at a point where we have
confidence that split ops will never reduce performance.

Development may choose to reduce this default based on performance measurements.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
Signed-off-by: Callum James <callum.james@ibm.com>
Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
2 weeks agoosdc: Add FORCE and FAIL_ON_EAGAIN flags.
Alex Ainscow [Thu, 5 Feb 2026 13:16:25 +0000 (13:16 +0000)]
osdc: Add FORCE and FAIL_ON_EAGAIN flags.

Previously, the lower levels of Objecter would potentially redrive ops to
different OSDs when the map changed, or the OSD returns -EAGAIN. These
flags will be used to change this behaviour:

* FORCE_OSD means that the OSD is fixed and cannot be changed.
* FAIL_ON_EGAIN means that rather than redriving, the OP should be failed (to splitops)

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agoosd: Remove lldiv from ECUtil
Alex Ainscow [Thu, 5 Feb 2026 15:00:57 +0000 (15:00 +0000)]
osd: Remove lldiv from ECUtil

lldiv is not faster and is less clear, so refactor the code to be more readable
and faster!

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agoosd: Corrent accounting and return codes for Direct Reads
Alex Ainscow [Thu, 5 Feb 2026 15:00:03 +0000 (15:00 +0000)]
osd: Corrent accounting and return codes for Direct Reads

We will never return -EAGAIN from ECBackend. If ECBackend returns EAGAIN, this causes the PrimaryLogPG code to drop the op. This is for historical reasons, but hard to refactor out.
Instead, the PrimaryLogPG code has been refactored to work out that EAGAIN is required much earlier in the processing, where EAGAIN will be returned to the client.

Here we also correct accounting in do_read and sparse_read so that we can correctly track the number of bytes read from direct reads.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
2 weeks agoosd: Torn write protection for Direct Reads
Alex Ainscow [Thu, 5 Feb 2026 13:14:07 +0000 (13:14 +0000)]
osd: Torn write protection for Direct Reads

It is possible for direct reads to query two seperate shards and
get different versions of the object for each shard when using
direct reads.

To solve this we add a get_internal_version op to tell us the version
of the object on that shard and submit that in the same transaction
as the read so we can ensure the versions are what we expect. If we
have a mismatch, we resubmit the read through the primary path.

Also a couple of spelling/tidy ups

Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
Signed-off-by: Callum James <callum.james@ibm.com>
2 weeks agoosd: SplitOp preparatory work in osd_types
Alex Ainscow [Thu, 5 Feb 2026 15:00:03 +0000 (15:00 +0000)]
osd: SplitOp preparatory work in osd_types

- Add ec_data_shard_count interface
- Prevent sending of the split reads flag to tentacle OSDs
- Add ec data shard count and coding shard count into the pool
- Encode shard mappings into the pool, for use by Direct reads

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agomon: Functionality for enabling and upgrading ec_direct_reads
Alex Ainscow [Thu, 5 Feb 2026 13:25:20 +0000 (13:25 +0000)]
mon: Functionality for enabling and upgrading ec_direct_reads

When a cluster upgrades to umbrella, we will enable direct reads for any pool which is using ec optimizations.
We also add k and m to the pg_pool_t structure to allow more efficient parsing of the k and m values of EC rather than string parsing of the profile.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
Signed-off-by: Jon Bailey <jonathan.bailey1@ibm.com>
2 weeks agomon: Add mechanism for user to add/clear pool flags.
Alex Ainscow [Thu, 5 Feb 2026 13:19:05 +0000 (13:19 +0000)]
mon: Add mechanism for user to add/clear pool flags.

Previously, every time we had a new experimental feature, switched with a
pool flag, we needed to add a bunch of boiler plate.  Given that end users
should not be using these features, adding all of this user-visible
behaviour is not desirable.

This adds a single mechanism to specify a flag set by number.  These magic
numbers can be used during development and then either removed, or
promoted to user-friendly flags.

Signed-off-by: Alex Ainscow <aainscow@uk.ibm.com>
2 weeks agoMerge pull request #68727 from aainscow/wip_75962
Laura Flores [Wed, 27 May 2026 15:26:43 +0000 (10:26 -0500)]
Merge pull request #68727 from aainscow/wip_75962

osd: Correct missing list on divergent merge of partial writes

Reviewed-by: Bill Scales <bill_scales@uk.ibm.com>
2 weeks agoMerge pull request #69122 from tchaikov/wip-crimson-silence-unused-warning
Matan Breizman [Wed, 27 May 2026 14:08:45 +0000 (17:08 +0300)]
Merge pull request #69122 from tchaikov/wip-crimson-silence-unused-warning

crimson/seastore: segment_manager: fix -Wunused warnings

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
2 weeks agoMerge pull request #69019 from tchaikov/wip-crimson-wake-in-loaded
Matan Breizman [Wed, 27 May 2026 13:23:16 +0000 (16:23 +0300)]
Merge pull request #69019 from tchaikov/wip-crimson-wake-in-loaded

crimson/osd: wake pgs_creating waiters in PGMap::pg_loaded()

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
2 weeks agoMerge pull request #64293 from cbodley/wip-71265
Casey Bodley [Wed, 27 May 2026 13:08:45 +0000 (09:08 -0400)]
Merge pull request #64293 from cbodley/wip-71265

rgw: add s3control apis for account-wide PublicAccessBlock

Reviewed-by: Adam Emerson <aemerson@redhat.com>
2 weeks agocrimson/seastore: segment_manager: fix -Wunused warnings 69122/head
Kefu Chai [Wed, 27 May 2026 08:52:31 +0000 (16:52 +0800)]
crimson/seastore: segment_manager: fix -Wunused warnings

7f739adae2 dropped the last log call from get_segment_manager(), after
which `LOG_PREFIX(SegmentManager::get_segment_manager)` and
`SET_SUBSYS(seastore_device)` had no remaining users under `HAVE_ZNS`,
generating:

```
src/crimson/os/seastore/segment_manager.cc:38:3: warning: unused variable 'FNAME' [-Wunused-variable]
   38 |   LOG_PREFIX(SegmentManager::get_segment_manager);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/crimson/common/log.h:49:38: note: expanded from macro 'LOG_PREFIX'
   49 | #define LOG_PREFIX(x) constexpr auto FNAME = #x
      |                                      ^~~~~
src/crimson/os/seastore/segment_manager.cc:10:1: warning: unused variable 'SOURCE_SUBSYS' [-Wunused-const-variable]
   10 | SET_SUBSYS(seastore_device);
      | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
src/crimson/common/log.h:46:52: note: expanded from macro 'SET_SUBSYS'
   46 | #define SET_SUBSYS(subname_) static constexpr auto SOURCE_SUBSYS = ceph_subsys_##subname_
      |                                                    ^~~~~~~~~~~~~
2 warnings generated.
```

drop both to silence them.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
2 weeks agoMerge pull request #69116 from rhcs-dashboard/fix-cephadm-e2e-quoting
Nizamudeen A [Wed, 27 May 2026 05:52:17 +0000 (11:22 +0530)]
Merge pull request #69116 from rhcs-dashboard/fix-cephadm-e2e-quoting

mgr/dashboard: fix nested shell quoting in cephadm e2e start-cluster

Reviewed-by: Nizamudeen A <nia@redhat.com>
2 weeks agomgr/dashboard: fix nested shell quoting in cephadm e2e start-cluster 69116/head
Afreen Misbah [Wed, 27 May 2026 00:07:38 +0000 (05:37 +0530)]
mgr/dashboard: fix nested shell quoting in cephadm e2e start-cluster

with_libvirt wraps commands in sg libvirt -c "$1", adding an extra
shell layer. Nested double quotes inside the outer double-quoted
string caused the argument to be split — with_libvirt received a
truncated $1, producing "Unterminated quoted string" on the remote
shell.

Drop the unnecessary inner double quotes around cephadm shell
arguments since cephadm shell accepts the command as separate args.
Use single quotes for the grep pattern inside the double-quoted
string so it survives the sg subshell.

Signed-off-by: Afreen Misbah <afreen@ibm.com>
2 weeks agoMerge pull request #69068 from tchaikov/wip-bump-arrow-submodule
Kefu Chai [Wed, 27 May 2026 00:05:25 +0000 (08:05 +0800)]
Merge pull request #69068 from tchaikov/wip-bump-arrow-submodule

rgw: bump Apache Arrow submodule from 17.0.0 to 19.0.1

Reviewed-by: Justin Caratzas <jcaratza@ibm.com>
Reviewed-by: Casey Bodley <cbodley@redhat.com>
2 weeks agoMerge pull request #67551 from Ericmzhang/wip-improve-pg-autoscale
Kamoltat (Junior) Sirivadhna [Tue, 26 May 2026 22:04:43 +0000 (18:04 -0400)]
Merge pull request #67551 from Ericmzhang/wip-improve-pg-autoscale

mgr: Fix autoscaling PG distribution
Reviewed-by: Kamoltat (Junior) Sirivadhna <ksirivad@redhat.com>
2 weeks agoMerge pull request #67337 from badone/wip-tracker-74919-ceph-dump-log-new-global...
Brad Hubbard [Tue, 26 May 2026 21:59:37 +0000 (07:59 +1000)]
Merge pull request #67337 from badone/wip-tracker-74919-ceph-dump-log-new-global-access

scripts: ceph_dump_log.py change global context access

Reviewed-by: Aishwarya Mathuria <amathuri@redhat.com>
2 weeks agoMerge pull request #67857 from yaelazulay-redhat/issues_74393_dashboard_fail_to_acces...
Afreen Misbah [Tue, 26 May 2026 21:35:55 +0000 (03:05 +0530)]
Merge pull request #67857 from yaelazulay-redhat/issues_74393_dashboard_fail_to_access_object_when_rgw_use_cephadm_certificate

Issues 74393 dashboard fail to access object when rgw use cephadm certificate

Reviewed-by: Afreen Misbah <afreen@ibm.com>
Reviewed-by: Redouane Kachach <rkachach@ibm.com>
2 weeks agoMerge pull request #68874 from BBoozmen/wip-oozmen-76563
Adam Emerson [Tue, 26 May 2026 18:49:10 +0000 (14:49 -0400)]
Merge pull request #68874 from BBoozmen/wip-oozmen-76563

neorados/cls/log: fix infinite trim loop on empty data log shards

Reviewed-by: Adam C. Emerson <aemerson@redhat.com>
2 weeks agoMerge pull request #67079 from MattyWilliams22/ec-sync-reads
Radoslaw Zarzynski [Tue, 26 May 2026 16:31:12 +0000 (18:31 +0200)]
Merge pull request #67079 from MattyWilliams22/ec-sync-reads

osd: Support for Synchronous Reads in EC

Reviewed-by: Alex Ainscow <aainscow@uk.ibm.com>
Reviewed-by: Bill Scales <bill_scales@uk.ibm.com>
Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
2 weeks agorgw/s3control: skip account id check for admin users 64293/head
Casey Bodley [Tue, 26 May 2026 16:03:48 +0000 (12:03 -0400)]
rgw/s3control: skip account id check for admin users

allow access to admin users that don't belong to the requested account.
this is also necessary for multisite, where requests are forwarded to
the metadata master as the multisite system user instead of the original
requester

Signed-off-by: Casey Bodley <cbodley@redhat.com>
2 weeks agoMerge pull request #67950 from rhcs-dashboard/add-telemetry-status
Pedro Gonzalez Gomez [Tue, 26 May 2026 10:16:32 +0000 (12:16 +0200)]
Merge pull request #67950 from rhcs-dashboard/add-telemetry-status

mgr/dashboard: add telemetry status to overview-health-card

Reviewed-by: Abhishek Desai <abhishek.desai1@ibm.com>
2 weeks agoMerge pull request #68258 from tchaikov/wip-with-system-jerasure
Kefu Chai [Tue, 26 May 2026 09:53:02 +0000 (17:53 +0800)]
Merge pull request #68258 from tchaikov/wip-with-system-jerasure

cmake: support building with system jerasure and gf-complete

Reviewed-by: Casey Bodley <cbodley@redhat.com>
2 weeks agoMerge pull request #61131 from NitzanMordhai/wip-nitzan-mgr-modules-perf-counts
NitzanMordhai [Tue, 26 May 2026 09:31:45 +0000 (12:31 +0300)]
Merge pull request #61131 from NitzanMordhai/wip-nitzan-mgr-modules-perf-counts

mgr: Add per-module performance counters to mgr

Reviewed-by: Sridhar Seshasayee sridhar.seshasayee@ibm.com
2 weeks agoMerge pull request #68858 from rsacherer/wip-fix-limit-break-existing-devices
Guillaume Abrioux [Tue, 26 May 2026 09:19:03 +0000 (11:19 +0200)]
Merge pull request #68858 from rsacherer/wip-fix-limit-break-existing-devices

ceph-volume: fix re-deployment of OSD issues with disk selection filters and DB Devices

2 weeks agoMerge pull request #67935 from rhcs-dashboard/add-csv
Pedro Gonzalez Gomez [Tue, 26 May 2026 09:06:14 +0000 (11:06 +0200)]
Merge pull request #67935 from rhcs-dashboard/add-csv

mgr/dashboard: Add Hosts via CSV Upload

Reviewed-by: Devika Babrekar <devika.babrekar@ibm.com>
Reviewed-by: Puja Shahu <pshahu@redhat.com>
Reviewed-by: Pedro Gonzalez Gomez <pegonzal@ibm.com>
2 weeks agoMerge pull request #68894 from guits/cv-dm-mgmt
Guillaume Abrioux [Tue, 26 May 2026 09:04:53 +0000 (11:04 +0200)]
Merge pull request #68894 from guits/cv-dm-mgmt

ceph-volume: OSD mapper lifecycle (LVM + raw) for activate

2 weeks agoMerge pull request #69064 from tchaikov/wip-crimson-scrub-blocked
Matan Breizman [Tue, 26 May 2026 08:02:54 +0000 (11:02 +0300)]
Merge pull request #69064 from tchaikov/wip-crimson-scrub-blocked

crimson/scrub: fix assert in PGScrubber::release_range() on interval change

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
2 weeks agoMerge pull request #69020 from tchaikov/wip-level-triggered-unblock
Matan Breizman [Tue, 26 May 2026 08:01:14 +0000 (11:01 +0300)]
Merge pull request #69020 from tchaikov/wip-level-triggered-unblock

crimson/osd: only unblock wait_for_active_blocker on replica when ACTIVE

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
2 weeks agoMerge pull request #69018 from tchaikov/wip-large-object-size
Matan Breizman [Tue, 26 May 2026 08:00:37 +0000 (11:00 +0300)]
Merge pull request #69018 from tchaikov/wip-large-object-size

crimson/seastore: reject oversized writes and zeros instead of aborting

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
2 weeks agoMerge pull request #59476 from zhscn/wip-new-128
Xuehan Xu [Tue, 26 May 2026 05:40:09 +0000 (13:40 +0800)]
Merge pull request #59476 from zhscn/wip-new-128

crimson/os/seastore: introduce static layout of laddr_t

Reviewed-by: Samuel Just <sjust@redhat.com>
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
Reviewed-by: Yingxin Cheng <yingxin.cheng@intel.com>
Reviewed-by: Matan Breizman <mbreizma@redhat.com>
Reviewed-by: Anthony D Atri <anthony.datri@gmail.com>
2 weeks agoMerge pull request #68887 from ShreeJejurikar/wip-bucket-logging-requester-assumed...
Yuval Lifshitz [Tue, 26 May 2026 04:58:58 +0000 (07:58 +0300)]
Merge pull request #68887 from ShreeJejurikar/wip-bucket-logging-requester-assumed-role

rgw/logging: use assumed-role ARN as Requester for STS requests

3 weeks agoMerge pull request #69067 from xxhdx1985126/wip-seastore-lba-wrong-asserts
Xuehan Xu [Tue, 26 May 2026 02:54:07 +0000 (10:54 +0800)]
Merge pull request #69067 from xxhdx1985126/wip-seastore-lba-wrong-asserts

crimson/os/seastore/lba: fix wrong asserts and "if" conditions

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
3 weeks agoMerge pull request #69082 from ronen-fr/wip-rf-trimlmt-rst
Ronen Friedman [Mon, 25 May 2026 18:27:42 +0000 (21:27 +0300)]
Merge pull request #69082 from ronen-fr/wip-rf-trimlmt-rst

doc/PendingReleaseNotes: document osd_scrub_queued_snaptrims_limit

Reviewed-by: Anthony D'Atri <anthony.datri@gmail.com>
3 weeks agodoc/PendingReleaseNotes: document osd_scrub_queued_snaptrims_limit 69082/head
Ronen Friedman [Mon, 25 May 2026 13:13:03 +0000 (13:13 +0000)]
doc/PendingReleaseNotes: document osd_scrub_queued_snaptrims_limit

osd_scrub_queued_snaptrims_limit, introduced in PR#68737,
blocks the initiation of non-urgent scrubs on OSDs that
are overloaded with snap-trim operations.

Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
3 weeks agoqa/rgw/bucket-logging: configure STS for assume-role test 68887/head
ShreeJejurikar [Wed, 20 May 2026 07:18:03 +0000 (12:48 +0530)]
qa/rgw/bucket-logging: configure STS for assume-role test

Set rgw sts key and enable rgw s3 auth use sts, both needed by
test_bucket_logging_requester_assumed_role. Mirrors the existing
settings in qa/suites/rgw/verify/overrides.yaml.

Signed-off-by: ShreeJejurikar <shreemj8@gmail.com>
3 weeks agoMerge pull request #69006 from tchaikov/wip-seastore-clamp-block-size-on-small-lba
Matan Breizman [Mon, 25 May 2026 10:39:18 +0000 (13:39 +0300)]
Merge pull request #69006 from tchaikov/wip-seastore-clamp-block-size-on-small-lba

crimson/seastore: clamp block_size to laddr_t::UNIT_SIZE on small-LBA devices

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
3 weeks agoMerge pull request #68961 from fultheim/fix-cleaner-stall-projected-ratio
Matan Breizman [Mon, 25 May 2026 10:24:59 +0000 (13:24 +0300)]
Merge pull request #68961 from fultheim/fix-cleaner-stall-projected-ratio

crimson/os/seastore: fix cleaner stall under IO-block pressure

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
3 weeks agoMerge pull request #68884 from tchaikov/wip-crimson-advance-osdmap
Matan Breizman [Mon, 25 May 2026 09:27:01 +0000 (12:27 +0300)]
Merge pull request #68884 from tchaikov/wip-crimson-advance-osdmap

crimson/osd: fix mark-down crash for removed OSDs

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
3 weeks agoMerge pull request #68861 from tchaikov/wip-crimson-reset-logger
Matan Breizman [Mon, 25 May 2026 09:26:06 +0000 (12:26 +0300)]
Merge pull request #68861 from tchaikov/wip-crimson-reset-logger

crimson/osd: inline log file stream setup to fix dangling pointer

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
3 weeks agoMerge pull request #69042 from Shubhaj1810/revert-67999
Redouane Kachach [Mon, 25 May 2026 09:14:57 +0000 (11:14 +0200)]
Merge pull request #69042 from Shubhaj1810/revert-67999

Revert "mgr/cephadm: align nodeid and add register_service for NFS Ganesha service visibility"

Reviewed-by: Shweta Bhosale <Shweta.Bhosale1@ibm.com>
3 weeks agocrimson/os/seastore: also update the mappings copied by client 59476/head
Xuehan Xu [Fri, 15 May 2026 09:10:04 +0000 (17:10 +0800)]
crimson/os/seastore: also update the mappings copied by client
transactions when committing background rewriting transactions

With the 128-bit laddr key layout in place, SeaStore::rename would
involve copying mappings. These mappings must also be updated when
the logical extents they point to are rewritten.

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/omap_manager/log: better output
Xuehan Xu [Tue, 28 Apr 2026 07:00:24 +0000 (15:00 +0800)]
crimson/os/seastore/omap_manager/log: better output

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agodoc/dev/crimson/seastore_laddr.rst: add descriptions about temp
Xuehan Xu [Sun, 10 May 2026 07:36:22 +0000 (15:36 +0800)]
doc/dev/crimson/seastore_laddr.rst: add descriptions about temp
recovering objects

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/osd: treat OI-not-existing cases as enoent
Xuehan Xu [Thu, 16 Apr 2026 05:47:18 +0000 (13:47 +0800)]
crimson/osd: treat OI-not-existing cases as enoent

This is consistent with classic osds

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/object_data_handler: new debug logs
Xuehan Xu [Tue, 14 Apr 2026 06:00:52 +0000 (14:00 +0800)]
crimson/os/seastore/object_data_handler: new debug logs

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/osd: create temp recovering objects through touch_temp
Xuehan Xu [Wed, 22 Apr 2026 05:37:46 +0000 (13:37 +0800)]
crimson/osd: create temp recovering objects through touch_temp

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: handle OP_TOUCH_TEMP
Xuehan Xu [Sun, 29 Mar 2026 03:20:52 +0000 (11:20 +0800)]
crimson/os/seastore: handle OP_TOUCH_TEMP

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agoos/Transaction: add the interface dedicated to touching temp objects
Xuehan Xu [Thu, 26 Mar 2026 08:08:41 +0000 (16:08 +0800)]
os/Transaction: add the interface dedicated to touching temp objects

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/lba: fix possible namespace lookup error
Xuehan Xu [Tue, 3 Feb 2026 03:11:33 +0000 (11:11 +0800)]
crimson/os/seastore/lba: fix possible namespace lookup error

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agodev/doc/crimson: clarify dynamic PG and object bits for static laddr design
Zhang Song [Thu, 8 Jan 2026 04:14:20 +0000 (12:14 +0800)]
dev/doc/crimson: clarify dynamic PG and object bits for static laddr design

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: adapt copy on write for static onode prefix
Zhang Song [Wed, 3 Sep 2025 07:54:40 +0000 (15:54 +0800)]
crimson/os/seastore: adapt copy on write for static onode prefix

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: support rename for static layout of laddr
Zhang Song [Tue, 26 Aug 2025 03:42:49 +0000 (11:42 +0800)]
crimson/os/seastore: support rename for static layout of laddr

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: add "move_mapping" to TransactionManager and LBAManager
Xuehan Xu [Tue, 26 Aug 2025 06:28:55 +0000 (14:28 +0800)]
crimson/os/seastore: add "move_mapping" to TransactionManager and LBAManager

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/lba: set extent type for ZERO lba mappings
Xuehan Xu [Mon, 2 Feb 2026 07:42:49 +0000 (15:42 +0800)]
crimson/os/seastore/lba: set extent type for ZERO lba mappings

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agomgr/dashboard: Add Hosts via CSV Upload 67935/head
Sagar Gopale [Mon, 23 Mar 2026 06:08:44 +0000 (11:38 +0530)]
mgr/dashboard: Add Hosts via CSV Upload

Fixes: https://tracker.ceph.com/issues/75578
Signed-off-by: Sagar Gopale <sagar.gopale@ibm.com>
3 weeks agoMerge pull request #68667 from rhcs-dashboard/fix-76316-main
Redouane Kachach [Mon, 25 May 2026 08:32:23 +0000 (10:32 +0200)]
Merge pull request #68667 from rhcs-dashboard/fix-76316-main

mgr/dashboard: add remote write section to prometheus configuration

Reviewed-by: Redouane Kachach <rkachach@ibm.com>
Reviewed-by: Nizamudeen A <nia@redhat.com>
3 weeks agoworkunits/mgr/test_mgr_modules_perf_counters: new test for enable\disable\perf counts 61131/head
Nitzan Mordechai [Tue, 17 Dec 2024 13:49:00 +0000 (13:49 +0000)]
workunits/mgr/test_mgr_modules_perf_counters: new test for enable\disable\perf counts

Simple test to enable \ disable and get counters dump
for checking perf counters.

Signed-off-by: Nitzan Mordechai <nmordech@redhat.com>
3 weeks agomgr: Add per-module performance counters to mgr
Nitzan Mordechai [Sun, 8 Dec 2024 18:08:39 +0000 (18:08 +0000)]
mgr: Add per-module performance counters to mgr

This commit introduces performance counters for individual Ceph mgr modules.
These counters allow monitoring module behavior, debugging latency issues,
and identifying performance bottlenecks, all without modifying the modules themselves.

The following counters are now exposed under:
  > ceph daemon mgr.<id> perf dump

Example structure:
"mgr_module_<module_name>": {
    "notify_avg_usec": {     <- Average time spent handling notify events
        "avgcount": 0,
        "sum": 0
    },
    "cmd_avg_usec": {        <- Average time spent processing CLI/admin commands
        "avgcount": 0,
        "sum": 0
    },
    "serve_avg_usec": {      <- Average time spent in module serve loop (if applicable)
        "avgcount": 0,
        "sum": 0
    },
    "alive": 1               <- Module is alive (1 = running, 0 = exited)
    "cpu_usage": 0,          <- CPU usage in percent
    "mem_rss_change": 0,     <- Memory RSS change in bytes
    "mem_rss_current": 490737664 <- Memory RSS current in bytes

}

Signed-off-by: Nitzan Mordechai <nmordech@ibm.com>
Conflicts:
  src/mgr/ActivePyModules.cc - finisher.queue changed by 63859, adding py_module to the parameter list
  src/mgr/PyModuleRegistry.cc - check_all_modules_started added by 63859

3 weeks agoceph-volume: OSD mapper lifecycle (LVM + raw) for activate 68894/head
Guillaume Abrioux [Wed, 13 May 2026 12:57:03 +0000 (14:57 +0200)]
ceph-volume: OSD mapper lifecycle (LVM + raw) for activate

This adds small helpers so activate can consistently bring the OSD device
stack online (LVM lvchange, optional mapper open) and tear it down again,
with refresh in between. Same idea for the raw path. Crypto is handled
inside that flow when the OSD is encrypted.

Fixes: https://tracker.ceph.com/issues/76591
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
3 weeks agoMerge pull request #68771 from jrse/rgw-kafka-mtls-rebased
Yuval Lifshitz [Sun, 24 May 2026 19:29:38 +0000 (22:29 +0300)]
Merge pull request #68771 from jrse/rgw-kafka-mtls-rebased

rgw/kafka: add mTLS support (extends #61572)

3 weeks agorgw: bump Apache Arrow submodule from 17.0.0 to 19.0.1 69068/head
Kefu Chai [Sun, 24 May 2026 08:25:46 +0000 (16:25 +0800)]
rgw: bump Apache Arrow submodule from 17.0.0 to 19.0.1

When WITH_SYSTEM_ARROW is false, Ceph builds Arrow from the bundled
src/apache submodule. Our CI uses ubuntu:jammy as the base image, which
does not package libarrow-dev, so the bundled path is always taken there.

Arrow 17.0.0 vendors a copy of Thrift whose download URLs are no longer
reachable, breaking CI builds that try to fetch them at configure time.

Bump arrow submodule to 19.0.1, the latest Arrow release that:
- builds successfully on ubuntu:jammy, and
- requires only CMake 3.22 (the version shipped by ubuntu:jammy)

See also

CMake version shipped by ubuntu:jammy
- https://packages.ubuntu.com/jammy/cmake

arrow releases' CMake support
- maint-19.0.1: https://github.com/apache/arrow/blob/272715f6df2a042d69881ffa03d5078c58e4b345/cpp/CMakeLists.txt#L18
- maint-20.0.0: https://github.com/apache/arrow/blob/3ad0370a04ccdae638755b94c3c31c8760a11193/cpp/CMakeLists.txt#L18

arrow enabled minmalloc by default
-
https://github.com/apache/arrow/commit/b907c5dadb516b525c8fafbf34b0116d44044733

Because arrow uses the bundled mialloc library be default, we need
to disable it in the same commit bumping up the submodule.

Signed-off-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agoMerge pull request #66150 from MaodiMa/AVX512_crc32c
Kefu Chai [Sun, 24 May 2026 09:55:45 +0000 (17:55 +0800)]
Merge pull request #66150 from MaodiMa/AVX512_crc32c

common: enable AVX512+VPCLMULQDQ for crc32c performance on x86

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agocrimson/os/seastore/lba: fix wrong asserts and "if" conditions 69067/head
Xuehan Xu [Sat, 23 May 2026 09:23:02 +0000 (17:23 +0800)]
crimson/os/seastore/lba: fix wrong asserts and "if" conditions

Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/OMapManager: only store the relative block offset to omap root...
Zhang Song [Fri, 30 May 2025 09:45:39 +0000 (17:45 +0800)]
crimson/os/seastore/OMapManager: only store the relative block offset to omap root in OMapInnerNode

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agotest/crimson/seastore/test_btree_lba_manager: add test cases for conflict policy
Zhang Song [Tue, 27 May 2025 07:31:13 +0000 (15:31 +0800)]
test/crimson/seastore/test_btree_lba_manager: add test cases for conflict policy

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/lba_manager: implement conflict policy
Zhang Song [Tue, 26 Aug 2025 03:38:49 +0000 (11:38 +0800)]
crimson/os/seastore/lba_manager: implement conflict policy

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: reserve region in LBABtree when touching onode
Zhang Song [Wed, 11 Jun 2025 04:04:25 +0000 (12:04 +0800)]
crimson/os/seastore: reserve region in LBABtree when touching onode

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/OnodeManager: adapt laddr_hint_t approach
Zhang Song [Wed, 11 Jun 2025 04:04:03 +0000 (12:04 +0800)]
crimson/os/seastore/OnodeManager: adapt laddr_hint_t approach

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/OMapManager: adapt laddr_hint_t approach
Zhang Song [Mon, 26 May 2025 07:23:25 +0000 (15:23 +0800)]
crimson/os/seastore/OMapManager: adapt laddr_hint_t approach

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: use laddr_hint_t to allocate the laddr
Zhang Song [Tue, 26 Aug 2025 03:36:07 +0000 (11:36 +0800)]
crimson/os/seastore: use laddr_hint_t to allocate the laddr

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/Onode: get sibling's object id when creating new onode
Zhang Song [Wed, 11 Jun 2025 03:50:12 +0000 (11:50 +0800)]
crimson/os/seastore/Onode: get sibling's object id when creating new onode

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/Onode: adapt new get hint approach
Zhang Song [Tue, 26 Aug 2025 03:34:37 +0000 (11:34 +0800)]
crimson/os/seastore/Onode: adapt new get hint approach

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/Onode: support get object/clone prefix
Zhang Song [Thu, 22 May 2025 08:58:14 +0000 (16:58 +0800)]
crimson/os/seastore/Onode: support get object/clone prefix

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore/Onode: remove default metadata offset/range
Zhang Song [Tue, 26 Aug 2025 03:31:03 +0000 (11:31 +0800)]
crimson/os/seastore/Onode: remove default metadata offset/range

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: introduce laddr_hint_t and associated factory methods
Zhang Song [Wed, 14 May 2025 08:34:00 +0000 (16:34 +0800)]
crimson/os/seastore: introduce laddr_hint_t and associated factory methods

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: make pladdr_t only store the local clone id instead of full...
Zhang Song [Tue, 26 Aug 2025 02:35:55 +0000 (10:35 +0800)]
crimson/os/seastore: make pladdr_t only store the local clone id instead of full laddr_t

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: introduce static layout of laddr_t
Zhang Song [Wed, 14 May 2025 08:26:26 +0000 (16:26 +0800)]
crimson/os/seastore: introduce static layout of laddr_t

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agocrimson/os/seastore: extend the size of laddr_t from 64 bits to 128 bits
Zhang Song [Wed, 14 May 2025 07:22:15 +0000 (15:22 +0800)]
crimson/os/seastore: extend the size of laddr_t from 64 bits to 128 bits

Signed-off-by: Zhang Song <zhangsong02@qianxin.com>
Signed-off-by: Xuehan Xu <xuxuehan@qianxin.com>
3 weeks agoMerge pull request #69045 from xxhdx1985126/wip-seastore-drop-retired-placeholder
Kefu Chai [Sat, 23 May 2026 13:56:32 +0000 (21:56 +0800)]
Merge pull request #69045 from xxhdx1985126/wip-seastore-drop-retired-placeholder

crimson/os/seastore: remove RetiredExtentPlaceholder

Reviewed-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agoMerge pull request #68823 from tchaikov/wip-crimson-remove-from
Kefu Chai [Sat, 23 May 2026 13:33:14 +0000 (21:33 +0800)]
Merge pull request #68823 from tchaikov/wip-crimson-remove-from

crimson/osd: make PGAdvanceMap idempotent

Reviewed-by: Matan Breizman <mbreizma@redhat.com>
3 weeks agocrimson/scrub: fix assert in PGScrubber::release_range() on interval change 69064/head
Kefu Chai [Fri, 22 May 2026 11:01:17 +0000 (19:01 +0800)]
crimson/scrub: fix assert in PGScrubber::release_range() on interval change

when an interval change occurs while ScrubReserveRange is still
waiting to acquire background_process_lock, ChunkState::exit()
calls release_range() but blocked is not yet set. this triggers
ceph_assert(blocked) in release_range().

fix by checking if blocked is set before asserting. if blocked is
not set, the range was never reserved, so release_range() is a
no-op. ScrubReserveRange's finally block handles lock cleanup in
this case.

Fixes: https://tracker.ceph.com/issues/76752
Signed-off-by: Kefu Chai <k.chai@proxmox.com>
3 weeks agoMerge pull request #68684 from ronen-fr/wip-rf-statfx
Ronen Friedman [Sat, 23 May 2026 08:04:45 +0000 (11:04 +0300)]
Merge pull request #68684 from ronen-fr/wip-rf-statfx

osd/scrub: auto-correct accounting-only stat mismatches

Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>