Skip to content

Conversation

@urso
Copy link

@urso urso commented Sep 15, 2025

Related to oep 4011. Introduce Raid configuration and status to the io-engine gRPC.

Signed-off-by: Steffen Siering <steffen@xata.io>
@urso urso requested a review from a team as a code owner September 15, 2025 15:53
@abhilashshetty04
Copy link
Member

@urso, As a general process can you complete the OEP followed by a design document (comprising HLD, LLD). This helps us in the review process and future reference.

HLD: Includes a high level design plan covering changes in control plane and data plane for the proposed feature. Test plan for the feature.

LLD: Details on low level changes following HLD

On top of my head This feature will require compatibility analyses with Partial rebuild, Performance stats, Pool expansion etc.

cc @avishnu , @tiagolobocastro , @dsharma-dc , @niladrih , @Abhinandan-Purkait

@niladrih
Copy link
Member

niladrih commented Sep 16, 2025

Thanks for the PR @urso!

I agree with @abhilashshetty04 on the need for a design outline. A high level design should be okay for the time being. A low level design would be a good-to-have.

I also understand that the spread of the mayastor plugin across 4 or more repos may make it inconvenient to formulate the design.

My addition to @abhilashshetty04's suggestion would be to check in implementation code into a feature branch, until we decide on the design.

Copy link
Member

@tiagolobocastro tiagolobocastro left a comment

Choose a reason for hiding this comment

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

OEP should be merged as implementable first.

Would be good to also add some of the design details to the implementation section of the OEP, covering any gRPC or rest api changes, example:
https://github.com/openebs/openebs/blob/develop/designs/replicated-pv/mayastor/pool-cordon.md

This OEP is also a relatively recent process for us with most things implemented before it was in-place, any feedback and grievances are welcome!


// Pool RAID information.
message RaidInfo {
// RAID level (e.g., "raid0", "raid1", "raid5").
Copy link
Member

Choose a reason for hiding this comment

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

these could be enums?

Copy link
Author

Choose a reason for hiding this comment

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

yes, it could be an enum. Just used a 'string' here so we don't have to modify the RPC when we want to introduce other raid types.


// RAID0 configuration parameters
message Raid0Config {
// Strip size in KB (default 64)
Copy link
Member

Choose a reason for hiding this comment

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

Any advantage to using KB instead of just bytes?

Copy link
Author

Choose a reason for hiding this comment

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

In SPDK you configure 'strip_size_kb'. I used to use quantity type and bytes initially, but dealing with conversions it became a little confusing at some point. So to make it easier I opted to pass the value with the unit expected in io-engine/SPDK, while using Quantity-type in the CRD and ensure I have the conversion in one single place only.

@urso
Copy link
Author

urso commented Sep 16, 2025

Thank you for the feedback.

Would be good to also add some of the design details to the implementation section of the OEP, covering any gRPC or rest api changes, example:

Thank you. Yes, I will add some more details about components and RPC being introduced/changed to the OEP.

This OEP is also a relatively recent process for us with most things implemented before it was in-place, any feedback and grievances are welcome!

I'm a little confused where to put the HLD/LLD documentation as I'm not really aware of any examples. Am I supposed to add some more details for the OEP document?

Thank you

OEP should be merged as implementable first.

Makes sense. At which point do we decide it is implementable?

A high level design should be okay for the time being. A low level design would be a good-to-have.

I also understand that the spread of the mayastor plugin across 4 or more repos may make it inconvenient to formulate the design.

My addition to @abhilashshetty04's suggestion would be to check in implementation code into a feature branch, until we decide on the design.

Btw. I do have an implementation ready in my local forks (including io-engine, controll-plane). As the changes touches many components having an MVP implementation upfront did help me quite a bit build an understanding of the code and required changes. If you are curious you can find the implementation here:

@abhilashshetty04
Copy link
Member

Makes sense. At which point do we decide it is implementable?

I see you have made changes to CR suggestions in v1beta3 in feature branch. You can edit the OEP accordingly, resolve all comments.

@tiagolobocastro
Copy link
Member

I'm a little confused where to put the HLD/LLD documentation as I'm not really aware of any examples. Am I supposed to add some more details for the OEP document?

HLD is roughly what you have already I'd say, a high level description of the feature request and how it'd be implemented.

LLD is just drilling down a bit more into specifics, containing for example any new gRPC handlers or new types being added, rest api changes, any new services being added, any reconcilers, change of bevahiours, helm chart changes, etc

Makes sense. At which point do we decide it is implementable?

Whenever you think it's ready you just raise a PR with status change in the md file to implementable and give us a nudge :)

Btw. I do have an implementation ready in my local forks (including io-engine, controll-plane). As the changes touches many components having an MVP implementation upfront did help me quite a bit build an understanding of the code and required changes. If you are curious you can find the implementation here:

* io-engine: https://github.com/urso/mayastor/tree/feature-raid0

* control plane: https://github.com/urso/mayastor-control-plane/tree/feature-raid0

Nice, we also do some spikes sometimes before starting, so we can get some more understanding ahead of time.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants