-
Notifications
You must be signed in to change notification settings - Fork 21
feat(raid0): io-engine proto add pool config #134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
Signed-off-by: Steffen Siering <steffen@xata.io>
|
@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 |
|
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. |
There was a problem hiding this 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"). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
these could be enums?
There was a problem hiding this comment.
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) |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
|
Thank you for the feedback.
Thank you. Yes, I will add some more details about components and RPC being introduced/changed to the OEP.
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
Makes sense. At which point do we decide it is implementable?
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: |
I see you have made changes to CR suggestions in v1beta3 in feature branch. You can edit the OEP accordingly, resolve all comments. |
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
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 :)
Nice, we also do some spikes sometimes before starting, so we can get some more understanding ahead of time. |
Related to oep 4011. Introduce Raid configuration and status to the io-engine gRPC.