Skip to content

debian,ceph.spec: split ceph-osd into shared base and implementation packages#65782

Merged
tchaikov merged 4 commits intoceph:mainfrom
tchaikov:wip-build-crimson-osd-kefu
Nov 12, 2025
Merged

debian,ceph.spec: split ceph-osd into shared base and implementation packages#65782
tchaikov merged 4 commits intoceph:mainfrom
tchaikov:wip-build-crimson-osd-kefu

Conversation

@tchaikov
Copy link
Contributor

@tchaikov tchaikov commented Oct 5, 2025

Previously, ceph-osd packaging had two mutually exclusive flavors that could only be built one at a time: one with classic OSD and another with crimson OSD. Both provided /usr/bin/ceph-osd, making them impossible to coexist and confusing from a user perspective. This commit restructures the packaging to enable both implementations to coexist on the same system:

  • ceph-osd: Contains shared components (systemd units, sysctl configs, common executables like ceph-erasure-code-tool) and depends on exactly one OSD implementation
  • ceph-osd-classic: Contains the classic OSD implementation binary and classic-specific tools
  • ceph-osd-crimson: Contains the crimson OSD implementation binary and crimson-specific tools

The two implementation packages conflict with each other but both depend on ceph-osd for shared resources.

Changes:

Debian packaging:

  • Revert e5f00d2
  • Add ceph-crimson-osd package
  • Add Recommends: ceph-classic-osd to prefer classic on upgrades
  • Add Replaces/Breaks for smooth upgrades from old monolithic package
  • Create separate .install files for crimson and classic osd packages Enforce exact version matching using ${binary:Version}

RPM packaging:

  • Use rich dependencies for OR requirement (classic or crimson)
  • Add Recommends: ceph-classic-osd for upgrade preference

Upgrade behavior:

Users upgrading from older versions will automatically get ceph-classic-osd due to the Recommends directive, maintaining backward compatibility. Users can explicitly choose crimson by installing ceph-osd-crimson, which will conflict out classic. Switching between implementations is supported via standard package operations, with the alternatives system ensuring /usr/bin/ceph-osd always points to the active implementation.

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

You must only issue one Jenkins command per-comment. Jenkins does not understand
comments with more than one command.

@tchaikov tchaikov requested a review from Matan-B October 5, 2025 08:19
@tchaikov tchaikov requested a review from a team October 5, 2025 08:19
@tchaikov
Copy link
Contributor Author

tchaikov commented Oct 5, 2025

win32 build failed:

+ cloud-localds /home/jenkins-build/build/workspace/ceph-windows-pull-requests/libvirt/config-drive.img /home/jenkins-build/build/workspace/ceph-windows-pull-requests/libvirt/user-data.yaml /home/jenkins-build/build/workspace/ceph-windows-pull-requests/libvirt/metadata.yaml
+ sudo virt-install --name ceph-ubuntu-vstart-ceph-windows-pull-requests-67524 --os-variant ubuntu22.04 --boot hd --virt-type kvm --graphics spice --cpu host --vcpus 16 --memory 16384 --disk /home/jenkins-build/build/workspace/ceph-windows-pull-requests/libvirt/ceph-ubuntu-vstart.qcow2,bus=virtio --disk /home/jenkins-build/build/workspace/ceph-windows-pull-requests/libvirt/config-drive.img,bus=virtio --network network=default,model=virtio --controller type=virtio-serial --channel unix,target_type=virtio,name=org.qemu.guest_agent.0 --noautoconsol
WARNING  /home/jenkins-build/build/workspace/ceph-windows-pull-requests/libvirt/ceph-ubuntu-vstart.qcow2 may not be accessible by the hypervisor. You will need to grant the 'libvirt-qemu' user search permissions for the following directories: ['/home/jenkins-build']
WARNING  /home/jenkins-build/build/workspace/ceph-windows-pull-requests/libvirt/config-drive.img may not be accessible by the hypervisor. You will need to grant the 'libvirt-qemu' user search permissions for the following directories: ['/home/jenkins-build']
ERROR    
An install method must be specified
(--location URL, --cdrom CD/ISO, --pxe, --import, --boot hd|cdrom|...)
Build step 'Execute shell' marked build as failure

see https://jenkins.ceph.com/job/ceph-windows-pull-requests/67524/consoleFull#212386344640526d21-3511-427d-909c-dd086c0d1034

i don't think it's relevant though.

@tchaikov
Copy link
Contributor Author

tchaikov commented Oct 5, 2025

jenkins test windows

@tchaikov
Copy link
Contributor Author

tchaikov commented Oct 5, 2025

jenkins test make check arm64

1 similar comment
@tchaikov
Copy link
Contributor Author

tchaikov commented Oct 7, 2025

jenkins test make check arm64

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 strongly agree that having both flavors "hidden" behind ceph-osd is confusing from user prescriptive. This version is much more transparent and reliable.

Another strong advantage here is that we could always enable crimson as part of ceph images - without needing two separate images/packages for each build (!).

I think it might be worth mentioning that bare-metal deployments still won't be able to coexist (as the binaries still conflict), right?

As far as concerns go:

  • One blocker here would be - #65209 as the alienized version of Bluestore used by Crimson is not compatible with classic-osd - so we should make sure we disallow wrong flavor used by an existing store.

  • This is opens a gate for user mistakes switching the two binaries using manual packaging operations. I think we should disallow osds to boot in case the binary was replaced from classic to crimson or vice versa (leaving upgrades aside). Perhaps the PR mentioned above would be a good solution to this issue. @tchaikov, what do you think?

CC: @rzarzynski, @athanatos, @jdurgin

%{_bindir}/crimson-objectstore-tool

%post crimson-osd
%{_sbindir}/update-alternatives --install %{_bindir}/ceph-osd ceph-osd \
Copy link
Contributor

@Matan-B Matan-B Oct 9, 2025

Choose a reason for hiding this comment

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

We are installing ceph-crimson-osd with lower priority (50) then classic (100), which means to use crimson we would have to manually update-alternatives --set?

being tested at https://shaman.ceph.com/builds/ceph/wip-build-crimson-osd-kefu-10-07/e4b6588dfa11d429e02bc777d1b2c5b5dcd325d0/

Test suite would also need to set the relevant binary for crimson iiuc

Copy link
Contributor Author

@tchaikov tchaikov Oct 9, 2025

Choose a reason for hiding this comment

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

correct. i haven't updated the tests for this change. i should have mark this change as a draft. but i wanted to have some inputs on the general strategy of the packaging.

Copy link
Contributor

Choose a reason for hiding this comment

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

I think we should prioritize this change -- I can help with testing side if needed!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@Matan-B thanks for offering the help. i just updated the teuthology test to use the new package name. let's see if there is any objection, once it's good. we should certainly test it ASAP.

@Matan-B Matan-B added this to Crimson Oct 9, 2025
@Matan-B Matan-B moved this to In Progress in Crimson Oct 9, 2025
debian/control Outdated
ceph-test (<< 12.2.2-14),
ceph-osd (<< 17.0.0)
ceph-osd (<< 20.1.1)
Conflicts: ceph-crimson-osd
Copy link
Contributor

@rzarzynski rzarzynski Oct 9, 2025

Choose a reason for hiding this comment

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

Is it thinkable to have both ceph-crimson-osd and ceph-classic-osd the same time in a single system?
Moving the decision post install-time would make Containerization People's life much easier.

What confuses me is:

The two implementation packages conflict with each other but both depend on ceph-osd for shared resources.

Is a package manager going to allow those 2 conflicted pkgs be installed the same time?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Is it thinkable to have both ceph-crimson-osd and ceph-classic-osd the same time in a single system?

i understand that this arrangement would be more flexible. but that'd require us to prepare two set of service units and sysctl configurations. and even worse -- ceph-classic-osd would be competing with ceph-crimson-osd for CPU cycles and memory. please note, seastar preallocates memory beforehand when using its builtin allocator. this would be a challenge for administrators to planning and to debugging performance issues.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

What confuses me is:

The two implementation packages conflict with each other but both depend on ceph-osd for shared resources.

Is a package manager going to allow those 2 conflicted pkgs be installed the same time?

no. it does not. the idea is that we don't allow classic osd and crimson osd to colocate on the same node. but since they share the same set of utilities and service unit, we let both of them depend on the package providing these tools. the sharing is not an arrangement to "share" on resource the same node, but to share the package dependency.

Copy link
Contributor

Choose a reason for hiding this comment

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

Perhaps we could rename the title

Unify Crimson and Classic into a single package

Moreover, I think once we implement the testing side with actual usage of update-alternatives --set it would be easier to understand the change.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

after a second thought, i am dropping the "Conflicts" between ceph-classic-osd and ceph-crimson-osd to facilitate the containerization of crimson + classic

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Unify Crimson and Classic into a single package

strictly speaking, we are not unifying them into a single package. instead, ceph-osd is now split into ceph-osd and ceph-classic-osd. crimson is now a separate package. if we really want to use "unify" in the title, we are unifying two flavors. but it would be more confusing, as the idea of "flavor" is not quite related to the change here.

@tchaikov
Copy link
Contributor Author

tchaikov commented Oct 9, 2025

I strongly agree that having both flavors "hidden" behind ceph-osd is confusing from user prescriptive. This version is much more transparent and reliable.

Another strong advantage here is that we could always enable crimson as part of ceph images - without needing two separate images/packages for each build (!).

I think it might be worth mentioning that bare-metal deployments still won't be able to coexist (as the binaries still conflict), right?

That's intentional. As I am afraid that collocating these two different types of OSDs on the same bare-metal host could lead to confusion and issues that are difficult to troubleshoot. Keeping them separate helps maintain clearer system boundaries.

As far as concerns go:

i agree it's important to prevent user from switching from classic osd to crimson on a certain node or the other way around. but why do you think it's a blocker of this change? that's a general design consideration for crimson -- a guard rail for misconfiguration.

  • This is opens a gate for user mistakes switching the two binaries using manual packaging operations. I think we should disallow osds to boot in case the binary was replaced from classic to crimson or vice versa (leaving upgrades aside). Perhaps the PR mentioned above would be a good solution to this issue. @tchaikov, what do you think?

i see. making classic-osd and crimson "interchangeable" does make it simpler. but, please note, before this change, user is already allowed to install crimson osd to node where classic osd was installed. actually this is how packaging works -- to allow user to install packages.

in short, i think these two problems are orthogonal. we should address this problem separately, but not with packaging. #65209 could be a good solution, but i haven't got a chance to look into it yet.

CC: @rzarzynski, @athanatos, @jdurgin

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.

in short, i think these two problems are orthogonal. we should address this problem separately, but not with packaging. #65209 could be a good solution, but i haven't got a chance to look into it yet.

Agree it shouldn't be a blocker, I think we should move forward with this.
Next steps for this PR could be:

  • Update Crimson's suite to use the new package
  • Update Crimson Docs (how to use the crimson binary)
    Possibly also:
  • Enable (WITH_CRIMSON) Crimson by default
  • Stop building Crimson flavor building in CI/Shaman

@tchaikov, @rzarzynski - WDYT?
Please let me know if I can help with any of the above if agreed.

@tchaikov
Copy link
Contributor Author

tchaikov commented Oct 17, 2025

changelog

  • dropped the "Conflicts" between ceph-crimson-osd and ceph-classic-osd.
  • added a commit to install classic-osd in install task by default, and install crimson-osd for crimson test suites.

@tchaikov
Copy link
Contributor Author

@Matan-B Hi Matan, thanks for the feedback. I agree with your overall direction. Here's my plan for addressing your suggestions:

in short, i think these two problems are orthogonal. we should address this problem separately, but not with packaging. #65209 could be a good solution, but i haven't got a chance to look into it yet.

Agree it shouldn't be a blocker, I think we should move forward with this. Next steps for this PR could be:

* Update Crimson's suite to use the new package

I'm updating the teuthology suites in the latest revision of this PR to implement this change.

* Update Crimson Docs (how to use the crimson binary)

I'd prefer to handle this as a follow-up PR that also renames the executables:

  • crimson-osdceph-crimson-osd
  • ceph-osdceph-classic-osd

This naming change might be controversial, so I think it deserves separate discussion.

  Possibly also:

* Enable (WITH_CRIMSON) Crimson **by default**

We currently use an opt-in policy for building Crimson because not all distros have C++ compilers capable of building Seastar with coroutines. Changing this could break downstream builds, so I'd prefer to defer this to a follow-up change.

* Stop building Crimson flavor building in CI/Shaman

I don't think we can implement this change in this repo. I'll coordinate with the team on an upcoming change in ceph-build.

@tchaikov, @rzarzynski - WDYT? Please let me know if I can help with any of the above if agreed.

@tchaikov tchaikov force-pushed the wip-build-crimson-osd-kefu branch from e4b6588 to 1d62f09 Compare October 17, 2025 14:33
@github-actions github-actions bot added the tests label Oct 17, 2025
@tchaikov tchaikov force-pushed the wip-build-crimson-osd-kefu branch from 1d62f09 to 0003153 Compare October 19, 2025 01:53
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.

LGTM! Thank you for replying to the concerns brought up in previous comments.

Summarizing future steps here:

  • A follow-up PR that will suggest to also rename the executables:
    crimson-osd → ceph-crimson-osd
    ceph-osd → ceph-classic-osd
    Once this PR is approved we should be able to also update the documentation with how to enable/use the Crimson osd binary with the new packaging.

  • Enabling WITH_CRIMSON (if possible, by default) in order to stop building dedicated Crimson builds in CI could be discussed in a follow up PR (ceph-build repo).


