Skip to content

Conversation

@Greenpepper15
Copy link

@Greenpepper15 Greenpepper15 commented Oct 27, 2025

Describe what this PR does

The PR adds three new block encryption (RBD encryption) configuration options to customize the encryptions means used.

The option "encryptionCipher" configures the cipher with which the block device is encrypted. The option "encryptionKeySize" is about configuring the key size.

Lastly the option "integrityMode" configures the algorithms the block encryption should use to verify the integrity of consumed data. When this option is not used then no integrity verification happens. This is implemented via the kernel module dmIntegrity. Essentially when cryptsetup receives the “integrityMode” flag then it will set up a dmcrypt mapper device and a dmIntegrity mapper device.

When the integrity option is not used IO stack looks like this

App (Pod) —> dmcrypt mapper —> rbd device

With the integrity option it will look like this

App (Pod) —> dmcrypt mapper —> dmIntegrity mapper —> rbd device

In this setup the dmcrypt device would encrypt data and compute authentication tags (for example hmacs). Meanwhile dmIntegrity would be tasked with storing the encrypted data and corresponding authentication tags on the block device.

Motivation

I want to be able to customize means to employ encryption to match a required security level. Since I added an allowlist for cipher strings not any algorithm can be deployed (which hinders configurability) but it is the most easiest and secure means to validate user input.

Additionally I want to integrate means of verifying the integrity of consumed data because it’s becoming increasingly required from a compliance standpoint. For example the recently released Digital Operational Resilience Act (DORA) legislation from the EU demands that data confidentiality and integrity need to be established. I see the usage of dmIntegrity as the easiest means to achieve this.

Is there anything that requires special attention

Do you have any questions?

  • In the PR a resize operation is not possible when integrity protection is enabled. This is because in older kernel releases (older than 5.7) it was not possible
  • I made an allowlist for the “encryptionCipher” and “integrityMode” configurations due to security concerns. Do you also think that this allowlist makes sense?

Are there concerns around backward compatibility?

  • The biggest hurdle for backwards compatibility will be the dmIntegrity. For example in this PR I forbid the usage of resize when the integrity option is used because on older linux kernel versions the resize key word was not supported.

Provide any external context for the change, if any.

These sources illustrate why integrating an integrity mode makes sense:

  • Digital Operational Resilience Act (DORA)

    • Article 5 (2) (b) “[The management body shall] put in place policies that aim to ensure the maintenance of high standards of availability, authenticity, integrity and confidentiality, of data;”
  • BSI TR-02102-1 "Kryptographische Verfahren: Empfehlungen und Schlüssellängen" Version: 2025-01

    • Germany's Federal Office for Information Security
    • Documents talks about when encryption is used means to establish that the ciphertext was not altered is crucial
    • “Die Verwendung einer Volume-Verschlüsselungslösung allein ist nur empfehlenswert, wenn diese einen wirksamen kryptographischen Schutz vor Manipulation der Daten beinhaltet [...]”
    • Translation: The use of a volume encryption solution alone is only recommended if it includes effective cryptographic protection against data manipulation.
  • Here is useful dmintegrity documentation

Related issues

Resolves #5686

Future concerns

  • Resize is currently not supported when an integrity mode is enabled. However since a resize is possible in dmIntegrity with newer linux kernel versions (larger than 5.7) we could support it
  • The new configuration options could also be used to make file system encryption more customizable

Checklist:

  • Commit Message Formatting: Commit titles and messages follow
    guidelines in the developer
    guide
    .
  • Reviewed the developer guide on Submitting a Pull
    Request
  • Pending release
    notes

    updated with breaking and/or notable changes for the next major release.
  • Documentation has been updated, if necessary.
  • Unit tests have been added, if necessary.
  • Integration tests have been added, if necessary.

Show available bot commands

These commands are normally not required, but in case of issues, leave any of
the following bot commands in an otherwise empty comment in this PR:

  • /retest ci/centos/<job-name>: retest the <job-name> after unrelated
    failure (please report the failure too!)

@Greenpepper15 Greenpepper15 changed the title Feature/5686/rbd configurable cipher rbd: make block encryption cipher configurable Nov 3, 2025
@mergify mergify bot added the component/rbd Issues related to RBD label Nov 3, 2025
@Greenpepper15
Copy link
Author

