Skip to content

crimson, os: prevent using ObjectStore instance deployed by wrong flavour of OSD#65209

Open
rzarzynski wants to merge 4 commits intoceph:mainfrom
rzarzynski:wip-os-nocrimsonshare
Open

crimson, os: prevent using ObjectStore instance deployed by wrong flavour of OSD#65209
rzarzynski wants to merge 4 commits intoceph:mainfrom
rzarzynski:wip-os-nocrimsonshare

Conversation

@rzarzynski
Copy link
Contributor

Contribution Guidelines

  • To sign and title your commits, please refer to Submitting Patches to Ceph.

  • If you are submitting a fix for a stable branch (e.g. "quincy"), please refer to Submitting Patches to Ceph - Backports for the proper workflow.

  • When filling out the below checklist, you may click boxes directly in the GitHub web UI. When entering or editing the entire PR message in the GitHub web UI editor, you may also select a checklist item by adding an x between the brackets: [x]. Spaces and capitalization matter when checking off items this way.

Checklist

  • Tracker (select at least one)
    • References tracker ticket
    • Very recent bug; references commit where it was introduced
    • New feature (ticket optional)
    • Doc update (no ticket needed)
    • Code cleanup (no ticket needed)
  • Component impact
    • Affects Dashboard, opened tracker ticket
    • Affects Orchestrator, opened tracker ticket
    • No impact that needs to be tracked
  • Documentation (select at least one)
    • Updates relevant documentation
    • No doc update is appropriate
  • Tests (select at least one)
Show available Jenkins commands

@github-actions
Copy link

github-actions bot commented Aug 25, 2025

Config Diff Tool Output

+ added: crimson_osd_objectstore (crimson.yaml.in)
! changed: osd_objectstore: old: ['bluestore', 'filestore', 'memstore', 'seastore', 'cyanstore'] (global.yaml.in)
! changed: osd_objectstore: new: ['bluestore', 'memstore'] (global.yaml.in)

The above configuration changes are found in the PR. Please update the relevant release documentation if necessary.
Ignore this comment if docs are already updated. To make the "Check ceph config changes" CI check pass, please comment /config check ok and re-run the test.

@github-actions
Copy link

This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved

@rzarzynski rzarzynski force-pushed the wip-os-nocrimsonshare branch 2 times, most recently from d517613 to 837f083 Compare August 27, 2025 14:34
@rzarzynski rzarzynski marked this pull request as ready for review August 27, 2025 14:35
@rzarzynski rzarzynski requested review from a team as code owners August 27, 2025 14:35
@rzarzynski
Copy link
Contributor Author

jenkins retest this please

1 similar comment
@rzarzynski
Copy link
Contributor Author

jenkins retest this please

@rzarzynski
Copy link
Contributor Author

	210 - unittest_bluefs (Failed)
	211 - unittest_bluefs_ex (Failed)
	213 - unittest_bdev (Failed)
	313 - run-tox-alerts-check (Failed)
	316 - run-tox-alerts-lint (Failed)

@rzarzynski
Copy link
Contributor Author

jenkins test make check

@Matan-B Matan-B added this to Crimson Sep 15, 2025
@Matan-B Matan-B moved this to Awaits review in Crimson Sep 15, 2025
@github-actions
Copy link

This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved

flags:
- startup

- name: crimson_osd_objectstore
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could we hide the distinction from users? we're trying to avoid exposing the alienstore name anyway.

if we kept the osd_objectstore setting the same, and handled the different types of bluestore/memstore internallly, we wouldn't need to modify higher level tools like ceph-volume as well.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jdurgin, This issue was actually caught when the cephadm support was added few weeks ago - the crimson_osd_objectstore is no longer used and was removed. We now use osd_objectstore same as classic.
#63817

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jdurgin, @Matan-B: it's hard. I see the point behind "candifying" the thing for users which, purely from the developer's point-of-view, I need to dislike because of complexity and unintended side-effects.

Technically speaking, these configurables are disjoint – crimson has its own set of values, completely different from classical's. Sure, by allowing a daemon to signal senseless choices (e.g. seastore for classical) on its own we can bail out. The price is complexity and ugliness – OSD would need to bypass the configuration subsystem's checks and implement its own.

I agree that alienstore-bluestore is too-technical to be exposed to users (maybe crimson-bluestore would be better?) but just blurring the distinction between bluestore and the crimson's variant brought the problem of unintended upgradeability.