nit: PR description mentions "conflicts" which is not longer true iiuc.

@Matan-B Matan-B moved this from In Progress to Needs QA in Crimson Oct 20, 2025
@tchaikov tchaikov force-pushed the wip-build-crimson-osd-kefu branch from 0003153 to 922a2fa Compare October 20, 2025 14:22
@tchaikov
Copy link
Contributor Author

tchaikov commented Oct 20, 2025

@Matan-B seems we need more changes to ready this transition. i am looking at https://shaman.ceph.com/builds/ceph/wip-build-crimson-osd-kefu-02/b72a63cd24eb87a1df711ca50783433e975d50ad/default/455473/ . where we enabled pkg.ceph.crimson build profile on ubuntu jammy because the branch name contains "crimson" even the flavor is not any one of "crimson-debug" , "crimson-release" and "crimson".

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.

@Matan-B seems we need more changes to ready this transition. i am looking at https://shaman.ceph.com/builds/ceph/wip-build-crimson-osd-kefu-02/b72a63cd24eb87a1df711ca50783433e975d50ad/default/455473/ . where we enabled pkg.ceph.crimson build profile on ubuntu jammy because the branch name contains "crimson" even the flavor is not any one of "crimson-debug" , "crimson-release" and "crimson".

++ with_crimson=true
++ with_crimson=true
++ local with_crimson=true
++ with_crimson=true
....

++ ci_debug 'Running munge_debian_control() in install-deps.sh'
++ in_jenkins
++ '[' -n /ceph ']'
++ echo 'CI_DEBUG: Running munge_debian_control() in install-deps.sh'
CI_DEBUG: Running munge_debian_control() in install-deps.sh
++ backports=
+++ munge_debian_control '24.04.3 LTS (Noble Numbat)' debian/control
+++ local 'version=24.04.3 LTS (Noble Numbat)'
+++ shift
+++ local control=debian/control
+++ case "$version" in
+++ echo debian/control
++ control=debian/control
++ case "$VERSION" in
++ build_profiles=
++ false
++ true
++ build_profiles+=,pkg.ceph.crimson
++ false

I'm assuming the ARG WITH_CRIMSON=false will do, but will this impact pr makecheks?

Dockerfile.build Outdated
ARG SCCACHE_VERSION=v0.8.2
ARG SCCACHE_REPO=https://github.com/mozilla/sccache
ARG WITH_CRIMSON=true
ARG WITH_CRIMSON=false
Copy link
Contributor

@Matan-B Matan-B Oct 21, 2025

Choose a reason for hiding this comment

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

Will this disable Crimson makecheck builds?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

no, it does not. i just checked the log file of the "make check" run of this PR:

$ grep -E '(crimson|seastar)' \#168804.txt | grep ': unittest-'
        Start 266: unittest-crimson-backfill
        Start 267: unittest-seastar-buffer
        Start 268: unittest-seastar-denc
        Start 269: unittest-seastar-socket
        Start 270: unittest-seastar-messenger
        Start 271: unittest-seastar-alienstore-thread-pool
        Start 272: unittest-seastar-config
167/320 Test #268: unittest-seastar-denc .....................   Passed    0.37 sec
        Start 273: unittest-seastar-perfcounters
        Start 274: unittest-seastar-lru
        Start 275: unittest-seastar-calc-subsets
        Start 278: unittest-seastar-messenger-thrash
173/320 Test #274: unittest-seastar-lru ......................   Passed    0.22 sec
        Start 279: unittest-seastar-errorator
        Start 280: unittest-crimson-coroutine
178/320 Test #275: unittest-seastar-calc-subsets .............   Passed    0.55 sec
182/320 Test #267: unittest-seastar-buffer ...................   Passed    1.18 sec
193/320 Test #269: unittest-seastar-socket ...................   Passed    5.81 sec
197/320 Test #272: unittest-seastar-config ...................   Passed    6.64 sec
199/320 Test #271: unittest-seastar-alienstore-thread-pool ...   Passed    7.27 sec
203/320 Test #273: unittest-seastar-perfcounters .............   Passed    8.32 sec
204/320 Test #266: unittest-crimson-backfill .................   Passed    9.64 sec
208/320 Test #279: unittest-seastar-errorator ................   Passed   11.14 sec
209/320 Test #280: unittest-crimson-coroutine ................   Passed   11.34 sec
235/320 Test #270: unittest-seastar-messenger ................   Passed   30.56 sec
266/320 Test #278: unittest-seastar-messenger-thrash .........   Passed  101.29 sec