Hi @nixpanic or @Madhu-1 , since you are both very familiar with this repository, I would appreciate your feedback on my recent changes.

I know you're busy, so if it would be helpful or save time, I am happy to schedule a quick meeting to walk you through the modifications. Maybe we can use the next Dev standup slot. Please let me know what works best for you.

@Madhu-1 Madhu-1 requested review from a team, Rakshith-R and nixpanic November 4, 2025 09:20
@Madhu-1
Copy link
Collaborator

Madhu-1 commented Nov 4, 2025

Hi @nixpanic or @Madhu-1 , since you are both very familiar with this repository, I would appreciate your feedback on my recent changes.

I know you're busy, so if it would be helpful or save time, I am happy to schedule a quick meeting to walk you through the modifications. Maybe we can use the next Dev standup slot. Please let me know what works best for you.

@Greenpepper15 Thanks for the work 🎉 , requested for reviews on this one. Lets continue the discussion in the PR itself, if required we can have a this as a topic in one of the standup.


# (optional) Instruct the plugin it has to encrypt the volume with this specific cipher.
# By default it is disabled. If encrypted is false then this flag will be ignored.
# (optional) Instruct the plugin it has to encrypt the volume
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 these changes are part of previous commit.

Copy link
Contributor

@iPraveenParihar iPraveenParihar left a comment

Choose a reason for hiding this comment

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

Could you please add e2e test with these options enabled in StorageClass?

"aes-xts-plain64": {},
"serpent-xts-plain64": {},
"twofish-xts-plain64": {},
"aegis128-random": {},
Copy link
Contributor

Choose a reason for hiding this comment

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

do you think we need to validate keysize for these ciphers?
Like what happens If a user provides cipher aegis128-random and 256 as keysize? Do the luks.Format() fails?

Copy link
Author

Choose a reason for hiding this comment

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

Yes if a key size is used that is not compatible with the cipher than luks.format() will fail.

The aegis128-random case is an easy case because if any other key size than 128 is used it will fail. But I am unsure if we should do it to all possible ciphers because than we would couple our implementation with the cipher suites available on the host system.

At the end the behavior would be the same. Either our sanity check will generate an error or luks.format() will generate an error.

But far as I can see from my local testing the quality of the error message from luks.format() varies widely.
For example this
sudo cryptsetup luksFormat --type luks2 --cipher aegis128-random --integrity aead --key-size 256 /dev/vdb
results in
Cipher aegis128-random (key size 256 bits) is not available.
which is good.

But something like
sudo cryptsetup luksFormat --type luks2 --cipher aes-xts-random --integrity hmac-sha256 --key-size 1024 /dev/vdb
(xts modes only allow key sizes of 256 and 512 on my system)
results in
device-mapper: reload ioctl on temporary-cryptsetup-fa35e15a-2c7f-4b6f-aea2-02ff3bfe7624 (253:1) failed: Invalid argument
which will is not very expressive.

Based on this I think a Ceph-csi local (cipher, key size) pair validation seems like a good idea. If people want to support different key sizes they can open a small PR.

What do you think?

Copy link
Member

Choose a reason for hiding this comment

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

What about keeping a known good list, and reporting a warning about an unknown combination? That way users may send a PR for additional known good combinations, and are not completely surprised when luksFormat spits out an incomprehensible error.

Copy link
Author

Choose a reason for hiding this comment

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

Yeah that sounds like a good compromise. I will implement this.

Copy link
Author

Choose a reason for hiding this comment

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

Hey can you check out my recommendation system?
It is implemented in the GetRecommendation() function in cryptsetup.go.

I would be especially interested in feedback on how I report the recommendation to users. I report it via the UsefulLog function. You guys have other ideas?

// EncryptVolume encrypts provided device with LUKS.
func EncryptVolume(ctx context.Context, devicePath, passphrase string, cipher *cryptsetup.EncryptionOptions) error {
	log.DebugLog(ctx, "Encrypting device %q	 with LUKS", devicePath)
	if cipher != nil {
		recommendation := cryptsetup.GetRecommendation(*cipher)
		log.UsefulLog(ctx, "current encryption configuration is: %v", recommendation)
	}
	_, stdErr, err := luks.Format(devicePath, passphrase, cipher)
...

return nil
}