Finally, we'll need to ensure that the OSD variants are able to co-exists for the sake of e.g. data migration. This also means testing with heterogeneous vstart.sh clusters where the need to control the configurables separately can be seen even now.
My intuition is that something is missed. Should we introduce a new entity class for crimson (to have dedicated category spanning all crimson instances in the config subsystem)? I bet that managing the mix on the osd-by-osd basis will be burdensome.

Copy link
Contributor

@Matan-B Matan-B Oct 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@rzarzynski, I think we misunderstood each other here. Josh comment was regarding hiding the distinction from users prespective of the option name . Meaning to use osd_objectstore and not a dedicated crimson_osd_objectstore.
This change is already merged and is not related to the PR here - and shouldn't block by any means.
I agree with the suggestion above to use crimson-bluestore instead of alienstore-bluestore, as we try to keep alien an internal dev concept.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wrote precisely about hiding this distinction. From engineer's POV osd_objectstore is genuinely different from the now-removed crimson_osd_objectstore.

Copy link
Contributor

@Matan-B Matan-B left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should try to preserve osd_objectstore for Crimson as well. This would make orch/vol Crimson integration much easier later on.

// strip the "alienstore-" prefix
const auto real_type = type.substr(alien_prefix.length());
return std::make_unique<AlienStore>(real_type, data, values);
} else {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we add an else if here when bluestore is used that crimson-bluestore should be used instead?
I'm afraid: unsupported objectstore type: bluestore might be confusing.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, people may (and will) think "bluestore" while we really want to make a distinction at the naming.

This extra clause should be there. I will add a commit.

Comment on lines +97 to +103
enum_values:
- alienstore-bluestore
- alienstore-memstore
- seastore
- cyanstore
flags:
- create
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This option name (crimson_osd_objectstore) is removed, I think these options should be added to the global osd_objectstore instead.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you think about keeping the singular osd_objectstore but using a crimson- prefix for the dedicated crimson objcet stores?

  enum_values:
  - bluestore
  - memstore
  - crimson-bluestore
  - crimson-memstore
  - crimson-seastore
  - crimson-cyanstore

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks nice from UI designer's POV.
After putting the engineer's hat I need to point some ugliness in bypassing the generic, config subsystem-level check for this enum.
There are also some worries about heterogeneous clusters and vstart.sh.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The rebased branch preserves the approach with crimson prefixing at the name of the config option.
I don't see a possibility to unify with the classical – even in the alternative approach (crimson-bluestore, crimson-seastore...) the prefixing is present (just becomes prefixing of values) but at at overall higher cost IMHO: bringing non-sensual choices to classical and compromising the enum(we would have some unsupported values but differentiated depending on OSD). Having thealienstore` word is IMHO useful as it clearly divides what's native and what's ported.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm ok with separating the two into a unique crimson backend option. However, merging this PR as-is would break higher level tools (cephadm/vol). What do you think about moving this change out of this PR and follow-up with a PR that would change the options and adjust the relevant tools usage?

Otherwise, main branch wouldn't be able to deploy crimson via cepadm due to the new option.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, this might work as the object store's factory method seems to be decoupled from the type that BlueStore writes in its metadata.

@Matan-B Matan-B moved this from Awaits review to In Progress in Crimson Oct 15, 2025
@github-actions
Copy link

This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved

@github-actions
Copy link

This pull request has been automatically marked as stale because it has not had any activity for 60 days. It will be closed if no further activity occurs for another 30 days.
If you are a maintainer or core committer, please follow-up on this pull request to identify what steps should be taken by the author to move this proposed change forward.
If you are the author of this pull request, thank you for your proposed contribution. If you believe this change is still appropriate, please ensure that any feedback has been addressed and ask for a code review.

@github-actions github-actions bot added the stale label Dec 30, 2025
@Matan-B Matan-B moved this from In Progress to Unassigned / Drafts / Discussion in Crimson Jan 1, 2026
@rzarzynski rzarzynski force-pushed the wip-os-nocrimsonshare branch from d9f5999 to ddc4f0c Compare January 27, 2026 15:04
@github-actions
Copy link

github-actions bot commented Feb 2, 2026

This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
…sical

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
@github-actions
Copy link

github-actions bot commented Feb 9, 2026

This pull request can no longer be automatically merged: a rebase is needed and changes have to be manually resolved

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Unassigned / Drafts / Discussion

Development

Successfully merging this pull request may close these issues.

4 participants