see also https://jenkins.ceph.com/job/ceph-pull-requests/168804/

Copy link
Contributor

Choose a reason for hiding this comment

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

[ $WITH_CRIMSON ] && with_crimson=true || with_crimson=false

I don't think this does what you think it does. WITH_CRIMSON=false enabled crimson.
I wrote a long response that github ate. In short:

The WITH_CRIMSON=true default was causing all builds to attempt building
crimson, including distributions that don't meet the GCC 13+ requirement
(e.g., Ubuntu Jammy with GCC 11.4.0).

The Jenkins CI pipeline correctly excludes crimson flavors from non-centos9
distributions via matrix excludes, and explicitly sets WITH_CRIMSON=true
via .env only for crimson-* flavors. However, the Dockerfile ARG default
was overriding this logic for non-crimson builds where WITH_CRIMSON was
not explicitly set.

By changing the default to false, crimson builds now only occur when
explicitly requested via the WITH_CRIMSON environment variable, which
aligns with the CI pipeline's intended behavior.

I think your info is out of date. The containerfile defaults are for make check. Everything else (CI jobs, packages) can use the build image variant feature of BWC which is specifically designed to use a slimmer subset of packages, but the defaults are for make check (the primary use case for BWC).

If you change this we're likely going to break casual users of BWC who don't want to fiddle with a bunch of CLI options just to run make check in a container (including myself).

@rzarzynski
Copy link
Contributor

In the matter of package naming: the flavor name in the middle (the infix notation) seems a bit unfriendly towards sorting and tab-completion.

How about:

  • ceph-crimson-osd -> ceph-osd-crimson and
  • ceph-classical-osd -> ceph-osd-classical?

@tchaikov tchaikov force-pushed the wip-build-crimson-osd-kefu branch from 301c179 to 9299468 Compare October 21, 2025 10:38
@ljflores
Copy link
Member

@tchaikov @Matan-B some teuthology tests are having trouble installing the "ceph-osd-classic" package: https://tracker.ceph.com/issues/73848
Can you have a look?

@ljflores hi Laura, I updated the tracker issue. thanks for the ping.

@tchaikov the issue is also coming up in the nightly runs, where all tests are running on the same commit. The affected tests are thrash-old-clients and upgrade, so perhaps it's an issue of mixed versions.

@Matan-B
Copy link
Contributor

Matan-B commented Nov 17, 2025

@tchaikov the issue is also coming up in the nightly runs, where all tests are running on the same commit. The affected tests are thrash-old-clients and upgrade, so perhaps it's an issue of mixed versions.

@ljflores, I've pushed a fix #66268 fixing thrash-old-clients, can you please share the upgrade failures? PTAL

Matan-B added a commit to Matan-B/ceph that referenced this pull request Nov 18, 2025
With ceph#65782 merged, Crimson could be now built as part of the default RPM build flavor.
The binaries ceph-osd-crimson and ceph-osd-classic are managed via `update-alternatives`
and selected based on priority:

- ceph-osd-classic keeps the **highest** priority (100) and remains the default.
- Switching to crimson is possible via:
  update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson

Existing classic behavior remains unchanged unless the above command is explicitly executed.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Nov 19, 2025
With ceph#65782 merged, Crimson could be now built as part of the default RPM build flavor.
The binaries ceph-osd-crimson and ceph-osd-classic are managed via `update-alternatives`
and selected based on priority:

- ceph-osd-classic keeps the **highest** priority (100) and remains the default.
- Switching to crimson is possible via:
  update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson

Existing classic behavior remains unchanged unless the above command is explicitly executed.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Nov 19, 2025
With ceph#65782 merged, Crimson could be now built as part of the default RPM build flavor.
The binaries ceph-osd-crimson and ceph-osd-classic are managed via `update-alternatives`
and selected based on priority:

- ceph-osd-classic keeps the **highest** priority (100) and remains the default.
- Switching to crimson is possible via:
  update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson

Existing classic behavior remains unchanged unless the above command is explicitly executed.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
samarahu pushed a commit to samarahu/ceph that referenced this pull request Nov 24, 2025
With ceph#65782 merged, Crimson could be now built as part of the default RPM build flavor.
The binaries ceph-osd-crimson and ceph-osd-classic are managed via `update-alternatives`
and selected based on priority:

- ceph-osd-classic keeps the **highest** priority (100) and remains the default.
- Switching to crimson is possible via:
  update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson

Existing classic behavior remains unchanged unless the above command is explicitly executed.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
ideepika pushed a commit to ideepika/ceph that referenced this pull request Nov 25, 2025
With ceph#65782 merged, Crimson could be now built as part of the default RPM build flavor.
The binaries ceph-osd-crimson and ceph-osd-classic are managed via `update-alternatives`
and selected based on priority:

- ceph-osd-classic keeps the **highest** priority (100) and remains the default.
- Switching to crimson is possible via:
  update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson

Existing classic behavior remains unchanged unless the above command is explicitly executed.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Dec 1, 2025
Previously we were using a crimson dedicated images,
`ceph-osd` is no longer overriden when Crimson is enabled.
See: ceph#65782

for packaged based deployments we are now using:
```
sudo update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson
```

containerized deployments should also be able to use crimson-osd when
both osd are available in the image.
extra_container_args would allow to pass additional arguments
directly to the container at runtime and applied (ceph orch apply)

Fixes: https://tracker.ceph.com/issues/73970

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Dec 1, 2025
Previously we were using a crimson dedicated images,
`ceph-osd` is no longer overriden when Crimson is enabled.
See: ceph#65782

for packaged based deployments we are now using:
```
sudo update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson
```

containerized deployments should also be able to use crimson-osd when
both osd are available in the image.
extra_container_args would allow to pass additional arguments
directly to the container at runtime and applied (ceph orch apply)

Fixes: https://tracker.ceph.com/issues/73970

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Dec 1, 2025
Previously we were using a crimson dedicated images,
`ceph-osd` is no longer overriden when Crimson is enabled.
See: ceph#65782

for packaged based deployments we are now using:
```
sudo update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson
```

containerized deployments should also be able to use crimson-osd when
both osd are available in the image.
extra_container_args would allow to pass additional arguments
directly to the container at runtime and applied (ceph orch apply)

Fixes: https://tracker.ceph.com/issues/73970

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Dec 1, 2025
Previously we were using a crimson dedicated images,
`ceph-osd` is no longer overriden when Crimson is enabled.
See: ceph#65782

for packaged based deployments we are now using:
```
sudo update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson
```

containerized deployments should also be able to use crimson-osd when
both osd are available in the image.
extra_container_args would allow to pass additional arguments
directly to the container at runtime and applied (ceph orch apply)

Fixes: https://tracker.ceph.com/issues/73970

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Dec 1, 2025
Previously we were using a crimson dedicated images,
`ceph-osd` is no longer overriden when Crimson is enabled.
See: ceph#65782

for packaged based deployments we are now using:
```
sudo update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson
```

containerized deployments should also be able to use crimson-osd when
both osd are available in the image.
extra_container_args would allow to pass additional arguments
directly to the container at runtime and applied (ceph orch apply)

Fixes: https://tracker.ceph.com/issues/73970

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
@vshankar
Copy link
Contributor

vshankar commented Dec 3, 2025

@tchaikov @Matan-B some teuthology tests are having trouble installing the "ceph-osd-classic" package: https://tracker.ceph.com/issues/73848

Can you have a look?

Sorry for commenting on a merged PR. I'm seeing related failures in fs suite. https://tracker.ceph.com/issues/74026. Trying a fix here: #66475 but still needs work.

@Matan-B
Copy link
Contributor

Matan-B commented Dec 3, 2025

Sorry for commenting on a merged PR. I'm seeing related failures in fs suite. https://tracker.ceph.com/issues/74026. Trying a fix here: #66475 but still needs work.

Replied in the PR, thanks!

MattyWilliams22 pushed a commit to MattyWilliams22/ceph that referenced this pull request Dec 4, 2025
With ceph#65782 merged, Crimson could be now built as part of the default RPM build flavor.
The binaries ceph-osd-crimson and ceph-osd-classic are managed via `update-alternatives`
and selected based on priority:

- ceph-osd-classic keeps the **highest** priority (100) and remains the default.
- Switching to crimson is possible via:
  update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson

Existing classic behavior remains unchanged unless the above command is explicitly executed.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
@cbodley
Copy link
Contributor

cbodley commented Dec 5, 2025