func ParseCipherOptions(volOptions map[string]string) (*cryptsetup.EncryptionOptions, error) {
Copy link
Contributor

Choose a reason for hiding this comment

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

please add unit test for this.

@Greenpepper15
Copy link
Author

Yes I am working on adding the e2e tests and unit tests.

Copy link
Member

@nixpanic nixpanic left a comment

Choose a reason for hiding this comment

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

Thanks for the PR, looks quite ok in general. Missing unit+e2e tests are known and worked on, great!

It would be good to point to the cryptsetup documentation somewhere, in the hope it contains a list of valid/recommended/working combinations for ciphers and keysizes.

return ve.id
}

func (ve *VolumeEncryption) CipherOptions() *cryptsetup.EncryptionOptions {
Copy link
Member

Choose a reason for hiding this comment

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

new functions and stucts ideally get a small comment, here and in cryptsetup.go

Copy link
Collaborator

Choose a reason for hiding this comment

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

Can we add a comment for the exported function

"aes-xts-plain64": {},
"serpent-xts-plain64": {},
"twofish-xts-plain64": {},
"aegis128-random": {},
Copy link
Member

Choose a reason for hiding this comment

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

What about keeping a known good list, and reporting a warning about an unknown combination? That way users may send a PR for additional known good combinations, and are not completely surprised when luksFormat spits out an incomprehensible error.

| `csi.storage.k8s.io/provisioner-secret-namespace`, `csi.storage.k8s.io/node-stage-secret-namespace` | yes (for Kubernetes) | namespaces of the above Secret objects |
| `mounter` | no | if set to `rbd-nbd`, use `rbd-nbd` on nodes that have `rbd-nbd` and `nbd` kernel modules to map rbd images |
| `encrypted` | no | disabled by default, use `"true"` to enable either LUKS or fscrypt encryption on PVC and `"false"` to disable it. **Do not change for existing storageclasses** |
| `encryptionCipher` | no | set the cipher that is used for the volume encryption. **Supported Keywords**: `aes-xts-plain64` (default), `serpent-xts-plain64`, `twofish-xts-plain64`, `aegis128-random` (requires `integrityMode`: `aead` and `encryptionKeySize`: `"128"`) |
Copy link
Member

Choose a reason for hiding this comment

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

This commit has a little too long lines in the commit message, commitlint fails because of that.

Copy link
Collaborator

@Madhu-1 Madhu-1 left a comment

Choose a reason for hiding this comment

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

overall Looks good to me, @Greenpepper15 Thanks for the great work 🎉 Lets add the missing E2E testing for it.

}
}

func comparePtr[T comparable](t *testing.T, fieldName string, expected, actual *T) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

can we use https://pkg.go.dev/github.com/stretchr/testify/assert package for it? i think with this we can reduce lot of code in test file

Copy link
Author

Choose a reason for hiding this comment

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

I rewrote this test suite. You can check it out.

@Greenpepper15
Copy link
Author

Hey I got a question concerning the e2e tests because I ran into a cyclic dependency.

For the e2e test I want to expose a function in /internal/util/cryptsetup/cryptsetup.go that returns all the allowed Ciphers to the e2e tests.

Then I can do something like

err = createRBDStorageClass(
       ...
	map[string]string{"encrypted": "true",
		"encryptionType":   crypto.EncryptionTypeBlock.String(),
		"encryptionCipher":  cryptsetup.GetAllowedCiphers()[0],   <-- Return an allowed cipher that I definitely know is valid because it comes from the source
	},
	deletePolicy)

But the e2e tests get the cryptsetup functionality through the file /e2e/vendor/github.com/ceph/ceph-csi/internal/until/crypsetup/cryptsetup.go does not have the new GetAllowedCiphers() defined because it references an old version of crypetup.go.

Should I go something like this for now

err = createRBDStorageClass(
       ...
	map[string]string{"encrypted": "true",
		"encryptionType":   crypto.EncryptionTypeBlock.String(),
		"encryptionCipher":  "aes-xts-plain64",   <-- Insert a static string that I know will work now but may change in a later version
	},
	deletePolicy)

And then later open another PR to replace the static assignments with a GetAllowedCiphers() call?

@Madhu-1
Copy link
Collaborator

Madhu-1 commented Nov 6, 2025

@Greenpepper15 have you tried running go mod tidy in the e2e folder and see if that works?

@Greenpepper15
Copy link
Author

Yes I just tired and it works. Thanks for the advice.
But go mod tidy changes a lot of files in the e2e/vendor directory not just the cryptsetup.go file. Is that acceptable?

@Madhu-1
Copy link
Collaborator

Madhu-1 commented Nov 6, 2025

Yes I just tired and it works. Thanks for the advice. But go mod tidy changes a lot of files in the e2e/vendor directory not just the cryptsetup.go file. Is that acceptable?

Yes that should be fine

@mergify
Copy link
Contributor

mergify bot commented Nov 7, 2025

This pull request now has conflicts with the target branch. Could you please resolve conflicts and force push the corrected changes? 🙏

e2e/utils.go Outdated
}

// PraseLuksStatus parses parts of the output of a "cryptsetup luksStatus <device>" command
func parseLuksStatus(dump string) (luksStatus *cryptsetup.LuksStatus, err error) {
Copy link
Author

Choose a reason for hiding this comment

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

In the e2e tests I get the encryption state of the PV via cryptsetup status to compare it against the desired encryption state.

Should I put this function into the cryptsetup.go file instead? I initially put it here because only the e2e tests use it but since the cryptsetup.go file encapsulates all the cryptsetup logic I think it would be better suited for it.
What do you think?

Copy link
Collaborator

Choose a reason for hiding this comment

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

sounds good 👍🏻

Copy link
Author

Choose a reason for hiding this comment

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

This parsing code now is in the cryptsetup. go file. I also added a few tests for it.

@Greenpepper15
Copy link
Author

Can somebody trigger the e2e tests? I tested them on my Cluster but I want to see if they work in the CI environment too.

@nixpanic
Copy link
Member

/test ci/centos/mini-e2e-helm/k8s-1.34/rbd

@nixpanic
Copy link
Member

@Greenpepper15 , the tests pass, but I do not see the test-cases you added being executed 🤔

$ curl 'https://jenkins-ceph-csi.apps.ocp.cloud.ci.centos.org/blue/rest/organizations/jenkins/pipelines/mini-e2e-helm_k8s-1.34-rbd/runs/1/nodes/100/log/?start=0&download=true' > pr5711-e2e.log
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 4236k    0 4236k    0     0  2818k      0 --:--:--  0:00:01 --:--:-- 2818k
$ grep STEP pr5711-e2e.log
...

@Greenpepper15
Copy link
Author

Greenpepper15 commented Nov 10, 2025

Yes when I look at the test output I also cannot find the output for my tests. At least I saw that the previous encryption tests succeeded.

Does anyone know the reason? On my debug cluster I tested with this test configuration and it worked for me.

# inside the /e2e directory 
go test . --test-cephfs=false --test-rbd=true --upgrade-testing=false --deploy-rbd=true --deploy-cephfs=false  --timeout=20m --deploy-timeout=20

Or it is because of the merge conflict that is yet to be resolved?

@nixpanic
Copy link
Member

Does anyone know the reason? On my debug cluster I tested with this test configuration and it worked for me.

Maybe the CI job fails to checkout your change because there is a merge conflict?

From https://jenkins-ceph-csi.apps.ocp.cloud.ci.centos.org/blue/organizations/jenkins/mini-e2e-helm_k8s-1.34-rbd/detail/mini-e2e-helm_k8s-1.34-rbd/1/pipeline/26 :

+ cd /home/jenkins/build/ceph-csi
+ git fetch origin pull/5711/merge
From https://github.com/ceph/ceph-csi
 * branch                refs/pull/5711/merge -> FETCH_HEAD
+ git checkout -b pull/5711/merge FETCH_HEAD
Switched to a new branch 'pull/5711/merge'

When I execute the same steps, I also do not have your changes to the ./e2e/ files when I go through git log --stat.

@Greenpepper15
Copy link
Author

<<<<<<< feature/5686/rbd-configurable-cipher
	golang.org/x/net v0.45.0 // indirect
=======
	golang.org/x/net v0.46.0 // indirect
>>>>>>> devel

This is only conflict in the merge conflict. I guess if I choose my version it will run without any issues. But we don't want a downgrade version on devel.

How about I choose my changes for now and later somebody else calls go mod tidy and updates the corresponding files to resolve this issue?

@nixpanic
Copy link
Member

I think the issue is that there is a merge conflict. It probably does not matter how you address it. Most practical would be to rebase on top of the latest devel branch, and use versions from there. That will be needed later on in any case too.

Once the conflict is resolved, try to leave the /test ... message in a comment (only that single line in the comment), maybe you are allowed to start the CI job yourself too.

@Greenpepper15
Copy link
Author

/test ci/centos/mini-e2e-helm/k8s-1.34/rbd

@Greenpepper15
Copy link
Author

Greenpepper15 commented Nov 10, 2025

The test failed with this error

E1110 20:00:02.940630 35903 crypto.go:238] ID: 244 Req-ID: 0001-0024-3674dcb1-48bf-45a6-8638-8fbb36b033b4-0000000000000004-c95798e0-5f4e-4956-9b64-da1138bba3e3 failed to encrypt device "/dev/rbd0" with LUKS (an error (exit status 1) occurred while running cryptsetup args: [-q luksFormat --type luks2 --hash sha256 --cipher aegis128-random --integrity aead --key-size 128 --luks2-metadata-size 4096k --luks2-keyslots-size 8192k --pbkdf-memory 32768 /dev/rbd0 -d -]): Cipher aegis128-random (key size 128 bits) is not available.

This happens when the aegis128 kernel module is not loaded. I will temporarily remove this test for tonight and run the tests again to see the other tests do not fail.

Could someone do a sudo modprobe aegis128 on the worker node(s)?

@Greenpepper15
Copy link
Author

/test ci/centos/mini-e2e-helm/k8s-1.34/rbd

@mergify mergify bot added the queued label Dec 11, 2025
mergify bot added a commit that referenced this pull request Dec 11, 2025
@Greenpepper15
Copy link
Author

VolumeStatus:nil,},} to be in Bound state
I1211 11:33:43.046505 76117 pvc.go:63] waiting for PVC block-pvc-clone (0 seconds elapsed)
I1211 11:33:43.062861 76117 pvc.go:85] PVC Event: Provisioning - External provisioner is provisioning volume for claim "rbd-5848/block-pvc-clone"
I1211 11:33:43.062972 76117 pvc.go:85] PVC block-pvc-clone Event: ExternalProvisioning - Waiting for a volume to be created either by the external provisioner 'rbd.csi.ceph.com' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
I1211 11:33:43.062985 76117 pvc.go:85] PVC block-pvc-clone Event: ProvisioningSucceeded - Successfully provisioned volume pvc-ba74e087-8c1b-41e7-b019-87da0f7c24bc
I1211 11:33:45.047502 76117 pvc.go:63] waiting for PVC block-pvc-clone (2 seconds elapsed)
I1211 11:33:45.066074 76117 pvc.go:85] PVC block-pvc-clone Event: Provisioning - External provisioner is provisioning volume for claim "rbd-5848/block-pvc-clone"
I1211 11:33:45.066110 76117 pvc.go:85] PVC block-pvc-clone Event: ExternalProvisioning - Waiting for a volume to be created either by the external provisioner 'rbd.csi.ceph.com' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
I1211 11:33:45.066120 76117 pvc.go:85] PVC block-pvc-clone Event: ProvisioningSucceeded - Successfully provisioned volume pvc-ba74e087-8c1b-41e7-b019-87da0f7c24bc
I1211 11:33:45.066127 76117 pvc.go:85] PVC block-pvc-clone Event: ExternalProvisioning - Waiting for a volume to be created either by the external provisioner 'rbd.csi.ceph.com' or manually by the system administrator. If volume creation is delayed, please verify that the provisioner is running and correctly registered.
I1211 11:33:45.066135 76117 pvc.go:85] PVC block-pvc-clone Event: Provisioning - External provisioner is provisioning volume for claim "rbd-5848/block-pvc-clone"
I1211 11:33:47.048192 76117 pvc.go:63] waiting for PVC block-pvc-clone (4 seconds elapsed)
I1211 11:33:47.052092 76117 pv.go:468] Waiting for PV pvc-61a82984-4d74-4846-9ef0-06a19c48c7d1 to bind to PVC block-pvc-clone
I1211 11:33:47.052133 76117 pv.go:790] Waiting up to timeout=10m0s for PersistentVolumeClaims [block-pvc-clone] to have phase Bound
I1211 11:33:47.053532 76117 pv.go:801] PersistentVolumeClaim block-pvc-clone found and phase=Bound (1.380058ms)
I1211 11:33:47.053558 76117 pv.go:763] Waiting up to 10m0s for PersistentVolume pvc-61a82984-4d74-4846-9ef0-06a19c48c7d1 to have phase Bound
I1211 11:33:47.055061 76117 pv.go:771] PersistentVolume pvc-61a82984-4d74-4846-9ef0-06a19c48c7d1 found and phase=Bound (1.488699ms)
I1211 11:33:47.062877 76117 warnings.go:110] "Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "centos" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "centos" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "centos" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "centos" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")"
I1211 11:33:47.062941 76117 pod.go:377] Waiting up to 10m0s for pod-with-block-volume-clone to be in Running state
I1211 11:33:53.068335 76117 pod.go:440] Waiting for pod pod-with-raw-block-volume to be deleted
Sending interrupt signal to process
script returned exit code 255