@tchaikov @Matan-B i'm having trouble getting the rgw/upgrade suite to pass after this change. i'm guessing that all of the other upgrade jobs are using cephadm, but the rgw suite is still package-based (edit: i see that @vshankar is seeing the same in #66475)

in #66341, i'm trying to work around errors like Error: Unable to find a match: ceph-osd-classic because these packages don't exist on squid and tentacle. that pr solves the initial issue, but some of the jobs still fail later on (see #66341 (comment) for details)

the root cause appears to be these errors when the upgrade installs ceph-osd-classic and ceph-osd-crimson:

Installing : ceph-osd-crimson-2:20.3.0-4434.g8611241d.el9.x86_6 21/87
Running scriptlet: ceph-osd-crimson-2:20.3.0-4434.g8611241d.el9.x86_6 21/87
failed to link /usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd exists and it is not a symlink

the original ceph-osd binary gets removed later in the upgrade, leading to failures when trying to restart the osds:

No such file or directory: 'ceph-osd'

perezjosibm pushed a commit to ceph/ceph-ci that referenced this pull request Dec 8, 2025
Previously we were using a crimson dedicated images,
`ceph-osd` is no longer overriden when Crimson is enabled.
See: ceph/ceph#65782

for packaged based deployments we are now using:
```
sudo update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson
```

containerized deployments should also be able to use crimson-osd when
both osd are available in the image.
extra_container_args would allow to pass additional arguments
directly to the container at runtime and applied (ceph orch apply)

Fixes: https://tracker.ceph.com/issues/73970

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Dec 9, 2025
With ceph#65782 merged, upgrading ceph-osd
would need to replace the previous ceph-osd existing on the machine.
Otherwise, we won't be able to symlink the newly installed package:
```
2025-12-05T21:09:20.472 INFO:teuthology.orchestra.run.smithi077.stdout:
Installing       : ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.478 INFO:teuthology.orchestra.run.smithi077.stdout:
Running scriptlet: ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.479
INFO:teuthology.orchestra.run.smithi077.stdout:failed to link
/usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd
exists and it is not a symlink
```

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Dec 9, 2025
With ceph#65782 merged, upgrading ceph-osd
would need to replace the previous ceph-osd existing on the machine.
Otherwise, we won't be able to symlink the newly installed package:
```
2025-12-05T21:09:20.472 INFO:teuthology.orchestra.run.smithi077.stdout:
Installing       : ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.478 INFO:teuthology.orchestra.run.smithi077.stdout:
Running scriptlet: ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.479
INFO:teuthology.orchestra.run.smithi077.stdout:failed to link
/usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd
exists and it is not a symlink
```

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Dec 9, 2025
With ceph#65782 merged, upgrading ceph-osd
would need to replace the previous ceph-osd existing on the machine.
Otherwise, we won't be able to symlink the newly installed package:
```
2025-12-05T21:09:20.472 INFO:teuthology.orchestra.run.smithi077.stdout:
Installing       : ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.478 INFO:teuthology.orchestra.run.smithi077.stdout:
Running scriptlet: ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.479
INFO:teuthology.orchestra.run.smithi077.stdout:failed to link
/usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd
exists and it is not a symlink
```

Note: debian/control ceph-osd-classic already had Replace and Breaks:
      - Breaks is replaced with Conflicts to not allow coexistence.
      - Release version is bumped up to be relevant for latest main

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
batrick pushed a commit to ceph/ceph-ci that referenced this pull request Dec 9, 2025
With ceph/ceph#65782 merged, upgrading ceph-osd
would need to replace the previous ceph-osd existing on the machine.
Otherwise, we won't be able to symlink the newly installed package:
```
2025-12-05T21:09:20.472 INFO:teuthology.orchestra.run.smithi077.stdout:
Installing       : ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.478 INFO:teuthology.orchestra.run.smithi077.stdout:
Running scriptlet: ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.479
INFO:teuthology.orchestra.run.smithi077.stdout:failed to link
/usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd
exists and it is not a symlink
```

Note: debian/control ceph-osd-classic already had Replace and Breaks:
      - Breaks is replaced with Conflicts to not allow coexistence.
      - Release version is bumped up to be relevant for latest main

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
(cherry picked from commit 16cc623)
cbodley pushed a commit to ceph/ceph-ci that referenced this pull request Dec 10, 2025
With ceph/ceph#65782 merged, upgrading ceph-osd
would need to replace the previous ceph-osd existing on the machine.
Otherwise, we won't be able to symlink the newly installed package:
```
2025-12-05T21:09:20.472 INFO:teuthology.orchestra.run.smithi077.stdout:
Installing       : ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.478 INFO:teuthology.orchestra.run.smithi077.stdout:
Running scriptlet: ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.479
INFO:teuthology.orchestra.run.smithi077.stdout:failed to link
/usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd
exists and it is not a symlink
```

Note: debian/control ceph-osd-classic already had Replace and Breaks:
      - Breaks is replaced with Conflicts to not allow coexistence.
      - Release version is bumped up to be relevant for latest main

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to ceph/ceph-ci that referenced this pull request Dec 11, 2025
With ceph/ceph#65782 merged, upgrading ceph-osd
would need to replace the previous ceph-osd existing on the machine.
Otherwise, we won't be able to symlink the newly installed package:
```
2025-12-05T21:09:20.472 INFO:teuthology.orchestra.run.smithi077.stdout:
Installing       : ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.478 INFO:teuthology.orchestra.run.smithi077.stdout:
Running scriptlet: ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.479
INFO:teuthology.orchestra.run.smithi077.stdout:failed to link
/usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd
exists and it is not a symlink
```

Note: debian/control ceph-osd-classic already had Replace and Breaks:
      - Breaks is replaced with Conflicts to not allow coexistence.
      - Release version is bumped up to be relevant for latest main

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Matan-B added a commit to Matan-B/ceph that referenced this pull request Dec 11, 2025
With ceph#65782 merged, upgrading ceph-osd
would need to replace the previous ceph-osd existing on the machine.
Otherwise, we won't be able to symlink the newly installed package:
```
2025-12-05T21:09:20.472 INFO:teuthology.orchestra.run.smithi077.stdout:
Installing       : ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.478 INFO:teuthology.orchestra.run.smithi077.stdout:
Running scriptlet: ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.479
INFO:teuthology.orchestra.run.smithi077.stdout:failed to link
/usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd
exists and it is not a symlink
```

Note: debian/control ceph-osd-classic already had Replace and Breaks:
      - Breaks is replaced with Conflicts to not allow coexistence.
      - Release version is bumped up to be relevant for latest main

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
JoshuaGabriel pushed a commit to JoshuaGabriel/ceph that referenced this pull request Jan 7, 2026
With ceph#65782 merged, Crimson could be now built as part of the default RPM build flavor.
The binaries ceph-osd-crimson and ceph-osd-classic are managed via `update-alternatives`
and selected based on priority:

- ceph-osd-classic keeps the **highest** priority (100) and remains the default.
- Switching to crimson is possible via:
  update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson

Existing classic behavior remains unchanged unless the above command is explicitly executed.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
JoshuaGabriel pushed a commit to JoshuaGabriel/ceph that referenced this pull request Jan 7, 2026
With ceph#65782 merged, upgrading ceph-osd
would need to replace the previous ceph-osd existing on the machine.
Otherwise, we won't be able to symlink the newly installed package:
```
2025-12-05T21:09:20.472 INFO:teuthology.orchestra.run.smithi077.stdout:
Installing       : ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.478 INFO:teuthology.orchestra.run.smithi077.stdout:
Running scriptlet: ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.479
INFO:teuthology.orchestra.run.smithi077.stdout:failed to link
/usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd
exists and it is not a symlink
```

Note: debian/control ceph-osd-classic already had Replace and Breaks:
      - Breaks is replaced with Conflicts to not allow coexistence.
      - Release version is bumped up to be relevant for latest main

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
amathuria pushed a commit to amathuria/ceph that referenced this pull request Jan 19, 2026
With ceph#65782 merged, Crimson could be now built as part of the default RPM build flavor.
The binaries ceph-osd-crimson and ceph-osd-classic are managed via `update-alternatives`
and selected based on priority:

- ceph-osd-classic keeps the **highest** priority (100) and remains the default.
- Switching to crimson is possible via:
  update-alternatives --set ceph-osd /usr/bin/ceph-osd-crimson

Existing classic behavior remains unchanged unless the above command is explicitly executed.

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
amathuria pushed a commit to amathuria/ceph that referenced this pull request Jan 19, 2026
With ceph#65782 merged, upgrading ceph-osd
would need to replace the previous ceph-osd existing on the machine.
Otherwise, we won't be able to symlink the newly installed package:
```
2025-12-05T21:09:20.472 INFO:teuthology.orchestra.run.smithi077.stdout:
Installing       : ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.478 INFO:teuthology.orchestra.run.smithi077.stdout:
Running scriptlet: ceph-osd-classic-2:20.3.0-4434.g8611241d.el9.x86_6
24/87
2025-12-05T21:09:20.479
INFO:teuthology.orchestra.run.smithi077.stdout:failed to link
/usr/bin/ceph-osd -> /etc/alternatives/ceph-osd: /usr/bin/ceph-osd
exists and it is not a symlink
```

Note: debian/control ceph-osd-classic already had Replace and Breaks:
      - Breaks is replaced with Conflicts to not allow coexistence.
      - Release version is bumped up to be relevant for latest main

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Merged (Main)

Development

Successfully merging this pull request may close these issues.

8 participants