okay this time it also seems be a time sensitive failure. Only this test uses cloning "validate encrypted (with selected cipher and integrity mode) PVC Clone chained with depth 2". Was it the cause of the failure?

@Madhu-1
Copy link
Collaborator

Madhu-1 commented Dec 15, 2025

@Greenpepper15 this might be related to the new update in the sidecar which considers the invalid_argument and try to requeue it after 5 minutes, @iPraveenParihar PTAL, we might need to add --retry-interval-max=30s as a new PR

@Madhu-1
Copy link
Collaborator

Madhu-1 commented Dec 15, 2025

Discard my above comments, i thought its related to the PVC but it looks like app, @Greenpepper15 we have not seen the issue on any other CI runs, it might be problem with this PR itself.

@Madhu-1
Copy link
Collaborator

Madhu-1 commented Dec 15, 2025

We need to increase the test time it looks like 2:30 min is not enough :(

@Madhu-1
Copy link
Collaborator

Madhu-1 commented Dec 15, 2025

Add a new commit to increase the timeout

E2E_TIMEOUT=150m

CI tests failed due to timeout. To debug the issue we increase the e2e timeout.

Signed-off-by: David Mohren <david.mohren@clyso.com>
@mergify mergify bot dismissed stale reviews from nixpanic and Madhu-1 December 15, 2025 09:40

Pull request has been modified.

@mergify mergify bot removed the dequeued label Dec 15, 2025
@Greenpepper15
Copy link
Author

Done. Let's try it out.

But why do you think this issue arises? When I manually trigger the RBD e2e tests this does not seem to happen.

Since AEAD encryption with dmIntegrity and DmCrypt consumes more resources I guess increasing the timeout might help.

Otherwise maybe the resource freeing is buggy on larger setups. I will see after we run the tests again.

@Greenpepper15
Copy link
Author

/test ci/centos/mini-e2e-helm/k8s-1.34/rbd

@Greenpepper15
Copy link
Author

So what is the current state of things? Should we wait to proceed till the holidays pass?

@Madhu-1 Madhu-1 requested a review from nixpanic January 5, 2026 08:08
Copy link
Member

@nixpanic nixpanic left a comment

Choose a reason for hiding this comment

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

☃️

@nixpanic
Copy link
Member

nixpanic commented Jan 7, 2026

@Mergifyio queue

@mergify
Copy link
Contributor

mergify bot commented Jan 7, 2026

queue

✅ The pull request has been merged automatically

Details

The pull request has been merged automatically at 004532c

@mergify
Copy link
Contributor

mergify bot commented Jan 7, 2026

Merge Queue Status

✅ The pull request has been merged at 3d1a5af

This pull request spent 3 hours 43 seconds in the queue, including 3 hours 27 seconds running CI.
The checks were run on draft #5905.

Required conditions to merge
  • #approved-reviews-by >= 2 [🛡 GitHub branch protection]
  • #changes-requested-reviews-by = 0 [🛡 GitHub branch protection]
  • any of:
    • all of:
      • base=devel
      • status-success=codespell
      • status-success=go-test
      • status-success=golangci-lint
      • status-success=lint-extras
      • status-success=mod-check
      • status-success=multi-arch-build
      • status-success=uncommitted-code-check
      • any of:
        • all of:
          • status-success=ci/centos/k8s-e2e-external-storage/1.32
          • status-success=ci/centos/k8s-e2e-external-storage/1.33
          • status-success=ci/centos/k8s-e2e-external-storage/1.34
          • status-success=ci/centos/mini-e2e-helm/k8s-1.32
          • status-success=ci/centos/mini-e2e-helm/k8s-1.33
          • status-success=ci/centos/mini-e2e-helm/k8s-1.34
          • status-success=ci/centos/mini-e2e/k8s-1.32
          • status-success=ci/centos/mini-e2e/k8s-1.33
          • status-success=ci/centos/mini-e2e/k8s-1.34
          • status-success=ci/centos/upgrade-tests-cephfs
          • status-success=ci/centos/upgrade-tests-rbd
        • label=ci/skip/e2e
    • all of:
      • base~=^(release-.+)$
      • any of:
        • label=ci/skip/e2e
        • all of:
          • status-success=ci/centos/k8s-e2e-external-storage/1.31
          • status-success=ci/centos/mini-e2e-helm/k8s-1.31
          • status-success=ci/centos/mini-e2e/k8s-1.31
          • status-success=ci/centos/k8s-e2e-external-storage/1.32
          • status-success=ci/centos/k8s-e2e-external-storage/1.33
          • status-success=ci/centos/mini-e2e-helm/k8s-1.32
          • status-success=ci/centos/mini-e2e-helm/k8s-1.33
          • status-success=ci/centos/mini-e2e/k8s-1.32
          • status-success=ci/centos/mini-e2e/k8s-1.33
          • status-success=ci/centos/upgrade-tests-cephfs
          • status-success=ci/centos/upgrade-tests-rbd
      • status-success=codespell
      • status-success=go-test
      • status-success=golangci-lint
      • status-success=lint-extras
      • status-success=mod-check
      • status-success=multi-arch-build
      • status-success=uncommitted-code-check
    • all of:
      • base=release-v3.14
      • any of:
        • label=ci/skip/e2e
        • all of:
          • status-success=ci/centos/k8s-e2e-external-storage/1.30
          • status-success=ci/centos/k8s-e2e-external-storage/1.31
          • status-success=ci/centos/mini-e2e-helm/k8s-1.30
          • status-success=ci/centos/mini-e2e-helm/k8s-1.31
          • status-success=ci/centos/mini-e2e/k8s-1.30
          • status-success=ci/centos/mini-e2e/k8s-1.31
          • status-success=ci/centos/k8s-e2e-external-storage/1.32
          • status-success=ci/centos/mini-e2e-helm/k8s-1.32
          • status-success=ci/centos/mini-e2e/k8s-1.32
          • status-success=ci/centos/upgrade-tests-cephfs
          • status-success=ci/centos/upgrade-tests-rbd
      • status-success=codespell
      • status-success=go-test
      • status-success=golangci-lint
      • status-success=lint-extras
      • status-success=mod-check
      • status-success=multi-arch-build
      • status-success=uncommitted-code-check
    • all of:
      • base=ci/centos
      • status-success=ci/centos/jjb-validate
      • status-success=ci/centos/job-validation

@mergify mergify bot added the queued label Jan 7, 2026
mergify bot added a commit that referenced this pull request Jan 7, 2026
@mergify mergify bot merged commit 004532c into ceph:devel Jan 7, 2026
18 checks passed
@mergify mergify bot removed the queued label Jan 7, 2026
@Greenpepper15
Copy link
Author

Yay thanks for the help people!
I look forward to contributing to the project again.

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

Labels

component/rbd Issues related to RBD

Projects

None yet

Development

Successfully merging this pull request may close these issues.

rbd: Enable Configurable Ciphers and Key Sizes for RBD Encryption

4 participants